Author: alg Date: Wed Jan 9 15:49:01 2013 New Revision: 1430910 URL: http://svn.apache.org/viewvc?rev=1430910&view=rev Log: #121603# corrected D&D on existing shapes (CTRL+SHIFT pressed)
Modified: openoffice/trunk/main/sd/source/ui/view/sdview3.cxx openoffice/trunk/main/sd/source/ui/view/sdview4.cxx openoffice/trunk/main/svx/source/svdraw/svdoashp.cxx openoffice/trunk/main/svx/source/svdraw/svdoole2.cxx Modified: openoffice/trunk/main/sd/source/ui/view/sdview3.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/sdview3.cxx?rev=1430910&r1=1430909&r2=1430910&view=diff ============================================================================== --- openoffice/trunk/main/sd/source/ui/view/sdview3.cxx (original) +++ openoffice/trunk/main/sd/source/ui/view/sdview3.cxx Wed Jan 9 15:49:01 2013 @@ -19,8 +19,6 @@ * *************************************************************/ - - // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sd.hxx" @@ -60,7 +58,6 @@ #include <vcl/metaact.hxx> #include <svx/svxids.hrc> #include <toolkit/helper/vclunohelper.hxx> - #include "DrawDocShell.hxx" #include "fupoor.hxx" #include "Window.hxx" @@ -75,13 +72,13 @@ #include "strmname.h" #include "unomodel.hxx" #include "ViewClipboard.hxx" - #include <sfx2/ipclient.hxx> #include <comphelper/storagehelper.hxx> #include <comphelper/processfactory.hxx> #include <tools/stream.hxx> #include <vcl/cvtgrf.hxx> #include <svx/sdrhittesthelper.hxx> +#include <svx/xbtmpit.hxx> // -------------- // - Namespaces - @@ -764,6 +761,7 @@ sal_Bool View::InsertData( const Transfe BegUndo( String( SdResId( STR_UNDO_DRAGDROP ) ) ); AddUndo( mpDoc->GetSdrUndoFactory().CreateUndoAttrObject( *pPickObj ) ); } + aSet.Put( pObj->GetMergedItemSet() ); // Eckenradius soll nicht uebernommen werden. @@ -772,7 +770,17 @@ sal_Bool View::InsertData( const Transfe // nicht auf das Objekt uebertragen werden. aSet.ClearItem( SDRATTR_ECKENRADIUS ); - pPickObj->SetMergedItemSetAndBroadcast( aSet ); + const SdrGrafObj* pSdrGrafObj = dynamic_cast< const SdrGrafObj* >(pObj); + + if(pSdrGrafObj) + { + // If we have a graphic as source object, use it's graphic + // content as fill style + aSet.Put(XFillStyleItem(XFILL_BITMAP)); + aSet.Put(XFillBitmapItem(&mpDoc->GetPool(), pSdrGrafObj->GetGraphic())); + } + + pPickObj->SetMergedItemSetAndBroadcast( aSet ); if( pPickObj->ISA( E3dObject ) && pObj->ISA( E3dObject ) ) { Modified: openoffice/trunk/main/sd/source/ui/view/sdview4.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/sdview4.cxx?rev=1430910&r1=1430909&r2=1430910&view=diff ============================================================================== --- openoffice/trunk/main/sd/source/ui/view/sdview4.cxx (original) +++ openoffice/trunk/main/sd/source/ui/view/sdview4.cxx Wed Jan 9 15:49:01 2013 @@ -19,8 +19,6 @@ * *************************************************************/ - - // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sd.hxx" @@ -57,15 +55,14 @@ #include "sdpage.hxx" #include "view/SlideSorterView.hxx" #include "undo/undoobjects.hxx" - #include <comphelper/processfactory.hxx> #include <com/sun/star/embed/ElementModes.hpp> #include <com/sun/star/embed/XEmbedPersist.hpp> #include <com/sun/star/embed/Aspects.hpp> #include <com/sun/star/embed/NoVisualAreaSizeException.hpp> #include <svtools/soerr.hxx> - #include <sfx2/ipclient.hxx> +#include <svx/svdoashp.hxx> #include "glob.hrc" using namespace com::sun::star; @@ -112,8 +109,9 @@ SdrGrafObj* View::InsertGraphic( const G if( mnAction == DND_ACTION_LINK && pPickObj && pPV ) { - const bool bIsGraphic = pPickObj->ISA( SdrGrafObj ); - if( bIsGraphic || (pObj->IsEmptyPresObj() && !bOnMaster) ) + const bool bIsGraphic(0 != dynamic_cast< SdrGrafObj* >(pPickObj)); + + if(bIsGraphic || (pPickObj->IsEmptyPresObj() && !bOnMaster)) // #121603# Do not use pObj, it may be NULL { if( IsUndoEnabled() ) BegUndo(String(SdResId(STR_INSERTGRAPHIC))); @@ -155,11 +153,9 @@ SdrGrafObj* View::InsertGraphic( const G if( IsUndoEnabled() ) EndUndo(); } - else if (pPickObj->IsClosedObj() && !pPickObj->ISA(SdrOle2Obj)) + else if(pPickObj->IsClosedObj()) { - /****************************************************************** - * Das Objekt wird mit der Graphik gefuellt - ******************************************************************/ + // fill object with graphic if( IsUndoEnabled() ) { BegUndo(String(SdResId(STR_UNDO_DRAGDROP))); Modified: openoffice/trunk/main/svx/source/svdraw/svdoashp.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/svdraw/svdoashp.cxx?rev=1430910&r1=1430909&r2=1430910&view=diff ============================================================================== --- openoffice/trunk/main/svx/source/svdraw/svdoashp.cxx (original) +++ openoffice/trunk/main/svx/source/svdraw/svdoashp.cxx Wed Jan 9 15:49:01 2013 @@ -645,6 +645,7 @@ SdrObjCustomShape::SdrObjCustomShape() : fObjectRotation( 0.0 ), mpLastShadowGeometry(0L) { + bClosedObj = true; // custom shapes may be filled bTextFrame = sal_True; } Modified: openoffice/trunk/main/svx/source/svdraw/svdoole2.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/svdraw/svdoole2.cxx?rev=1430910&r1=1430909&r2=1430910&view=diff ============================================================================== --- openoffice/trunk/main/svx/source/svdraw/svdoole2.cxx (original) +++ openoffice/trunk/main/svx/source/svdraw/svdoole2.cxx Wed Jan 9 15:49:01 2013 @@ -782,8 +782,7 @@ SdrOle2Obj::SdrOle2Obj( const svt::Embed SetResizeProtect(sal_True); // #108759# For math objects, set closed state to transparent - if( ImplIsMathObj( xObjRef.GetObject() ) ) - SetClosedObj( false ); + SetClosedObj(!ImplIsMathObj( xObjRef.GetObject() )); } // ----------------------------------------------------------------------------- @@ -805,8 +804,7 @@ SdrOle2Obj::SdrOle2Obj( const svt::Embed SetResizeProtect(sal_True); // #108759# For math objects, set closed state to transparent - if( ImplIsMathObj( xObjRef.GetObject() ) ) - SetClosedObj( false ); + SetClosedObj(!ImplIsMathObj( xObjRef.GetObject() )); } // ----------------------------------------------------------------------------- @@ -829,8 +827,7 @@ SdrOle2Obj::SdrOle2Obj( const svt::Embed SetResizeProtect(sal_True); // #108759# For math objects, set closed state to transparent - if( ImplIsMathObj( xObjRef.GetObject() ) ) - SetClosedObj( false ); + SetClosedObj(!ImplIsMathObj( xObjRef.GetObject() )); } // ----------------------------------------------------------------------------- @@ -1584,8 +1581,7 @@ void SdrOle2Obj::SetObjRef( const com::s SetResizeProtect(sal_True); // #108759# For math objects, set closed state to transparent - if( ImplIsMathObj( rNewObjRef ) ) - SetClosedObj( false ); + SetClosedObj(!ImplIsMathObj( rNewObjRef )); Connect(); } @@ -2117,8 +2113,7 @@ void SdrOle2Obj::GetObjRef_Impl() } // #108759# For math objects, set closed state to transparent - if( ImplIsMathObj( xObjRef.GetObject() ) ) - SetClosedObj( false ); + SetClosedObj(!ImplIsMathObj( xObjRef.GetObject() )); } if ( xObjRef.is() )