[Libreoffice-commits] .: sd/source

Muthu Subramanian sumuthu at kemper.freedesktop.org
Fri Oct 7 07:23:44 PDT 2011


 sd/source/ui/func/fuformatpaintbrush.cxx |   16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

New commits:
commit ce285da92f95995a4e7c3a63713a8b004a1ab967
Author: Muthu Subramanian <sumuthu at suse.com>
Date:   Fri Oct 7 20:15:01 2011 +0530

    n#685123: Undo corrupting the document.

diff --git a/sd/source/ui/func/fuformatpaintbrush.cxx b/sd/source/ui/func/fuformatpaintbrush.cxx
index 77908a5..700ed08 100644
--- a/sd/source/ui/func/fuformatpaintbrush.cxx
+++ b/sd/source/ui/func/fuformatpaintbrush.cxx
@@ -256,20 +256,26 @@ bool FuFormatPaintBrush::HasContentForThisType( sal_uInt32 nObjectInventor, sal_
 void FuFormatPaintBrush::Paste( bool bNoCharacterFormats, bool bNoParagraphFormats )
 {
     const SdrMarkList& rMarkList = mpView->GetMarkedObjectList();
-    if(mpItemSet.get() && (rMarkList.GetMarkCount() == 1) )
+    if( mpItemSet.get() && ( rMarkList.GetMarkCount() == 1 ) )
     {
-        SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
+        SdrObject* pObj( NULL );
+        bool bUndo = mpDoc->IsUndoEnabled();
+
+        if( bUndo && !mpView->GetTextEditOutlinerView() )
+            pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
 
-        if( mpDoc->IsUndoEnabled() )
+        // n685123: ApplyFormatPaintBrush itself would store undo information
+        // except in a few cases (?)
+        if( pObj )
         {
             String sLabel( mpViewShell->GetViewShellBase().RetrieveLabelFromCommand( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:FormatPaintbrush" ) ) ) );
             mpDoc->BegUndo( sLabel );
-            mpDoc->AddUndo(mpDoc->GetSdrUndoFactory().CreateUndoAttrObject(*pObj,sal_False,sal_True));
+            mpDoc->AddUndo( mpDoc->GetSdrUndoFactory().CreateUndoAttrObject( *pObj, sal_False, sal_True ) );
         }
 
         mpView->ApplyFormatPaintBrush( *mpItemSet.get(), bNoCharacterFormats, bNoParagraphFormats );
 
-        if( mpDoc->IsUndoEnabled() )
+        if( pObj )
         {
             mpDoc->EndUndo();
         }


More information about the Libreoffice-commits mailing list