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() )


Reply via email to