You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2014/02/17 16:48:54 UTC

svn commit: r1569029 - in /openoffice/trunk/main: sd/source/ui/func/fuinsert.cxx svx/source/svdraw/svdedtv.cxx

Author: alg
Date: Mon Feb 17 15:48:54 2014
New Revision: 1569029

URL: http://svn.apache.org/r1569029
Log:
i123468 Added SdrEndTextEdit before replacing EmptyPresObj, also secured ReplaceObjectAtView to check for active TextEdit, assert this and make an emergency correction

Modified:
    openoffice/trunk/main/sd/source/ui/func/fuinsert.cxx
    openoffice/trunk/main/svx/source/svdraw/svdedtv.cxx

Modified: openoffice/trunk/main/sd/source/ui/func/fuinsert.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/func/fuinsert.cxx?rev=1569029&r1=1569028&r2=1569029&view=diff
==============================================================================
--- openoffice/trunk/main/sd/source/ui/func/fuinsert.cxx (original)
+++ openoffice/trunk/main/sd/source/ui/func/fuinsert.cxx Mon Feb 17 15:48:54 2014
@@ -378,7 +378,15 @@ void FuInsertOLE::DoExecute( SfxRequest&
 					pPage->InsertPresObj( pOleObj, ePresObjKind );
 					pOleObj->SetUserCall(pPickObj->GetUserCall());
 				}
-			}
+
+                // #123468# we need to end text edit before replacing the object. There cannot yet
+                // being text typed (else it would not be an EmptyPresObj anymore), but it may be
+                // in text edit mode
+                if(mpView->IsTextEdit())
+                {
+                    mpView->SdrEndTextEdit();
+                }
+            }
 
 			bool bRet = true;
 			if( pPickObj )

Modified: openoffice/trunk/main/svx/source/svdraw/svdedtv.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/svdraw/svdedtv.cxx?rev=1569029&r1=1569028&r2=1569029&view=diff
==============================================================================
--- openoffice/trunk/main/svx/source/svdraw/svdedtv.cxx (original)
+++ openoffice/trunk/main/svx/source/svdraw/svdedtv.cxx Mon Feb 17 15:48:54 2014
@@ -39,6 +39,7 @@
 #include "svx/svdstr.hrc"   // Namen aus der Resource
 #include "svx/svdglob.hxx"  // StringCache
 #include <svx/e3dsceneupdater.hxx>
+#include <svx/svdview.hxx>
 
 // #i13033#
 #include <clonelist.hxx>
@@ -1022,6 +1023,26 @@ sal_Bool SdrEditView::InsertObjectAtView
 
 void SdrEditView::ReplaceObjectAtView(SdrObject* pOldObj, SdrPageView& rPV, SdrObject* pNewObj, sal_Bool bMark)
 {
+    if(IsTextEdit())
+    {
+#ifdef DBG_UTIL
+        if(pOldObj && dynamic_cast< SdrTextObj* >(pOldObj) && static_cast< SdrTextObj* >(pOldObj)->IsTextEditActive())
+        {
+            OSL_ENSURE(false, "OldObject is in TextEdit mode, this has to be ended before replacing it usnig SdrEndTextEdit (!)");
+        }
+
+        if(pNewObj && dynamic_cast< SdrTextObj* >(pNewObj) && static_cast< SdrTextObj* >(pNewObj)->IsTextEditActive())
+        {
+            OSL_ENSURE(false, "NewObject is in TextEdit mode, this has to be ended before replacing it usnig SdrEndTextEdit (!)");
+        }
+#endif
+
+        // #123468# emergency repair situation, needs to cast up to a class derived from
+        // this one; (aw080 has a mechanism for that and the view hierarchy is secured to
+        // always be a SdrView)
+        if(dynamic_cast< SdrView* >(this)) static_cast< SdrView* >(this)->SdrEndTextEdit();
+    }
+
 	SdrObjList* pOL=pOldObj->GetObjList();
 	const bool bUndo = IsUndoEnabled();
 	if( bUndo  )