diff options
author | Armin Le Grand <alg@apache.org> | 2013-01-29 12:32:36 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-06-16 20:01:56 +0100 |
commit | 5aee0c13cc62a81a38d4132db7972dc301c21b3d (patch) | |
tree | 00c7837aa82296623f38305ce0f47bc6e6f5586a /sd | |
parent | 9618c7627061b9eb82ad6107de78a12c764744cf (diff) |
Resolves: #i121532# enhanced visualisation of text edit&selection
D&D overhauled
(cherry picked from commit c6e63b6bbb6b4a63fe1302de57fc32cd28432378)
Conflicts:
drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx
drawinglayer/inc/drawinglayer/primitive2d/polypolygonprimitive2d.hxx
drawinglayer/inc/drawinglayer/processor2d/linegeometryextractor2d.hxx
drawinglayer/source/primitive2d/polypolygonprimitive2d.cxx
svx/Package_inc.mk
svx/inc/svx/sdr/overlay/overlayanimatedbitmapex.hxx
svx/inc/svx/sdr/overlay/overlayobject.hxx
svx/inc/svx/sdr/overlay/overlaypolypolygon.hxx
svx/inc/svx/sdr/overlay/overlayrectangle.hxx
svx/inc/svx/sdr/overlay/overlaytools.hxx
svx/inc/svx/sdr/primitive2d/svx_primitivetypes2d.hxx
svx/inc/svx/svdview.hxx
svx/source/engine3d/view3d.cxx
svx/source/sdr/overlay/overlayanimatedbitmapex.cxx
svx/source/sdr/overlay/overlayhatchrect.cxx
svx/source/sdr/overlay/overlaypolypolygon.cxx
svx/source/sdr/overlay/overlaytools.cxx
svx/source/svdraw/svdcrtv.cxx
svx/source/svdraw/svdedxv.cxx
svx/source/svdraw/svdhdl.cxx
svx/source/svdraw/svdobj.cxx
svx/source/svdraw/svdview.cxx
sw/source/ui/dochdl/swdtflvr.cxx
Unname unused arguments to prevent WaE issues.
(cherry picked from commit 0735a61e631b8d4bb3d4e889bee436fb9e7c5734)
Change-Id: I3b1cf4754063985dc1b4adac44b33e52e200607f
e4288936cadd1f6e06bdf79611536d7114236b56
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/ui/view/sdview2.cxx | 8 | ||||
-rw-r--r-- | sd/source/ui/view/sdview3.cxx | 97 |
2 files changed, 67 insertions, 38 deletions
diff --git a/sd/source/ui/view/sdview2.cxx b/sd/source/ui/view/sdview2.cxx index e030435357f7..fa14fe1d896b 100644 --- a/sd/source/ui/view/sdview2.cxx +++ b/sd/source/ui/view/sdview2.cxx @@ -512,6 +512,12 @@ sal_Int8 View::AcceptDrop( const AcceptDropEvent& rEvt, DropTargetHelper& rTarge { SdTransferable* pDragTransferable = SD_MOD()->pTransferDrag; + if(pDragTransferable && (nDropAction & DND_ACTION_LINK)) + { + // suppress own data when it's intention is to use it as fill information + pDragTransferable = 0; + } + if( pDragTransferable ) { const View* pSourceView = pDragTransferable->GetView(); @@ -581,7 +587,7 @@ sal_Int8 View::AcceptDrop( const AcceptDropEvent& rEvt, DropTargetHelper& rTarge } if( bHasPickObj && !bIsPresTarget && - ( !pPickObj->ISA( SdrGrafObj ) || bGraphic || bMtf || bBitmap || ( bXFillExchange && !pPickObj->ISA( SdrGrafObj ) && !pPickObj->ISA( SdrOle2Obj ) ) ) ) + ( bGraphic || bMtf || bBitmap || bXFillExchange ) ) { if( mpDropMarkerObj != pPickObj ) { diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx index ab2cfec23670..cdbe0aeb2a3d 100644 --- a/sd/source/ui/view/sdview3.cxx +++ b/sd/source/ui/view/sdview3.cxx @@ -265,7 +265,7 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, SdrObject* pPickObj = NULL; SdPage* pPage = NULL; ImageMap* pImageMap = NULL; - sal_Bool bReturn = sal_False; + bool bReturn = false; sal_Bool bLink = ( ( mnAction & DND_ACTION_LINK ) != 0 ); sal_Bool bCopy = ( ( ( mnAction & DND_ACTION_COPY ) != 0 ) || bLink ); sal_uLong nPasteOptions = SDRINSERT_SETDEFLAYER; @@ -291,6 +291,12 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, SdTransferable* pOwnData = NULL; SdTransferable* pImplementation = SdTransferable::getImplementation( aDataHelper.GetTransferable() ); + if(pImplementation && (rDnDAction & DND_ACTION_LINK)) + { + // suppress own data when it's intention is to use it as fill information + pImplementation = 0; + } + // try to get own transfer data if( pImplementation ) { @@ -343,11 +349,14 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, } } + // Changed the whole decision tree to be dependent of bReturn as a flag that + // the work was done; this allows to check multiple formats and not just fail + // when a CHECK_FORMAT_TRANS(*format*) detected format does not work. This is + // e.g. necessary for FORMAT_BITMAP if( pOwnData && !nFormat ) { const View* pSourceView = pOwnData->GetView(); - if( pOwnData->GetDocShell() && pOwnData->IsPageTransferable() && ISA( View ) ) { mpClipboard->HandlePageDrop (*pOwnData); @@ -389,7 +398,7 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, } } - bReturn = sal_True; + bReturn = true; } } else @@ -565,12 +574,12 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, if( pMarkList != mpDragSrcMarkList ) delete pMarkList; - bReturn = sal_True; + bReturn = true; } else { maDropErrorTimer.Start(); - bReturn = sal_False; + bReturn = false; } } } @@ -579,7 +588,7 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, pOwnData->SetInternalMove( sal_True ); MoveAllMarked( Size( maDropPos.X() - pOwnData->GetStartPos().X(), maDropPos.Y() - pOwnData->GetStartPos().Y() ), bCopy ); - bReturn = sal_True; + bReturn = true; } } } @@ -605,7 +614,7 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, else { maDropErrorTimer.Start(); - bReturn = sal_False; + bReturn = false; } } } @@ -641,7 +650,8 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, pPage->SetPresentationLayout( aLayout, sal_False, sal_False ); } } - else if( CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_DRAWING ) ) + + if(!bReturn && CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_DRAWING )) { SotStorageStreamRef xStm; @@ -794,7 +804,8 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, } } } - else if( CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE ) ) + + if(!bReturn && CHECK_FORMAT_TRANS(SOT_FORMATSTR_ID_SBA_FIELDDATAEXCHANGE)) { OUString aOUString; @@ -813,14 +824,15 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, aRect.SetPos( maDropPos ); pObj->SetLogicRect( aRect ); InsertObjectAtView( pObj, *GetSdrPageView(), SDRINSERT_SETDEFLAYER ); - bReturn = sal_True; + bReturn = true; } } } - else if( !bLink && - ( CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_EMBED_SOURCE ) || - CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_EMBEDDED_OBJ ) ) && - aDataHelper.HasFormat( SOT_FORMATSTR_ID_OBJECTDESCRIPTOR ) ) + + if(!bReturn && + !bLink && + (CHECK_FORMAT_TRANS(SOT_FORMATSTR_ID_EMBED_SOURCE) || CHECK_FORMAT_TRANS(SOT_FORMATSTR_ID_EMBEDDED_OBJ)) && + aDataHelper.HasFormat(SOT_FORMATSTR_ID_OBJECTDESCRIPTOR)) { //TODO/LATER: is it possible that this format is binary?! (from old versions of SO) uno::Reference < io::XInputStream > xStm; @@ -987,15 +999,16 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, } } - bReturn = sal_True; + bReturn = true; } } } } - else if( !bLink && - ( CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_EMBEDDED_OBJ_OLE ) || - CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_EMBED_SOURCE_OLE ) ) && - aDataHelper.HasFormat( SOT_FORMATSTR_ID_OBJECTDESCRIPTOR_OLE ) ) + + if(!bReturn && + !bLink && + (CHECK_FORMAT_TRANS(SOT_FORMATSTR_ID_EMBEDDED_OBJ_OLE) || CHECK_FORMAT_TRANS(SOT_FORMATSTR_ID_EMBED_SOURCE_OLE)) && + aDataHelper.HasFormat(SOT_FORMATSTR_ID_OBJECTDESCRIPTOR_OLE)) { // online insert ole if format is forced or no gdi metafile is available if( (nFormat != 0) || !aDataHelper.HasFormat( FORMAT_GDIMETAFILE ) ) @@ -1136,7 +1149,7 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, // let the object stay in loaded state after insertion pObj->Unload(); - bReturn = sal_True; + bReturn = true; } } } @@ -1148,7 +1161,8 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, bReturn = true; } } - else if( ( !bLink || pPickObj ) && CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_SVXB ) ) + + if(!bReturn && (!bLink || pPickObj) && CHECK_FORMAT_TRANS(SOT_FORMATSTR_ID_SVXB)) { SotStorageStreamRef xStm; @@ -1182,10 +1196,11 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, ImpCheckInsertPos(aInsertPos, aImageMapSize, GetWorkArea()); InsertGraphic( aGraphic, mnAction, aInsertPos, NULL, pImageMap ); - bReturn = sal_True; + bReturn = true; } } - else if( ( !bLink || pPickObj ) && CHECK_FORMAT_TRANS( FORMAT_GDIMETAFILE ) ) + + if(!bReturn && (!bLink || pPickObj) && CHECK_FORMAT_TRANS(FORMAT_GDIMETAFILE)) { Point aInsertPos( rPos ); @@ -1208,7 +1223,8 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, bReturn = InsertMetaFile( aDataHelper, aInsertPos, pImageMap, nFormat == 0 ? true : false ) ? sal_True : sal_False; } - else if( ( !bLink || pPickObj ) && CHECK_FORMAT_TRANS( FORMAT_BITMAP ) ) + + if(!bReturn && (!bLink || pPickObj) && CHECK_FORMAT_TRANS(FORMAT_BITMAP)) { BitmapEx aBmpEx; @@ -1259,10 +1275,11 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, ImpCheckInsertPos(aInsertPos, aImageMapSize, GetWorkArea()); InsertGraphic( aBmpEx, mnAction, aInsertPos, NULL, pImageMap ); - bReturn = sal_True; + bReturn = true; } } - else if( pPickObj && CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_XFA ) ) + + if(!bReturn && pPickObj && CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_XFA ) ) { SotStorageStreamRef xStm; @@ -1325,7 +1342,8 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, } } } - else if( !bLink && CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_HTML ) ) + + if(!bReturn && !bLink && CHECK_FORMAT_TRANS(SOT_FORMATSTR_ID_HTML)) { SotStorageStreamRef xStm; @@ -1336,7 +1354,8 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, bReturn = SdrView::Paste( *xStm, String(), EE_FORMAT_HTML, maDropPos, pPage, nPasteOptions ); } } - else if( !bLink && CHECK_FORMAT_TRANS( SOT_FORMATSTR_ID_EDITENGINE ) ) + + if(!bReturn && !bLink && CHECK_FORMAT_TRANS(SOT_FORMATSTR_ID_EDITENGINE)) { SotStorageStreamRef xStm; @@ -1355,7 +1374,7 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, { // mba: clipboard always must contain absolute URLs (could be from alien source) pOLV->Read( *xStm, String(), EE_FORMAT_BIN, sal_False, mpDocSh->GetHeaderAttributes() ); - bReturn = sal_True; + bReturn = true; } } @@ -1364,7 +1383,8 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, bReturn = SdrView::Paste( *xStm, String(), EE_FORMAT_BIN, maDropPos, pPage, nPasteOptions ); } } - else if( !bLink && CHECK_FORMAT_TRANS( FORMAT_RTF ) ) + + if(!bReturn && !bLink && CHECK_FORMAT_TRANS(FORMAT_RTF)) { SotStorageStreamRef xStm; @@ -1389,7 +1409,7 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, { // mba: clipboard always must contain absolute URLs (could be from alien source) pOLV->Read( *xStm, String(), EE_FORMAT_RTF, sal_False, mpDocSh->GetHeaderAttributes() ); - bReturn = sal_True; + bReturn = true; } } @@ -1399,7 +1419,8 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, } } } - else if( CHECK_FORMAT_TRANS( FORMAT_FILE_LIST ) ) + + if(!bReturn && CHECK_FORMAT_TRANS(FORMAT_FILE_LIST)) { FileList aDropFileList; @@ -1413,9 +1434,10 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, maDropInsertFileTimer.Start(); } - bReturn = sal_True; + bReturn = true; } - else if( CHECK_FORMAT_TRANS( FORMAT_FILE ) ) + + if(!bReturn && CHECK_FORMAT_TRANS(FORMAT_FILE)) { String aDropFile; @@ -1426,9 +1448,10 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, maDropInsertFileTimer.Start(); } - bReturn = sal_True; + bReturn = true; } - else if( !bLink && CHECK_FORMAT_TRANS( FORMAT_STRING ) ) + + if(!bReturn && !bLink && CHECK_FORMAT_TRANS(FORMAT_STRING)) { if( ( FORMAT_STRING == nFormat ) || ( !aDataHelper.HasFormat( SOT_FORMATSTR_ID_SOLK ) && @@ -1444,7 +1467,7 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, if( pOLV ) { pOLV->InsertText( aOUString ); - bReturn = sal_True; + bReturn = true; } if( !bReturn ) |