Author: alg
Date: Fri Jul  5 18:02:32 2013
New Revision: 1500087

URL: http://svn.apache.org/r1500087
Log:
i122676 Call Execute only once to create only one Undo-ction

Modified:
    openoffice/trunk/main/svx/source/sidebar/area/AreaPropertyPanel.cxx

Modified: openoffice/trunk/main/svx/source/sidebar/area/AreaPropertyPanel.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/sidebar/area/AreaPropertyPanel.cxx?rev=1500087&r1=1500086&r2=1500087&view=diff
==============================================================================
--- openoffice/trunk/main/svx/source/sidebar/area/AreaPropertyPanel.cxx 
(original)
+++ openoffice/trunk/main/svx/source/sidebar/area/AreaPropertyPanel.cxx Fri Jul 
 5 18:02:32 2013
@@ -315,8 +315,11 @@ IMPL_LINK( AreaPropertyPanel, SelectFill
         mpLbFillAttr->Clear();
         SfxObjectShell* pSh = SfxObjectShell::Current();
         const XFillStyleItem aXFillStyleItem(eXFS);
-        GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_STYLE, 
SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L); 
 
+        // #122676# Do no longer trigger two Execute calls, one for 
SID_ATTR_FILL_STYLE
+        // and one for setting the fill attribute itself, but add two 
SfxPoolItems to the
+        // call to get just one action at the SdrObject and to create only one 
Undo action, too.
+        // Checked that this works in all apps.
         switch( eXFS )
         {
             case XFILL_NONE:
@@ -325,6 +328,10 @@ IMPL_LINK( AreaPropertyPanel, SelectFill
                 mpToolBoxColor->Hide();
                 mpLbFillType->Selected();
                 mpLbFillAttr->Disable();
+                
+                // #122676# need to call a single SID_ATTR_FILL_STYLE change
+                GetBindings()->GetDispatcher()->Execute(
+                    SID_ATTR_FILL_STYLE, SFX_CALLMODE_RECORD, 
&aXFillStyleItem, 0L); 
                 break;
             }
             case XFILL_SOLID:
@@ -334,7 +341,10 @@ IMPL_LINK( AreaPropertyPanel, SelectFill
                 const String aTmpStr;
                 const Color aColor = maLastColor;
                 const XFillColorItem aXFillColorItem( aTmpStr, aColor );
-                GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_COLOR, 
SFX_CALLMODE_RECORD, &aXFillColorItem, 0L);
+
+                // #122676# change FillStyle and Color in one call
+                GetBindings()->GetDispatcher()->Execute(
+                    SID_ATTR_FILL_COLOR, SFX_CALLMODE_RECORD, 
&aXFillColorItem, &aXFillStyleItem, 0L);
                 break;
             }
             case XFILL_GRADIENT:
@@ -362,7 +372,10 @@ IMPL_LINK( AreaPropertyPanel, SelectFill
                         {
                             const XGradient aGradient = 
aItem.GetGradientList()->GetGradient(mnLastPosGradient)->GetGradient();
                             const XFillGradientItem 
aXFillGradientItem(mpLbFillAttr->GetEntry(mnLastPosGradient), aGradient);
-                            
GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_GRADIENT, 
SFX_CALLMODE_RECORD, &aXFillGradientItem, 0L);
+
+                            // #122676# change FillStyle and Gradient in one 
call
+                            GetBindings()->GetDispatcher()->Execute(
+                                SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, 
&aXFillGradientItem, &aXFillStyleItem, 0L);
                             mpLbFillAttr->SelectEntryPos(mnLastPosGradient);
                         }
                     }
@@ -398,7 +411,10 @@ IMPL_LINK( AreaPropertyPanel, SelectFill
                         {
                             const XHatch aHatch = 
aItem.GetHatchList()->GetHatch(mnLastPosHatch)->GetHatch();
                             const XFillHatchItem 
aXFillHatchItem(mpLbFillAttr->GetSelectEntry(), aHatch);
-                            
GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_HATCH, 
SFX_CALLMODE_RECORD, &aXFillHatchItem, 0L);
+
+                            // #122676# change FillStyle and Hatch in one call
+                            GetBindings()->GetDispatcher()->Execute(
+                                SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, 
&aXFillHatchItem, &aXFillStyleItem, 0L);
                             mpLbFillAttr->SelectEntryPos(mnLastPosHatch);
                         }
                     }
@@ -434,7 +450,10 @@ IMPL_LINK( AreaPropertyPanel, SelectFill
                         {
                             const XBitmapEntry* pXBitmapEntry = 
aItem.GetBitmapList()->GetBitmap(mnLastPosBitmap);
                             const XFillBitmapItem 
aXFillBitmapItem(mpLbFillAttr->GetSelectEntry(), 
pXBitmapEntry->GetGraphicObject());
-                            
GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_BITMAP, 
SFX_CALLMODE_RECORD, &aXFillBitmapItem, 0L);
+
+                            // #122676# change FillStyle and Bitmap in one call
+                            GetBindings()->GetDispatcher()->Execute(
+                                SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, 
&aXFillBitmapItem, &aXFillStyleItem, 0L);
                             mpLbFillAttr->SelectEntryPos(mnLastPosBitmap);
                         }
                     }
@@ -473,26 +492,21 @@ IMPL_LINK( AreaPropertyPanel, SelectFill
 
     if(pToolBox)
     {
-        if((XFillStyle) meLastXFS != eXFS)
-        {
-            GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_STYLE, 
SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L);
-        }
+        // #122676# dependent from bFillStyleChange, do execute a single or two
+        // changes in one Execute call
+        const bool bFillStyleChange((XFillStyle) meLastXFS != eXFS);
 
         switch(eXFS)
         {
             case XFILL_SOLID:
-            //{
-            // //String aTmpStr = mpLbFillAttr->GetSelectEntry();
-            // //Color aColor = mpLbFillAttr->GetSelectEntryColor();
-            // //if(aColor.GetColor() == 0 && 
aTmpStr.Equals(String::CreateFromAscii("")))
-            // String aTmpStr;
-            // Color aColor = maLastColor;
-            // XFillColorItem aXFillColorItem( aTmpStr, aColor );
-            // GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_COLOR, 
SFX_CALLMODE_RECORD, &aXFillColorItem, 0L);
-            // maLastColor = aColor;
-            //}
-            break;
-
+            {
+                if(bFillStyleChange)
+                {
+                    // #122676# Single FillStyle change call needed here
+                    
GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_STYLE, 
SFX_CALLMODE_RECORD, &aXFillStyleItem, 0L);
+                }
+                break;
+            }
             case XFILL_GRADIENT:
             {
                 sal_uInt16 nPos = mpLbFillAttr->GetSelectEntryPos();
@@ -510,7 +524,11 @@ IMPL_LINK( AreaPropertyPanel, SelectFill
                     {
                         const XGradient aGradient = 
aItem.GetGradientList()->GetGradient(nPos)->GetGradient();
                         const XFillGradientItem 
aXFillGradientItem(mpLbFillAttr->GetSelectEntry(), aGradient);
-                        
GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_GRADIENT, 
SFX_CALLMODE_RECORD, &aXFillGradientItem, 0L);
+
+                        // #122676# Change FillStale and Gradinet in one call
+                        GetBindings()->GetDispatcher()->Execute(
+                            SID_ATTR_FILL_GRADIENT, SFX_CALLMODE_RECORD, 
&aXFillGradientItem, 
+                            bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
                     }
                 }
 
@@ -537,7 +555,11 @@ IMPL_LINK( AreaPropertyPanel, SelectFill
                     {
                         const XHatch aHatch = 
aItem.GetHatchList()->GetHatch(nPos)->GetHatch();
                         const XFillHatchItem aXFillHatchItem( 
mpLbFillAttr->GetSelectEntry(), aHatch);
-                        
GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_HATCH, 
SFX_CALLMODE_RECORD, &aXFillHatchItem, 0L);
+
+                        // #122676# Change FillStale and Hatch in one call
+                        GetBindings()->GetDispatcher()->Execute(
+                            SID_ATTR_FILL_HATCH, SFX_CALLMODE_RECORD, 
&aXFillHatchItem, 
+                            bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
                     }
                 }
 
@@ -564,7 +586,11 @@ IMPL_LINK( AreaPropertyPanel, SelectFill
                     {
                         const XBitmapEntry* pXBitmapEntry = 
aItem.GetBitmapList()->GetBitmap(nPos);
                         const XFillBitmapItem 
aXFillBitmapItem(mpLbFillAttr->GetSelectEntry(), 
pXBitmapEntry->GetGraphicObject());
-                        
GetBindings()->GetDispatcher()->Execute(SID_ATTR_FILL_BITMAP, 
SFX_CALLMODE_RECORD, &aXFillBitmapItem, 0L);
+
+                        // #122676# Change FillStale and Bitmap in one call
+                        GetBindings()->GetDispatcher()->Execute(
+                            SID_ATTR_FILL_BITMAP, SFX_CALLMODE_RECORD, 
&aXFillBitmapItem, 
+                            bFillStyleChange ? &aXFillStyleItem : 0L, 0L);
                     }
                 }
 


Reply via email to