diff options
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/view/gridwin.cxx | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 108525c1cd4a..e397dfa21560 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -3565,6 +3565,13 @@ sal_Int8 ScGridWindow::AcceptDrop( const AcceptDropEvent& rEvt ) { sal_Int8 nMyAction = rEvt.mnAction; + // clear DND_ACTION_LINK when other actions are set. The usage below cannot handle + // multiple set values + if((nMyAction & DND_ACTION_LINK) && (nMyAction & (DND_ACTION_COPYMOVE))) + { + nMyAction &= ~DND_ACTION_LINK; + } + if ( !rData.pDrawTransfer || !IsMyModel(rData.pDrawTransfer->GetDragSourceView()) ) // drawing within the document if ( rEvt.mbDefault && nMyAction == DND_ACTION_MOVE ) @@ -3573,7 +3580,7 @@ sal_Int8 ScGridWindow::AcceptDrop( const AcceptDropEvent& rEvt ) ScDocument* pThisDoc = pViewData->GetDocument(); SdrObject* pHitObj = pThisDoc->GetObjectAtPoint( pViewData->GetTabNo(), PixelToLogic(rEvt.maPosPixel) ); - if ( pHitObj && nMyAction == DND_ACTION_LINK && !rData.pDrawTransfer ) + if ( pHitObj && nMyAction == DND_ACTION_LINK ) // && !rData.pDrawTransfer ) { if ( IsDropFormatSupported(SOT_FORMATSTR_ID_SVXB) || IsDropFormatSupported(SOT_FORMAT_GDIMETAFILE) @@ -4191,8 +4198,9 @@ sal_Int8 ScGridWindow::ExecuteDrop( const ExecuteDropEvent& rEvt ) } Point aLogicPos = PixelToLogic(aPos); + sal_Bool bIsLink = ( rEvt.mnAction == DND_ACTION_LINK ); - if (rData.pDrawTransfer) + if (!bIsLink && rData.pDrawTransfer) { sal_uInt16 nFlags = rData.pDrawTransfer->GetDragSourceFlags(); @@ -4228,8 +4236,6 @@ sal_Int8 ScGridWindow::ExecuteDrop( const ExecuteDropEvent& rEvt ) } } - sal_Bool bIsLink = ( rEvt.mnAction == DND_ACTION_LINK ); - ScDocument* pThisDoc = pViewData->GetDocument(); SdrObject* pHitObj = pThisDoc->GetObjectAtPoint( pViewData->GetTabNo(), PixelToLogic(aPos) ); if ( pHitObj && bIsLink ) |