diff --git a/include/svx/tbcontrl.hxx b/include/svx/tbcontrl.hxx index 94868ea..22c1c5e 100644 --- a/include/svx/tbcontrl.hxx +++ b/include/svx/tbcontrl.hxx @@ -269,7 +269,6 @@ class SVX_DLLPUBLIC SvxColorExtToolBoxControl : public SfxToolBoxControl ::svx::ToolboxButtonColorUpdater* pBtnUpdater; Color mLastColor; - bool bChoiceFromPalette; public: SFX_DECL_TOOLBOX_CONTROL(); diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index 9c36b72..f2f453a 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -1138,6 +1138,17 @@ SvxColorWindow_Impl::SvxColorWindow_Impl( const OUString& rCommand, SetOutputSizePixel(Size(aNewSize.Width() + nAdd, aNewSize.Height() + nAdd)); aColorSet.Clear(); aColorSet.addEntriesForXColorList(*pColorList); + + short i = 0; + long nCount = pColorList->Count(); + XColorEntry* pEntry = NULL; + + for ( i = 0; i < nCount; i++ ) + { + pEntry = pColorList->GetColor(i); + if( pEntry->GetColor() == mLastColor ) + aColorSet.SelectItem( i+1 ); + } } aColorSet.SetSelectHdl( LINK( this, SvxColorWindow_Impl, SelectHdl ) ); @@ -1210,6 +1221,7 @@ IMPL_LINK_NOARG(SvxColorWindow_Impl, SelectHdl) SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( GetFrame()->getController(), UNO_QUERY ), maCommand, aArgs ); + aColorSet.SelectItem( nItemId ); } return 0; @@ -2470,7 +2482,6 @@ SvxColorExtToolBoxControl::SvxColorExtToolBoxControl( mLastColor( COL_AUTO ) { rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) ); - bChoiceFromPalette = false; // The following commands are available at the various modules switch( nSlotId ) @@ -2547,7 +2558,6 @@ SfxPopupWindow* SvxColorExtToolBoxControl::CreatePopupWindow() FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF|FLOATWIN_POPUPMODE_NOAPPFOCUSCLOSE ); pColorWin->StartSelection(); SetPopupWindow( pColorWin ); - bChoiceFromPalette = true; return pColorWin; } @@ -2565,19 +2575,14 @@ void SvxColorExtToolBoxControl::StateChanged( rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState ); rTbx.SetItemState( nId, ( SFX_ITEM_DONTCARE == eState ) ? TRISTATE_INDET : TRISTATE_FALSE ); - if (bChoiceFromPalette) + const SvxColorItem* pItem = 0; + if ( SFX_ITEM_DONTCARE != eState ) + pItem = PTR_CAST( SvxColorItem, pState ); + + if ( pItem ) { - bChoiceFromPalette = false; - - const SvxColorItem* pItem = 0; - if ( SFX_ITEM_DONTCARE != eState ) - pItem = PTR_CAST( SvxColorItem, pState ); - - if ( pItem ) - { - pBtnUpdater->Update( pItem->GetValue() ); - mLastColor = pItem->GetValue(); - } + pBtnUpdater->Update( pItem->GetValue() ); + mLastColor = pItem->GetValue(); } } }