Kaydet (Commit) 501e0246 authored tarafından Armin Le Grand's avatar Armin Le Grand Kaydeden (comit) Caolán McNamara

Resolves: #i121603# corrected D&D on existing shapes (CTRL+SHIFT pressed)

(cherry picked from commit 5f81e113)

Conflicts:
	sd/source/ui/view/sdview3.cxx
	sd/source/ui/view/sdview4.cxx
	svx/source/svdraw/svdoole2.cxx

Change-Id: I91634de52a23ebe897f2d38a6cca763aed19dfc0
üst 13ef1642
...@@ -53,7 +53,6 @@ ...@@ -53,7 +53,6 @@
#include <vcl/metaact.hxx> #include <vcl/metaact.hxx>
#include <svx/svxids.hrc> #include <svx/svxids.hrc>
#include <toolkit/helper/vclunohelper.hxx> #include <toolkit/helper/vclunohelper.hxx>
#include "DrawDocShell.hxx" #include "DrawDocShell.hxx"
#include "fupoor.hxx" #include "fupoor.hxx"
#include "Window.hxx" #include "Window.hxx"
...@@ -68,13 +67,13 @@ ...@@ -68,13 +67,13 @@
#include "strmname.h" #include "strmname.h"
#include "unomodel.hxx" #include "unomodel.hxx"
#include "ViewClipboard.hxx" #include "ViewClipboard.hxx"
#include <sfx2/ipclient.hxx> #include <sfx2/ipclient.hxx>
#include <comphelper/storagehelper.hxx> #include <comphelper/storagehelper.hxx>
#include <comphelper/processfactory.hxx> #include <comphelper/processfactory.hxx>
#include <tools/stream.hxx> #include <tools/stream.hxx>
#include <vcl/cvtgrf.hxx> #include <vcl/cvtgrf.hxx>
#include <svx/sdrhittesthelper.hxx> #include <svx/sdrhittesthelper.hxx>
#include <svx/xbtmpit.hxx>
// -------------- // --------------
// - Namespaces - // - Namespaces -
...@@ -731,6 +730,7 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, ...@@ -731,6 +730,7 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper,
BegUndo( String( SdResId( STR_UNDO_DRAGDROP ) ) ); BegUndo( String( SdResId( STR_UNDO_DRAGDROP ) ) );
AddUndo( mrDoc.GetSdrUndoFactory().CreateUndoAttrObject( *pPickObj ) ); AddUndo( mrDoc.GetSdrUndoFactory().CreateUndoAttrObject( *pPickObj ) );
} }
aSet.Put( pObj->GetMergedItemSet() ); aSet.Put( pObj->GetMergedItemSet() );
/* Do not take over corner radius. There are /* Do not take over corner radius. There are
...@@ -739,6 +739,16 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper, ...@@ -739,6 +739,16 @@ sal_Bool View::InsertData( const TransferableDataHelper& rDataHelper,
object. */ object. */
aSet.ClearItem( SDRATTR_ECKENRADIUS ); aSet.ClearItem( SDRATTR_ECKENRADIUS );
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(&mrDoc.GetPool(), pSdrGrafObj->GetGraphic()));
}
pPickObj->SetMergedItemSetAndBroadcast( aSet ); pPickObj->SetMergedItemSetAndBroadcast( aSet );
if( pPickObj->ISA( E3dObject ) && pObj->ISA( E3dObject ) ) if( pPickObj->ISA( E3dObject ) && pObj->ISA( E3dObject ) )
......
...@@ -50,15 +50,14 @@ ...@@ -50,15 +50,14 @@
#include "sdpage.hxx" #include "sdpage.hxx"
#include "view/SlideSorterView.hxx" #include "view/SlideSorterView.hxx"
#include "undo/undoobjects.hxx" #include "undo/undoobjects.hxx"
#include <comphelper/processfactory.hxx> #include <comphelper/processfactory.hxx>
#include <com/sun/star/embed/ElementModes.hpp> #include <com/sun/star/embed/ElementModes.hpp>
#include <com/sun/star/embed/XEmbedPersist.hpp> #include <com/sun/star/embed/XEmbedPersist.hpp>
#include <com/sun/star/embed/Aspects.hpp> #include <com/sun/star/embed/Aspects.hpp>
#include <com/sun/star/embed/NoVisualAreaSizeException.hpp> #include <com/sun/star/embed/NoVisualAreaSizeException.hpp>
#include <svtools/soerr.hxx> #include <svtools/soerr.hxx>
#include <sfx2/ipclient.hxx> #include <sfx2/ipclient.hxx>
#include <svx/svdoashp.hxx>
#include "glob.hrc" #include "glob.hrc"
using namespace com::sun::star; using namespace com::sun::star;
...@@ -96,8 +95,9 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction, ...@@ -96,8 +95,9 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction,
if( mnAction == DND_ACTION_LINK && pPickObj && pPV ) if( mnAction == DND_ACTION_LINK && pPickObj && pPV )
{ {
const bool bIsGraphic = pPickObj->ISA( SdrGrafObj ); const bool bIsGraphic(0 != dynamic_cast< SdrGrafObj* >(pPickObj));
if( bIsGraphic || (pObj && pObj->IsEmptyPresObj() && !bOnMaster) )
if(bIsGraphic || (pPickObj && pPickObj->IsEmptyPresObj() && !bOnMaster)) // #i121603# Do not use pObj, it may be NULL
{ {
if( IsUndoEnabled() ) if( IsUndoEnabled() )
BegUndo(String(SdResId(STR_INSERTGRAPHIC))); BegUndo(String(SdResId(STR_INSERTGRAPHIC)));
...@@ -139,9 +139,9 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction, ...@@ -139,9 +139,9 @@ SdrGrafObj* View::InsertGraphic( const Graphic& rGraphic, sal_Int8& rAction,
if( IsUndoEnabled() ) if( IsUndoEnabled() )
EndUndo(); EndUndo();
} }
else if (pPickObj->IsClosedObj() && !pPickObj->ISA(SdrOle2Obj)) else if(pPickObj->IsClosedObj())
{ {
// we fill the object with the graphic // fill object with graphic
if( IsUndoEnabled() ) if( IsUndoEnabled() )
{ {
BegUndo(String(SdResId(STR_UNDO_DRAGDROP))); BegUndo(String(SdResId(STR_UNDO_DRAGDROP)));
......
...@@ -855,6 +855,7 @@ SdrObjCustomShape::SdrObjCustomShape() : ...@@ -855,6 +855,7 @@ SdrObjCustomShape::SdrObjCustomShape() :
fObjectRotation( 0.0 ), fObjectRotation( 0.0 ),
mpLastShadowGeometry(0L) mpLastShadowGeometry(0L)
{ {
bClosedObj = true; // custom shapes may be filled
bTextFrame = sal_True; bTextFrame = sal_True;
} }
......
...@@ -770,8 +770,7 @@ SdrOle2Obj::SdrOle2Obj( const svt::EmbeddedObjectRef& rNewObjRef, const XubStri ...@@ -770,8 +770,7 @@ SdrOle2Obj::SdrOle2Obj( const svt::EmbeddedObjectRef& rNewObjRef, const XubStri
SetResizeProtect(sal_True); SetResizeProtect(sal_True);
// For math objects, set closed state to transparent // For math objects, set closed state to transparent
if( ImplIsMathObj( xObjRef.GetObject() ) ) SetClosedObj(!ImplIsMathObj( xObjRef.GetObject() ));
SetClosedObj( false );
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -1508,8 +1507,7 @@ void SdrOle2Obj::SetObjRef( const com::sun::star::uno::Reference < com::sun::sta ...@@ -1508,8 +1507,7 @@ void SdrOle2Obj::SetObjRef( const com::sun::star::uno::Reference < com::sun::sta
SetResizeProtect(sal_True); SetResizeProtect(sal_True);
// For math objects, set closed state to transparent // For math objects, set closed state to transparent
if( ImplIsMathObj( rNewObjRef ) ) SetClosedObj(!ImplIsMathObj( rNewObjRef ));
SetClosedObj( false );
Connect(); Connect();
} }
...@@ -2015,8 +2013,7 @@ void SdrOle2Obj::GetObjRef_Impl() ...@@ -2015,8 +2013,7 @@ void SdrOle2Obj::GetObjRef_Impl()
} }
// For math objects, set closed state to transparent // For math objects, set closed state to transparent
if( ImplIsMathObj( xObjRef.GetObject() ) ) SetClosedObj(!ImplIsMathObj( xObjRef.GetObject() ));
SetClosedObj( false );
} }
if ( xObjRef.is() ) if ( xObjRef.is() )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment