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); } }