summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--svx/inc/svx/extrusioncolorcontrol.hxx3
-rw-r--r--svx/inc/svx/tbcontrl.hxx6
-rw-r--r--svx/source/tbxctrls/colorwindow.hxx10
-rw-r--r--svx/source/tbxctrls/extrusioncontrols.cxx9
-rw-r--r--svx/source/tbxctrls/tbcontrl.cxx58
5 files changed, 59 insertions, 27 deletions
diff --git a/svx/inc/svx/extrusioncolorcontrol.hxx b/svx/inc/svx/extrusioncolorcontrol.hxx
index 2cca8acc0f94..28b675b1208b 100644
--- a/svx/inc/svx/extrusioncolorcontrol.hxx
+++ b/svx/inc/svx/extrusioncolorcontrol.hxx
@@ -38,7 +38,8 @@ namespace svx {
class SVX_DLLPUBLIC ExtrusionColorControl : public SfxToolBoxControl
{
private:
- ToolboxButtonColorUpdater* mpBtnUpdater;
+ ToolboxButtonColorUpdater* mpBtnUpdater;
+ Color mLastColor;
public:
SFX_DECL_TOOLBOX_CONTROL();
diff --git a/svx/inc/svx/tbcontrl.hxx b/svx/inc/svx/tbcontrl.hxx
index 22890738db8f..efcf8ae0f05d 100644
--- a/svx/inc/svx/tbcontrl.hxx
+++ b/svx/inc/svx/tbcontrl.hxx
@@ -287,6 +287,7 @@ public:
class SVX_DLLPUBLIC SvxFontColorToolBoxControl : public SfxToolBoxControl
{
::svx::ToolboxButtonColorUpdater* pBtnUpdater;
+ Color mLastColor;
public:
SFX_DECL_TOOLBOX_CONTROL();
@@ -314,6 +315,7 @@ class SVX_DLLPUBLIC SvxFontColorExtToolBoxControl : public SfxToolBoxControl
// SfxStatusForwarder aForward;
::svx::ToolboxButtonColorUpdater* pBtnUpdater;
+ Color mLastColor;
public:
SFX_DECL_TOOLBOX_CONTROL();
@@ -338,6 +340,8 @@ public:
class SVX_DLLPUBLIC SvxColorToolBoxControl : public SfxToolBoxControl
{
::svx::ToolboxButtonColorUpdater* pBtnUpdater;
+ Color mLastColor;
+
public:
SFX_DECL_TOOLBOX_CONTROL();
SvxColorToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx );
@@ -398,6 +402,8 @@ public:
class SVX_DLLPUBLIC SvxFrameLineColorToolBoxControl : public SfxToolBoxControl
{
::svx::ToolboxButtonColorUpdater* pBtnUpdater;
+ Color mLastColor;
+
public:
SFX_DECL_TOOLBOX_CONTROL();
SvxFrameLineColorToolBoxControl( USHORT nSlotId,
diff --git a/svx/source/tbxctrls/colorwindow.hxx b/svx/source/tbxctrls/colorwindow.hxx
index 4596d350cee4..13919797d102 100644
--- a/svx/source/tbxctrls/colorwindow.hxx
+++ b/svx/source/tbxctrls/colorwindow.hxx
@@ -19,9 +19,10 @@ class SvxColorWindow_Impl : public SfxPopupWindow
using FloatingWindow::StateChanged;
private:
- const USHORT theSlotId;
- ValueSet aColorSet;
- rtl::OUString maCommand;
+ const USHORT theSlotId;
+ ValueSet aColorSet;
+ rtl::OUString maCommand;
+ const Color mLastColor;
#if _SOLAR__PRIVATE
DECL_LINK( SelectHdl, void * );
@@ -36,7 +37,8 @@ public:
USHORT nSlotId,
const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame,
const String& rWndTitle,
- Window* pParentWindow );
+ Window* pParentWindow,
+ const Color rLastColor = COL_AUTO);
~SvxColorWindow_Impl();
void StartSelection();
diff --git a/svx/source/tbxctrls/extrusioncontrols.cxx b/svx/source/tbxctrls/extrusioncontrols.cxx
index c060405eb3b7..8c3699c02d9b 100644
--- a/svx/source/tbxctrls/extrusioncontrols.cxx
+++ b/svx/source/tbxctrls/extrusioncontrols.cxx
@@ -989,7 +989,8 @@ SFX_IMPL_TOOLBOX_CONTROL( ExtrusionColorControl, SvxColorItem );
ExtrusionColorControl::ExtrusionColorControl(
USHORT nSlotId, USHORT nId, ToolBox& rTbx )
-: SfxToolBoxControl ( nSlotId, nId, rTbx )
+: SfxToolBoxControl ( nSlotId, nId, rTbx ),
+ mLastColor( COL_AUTO )
{
rTbx.SetItemBits( nId, TIB_DROPDOWNONLY | rTbx.GetItemBits( nId ) );
mpBtnUpdater = new ToolboxButtonColorUpdater( nSlotId, nId, &GetToolBox(), TBX_UPDATER_MODE_CHAR_COLOR_NEW );
@@ -1018,7 +1019,8 @@ SfxPopupWindow* ExtrusionColorControl::CreatePopupWindow()
SID_EXTRUSION_3D_COLOR,
m_xFrame,
SVX_RESSTR( RID_SVXSTR_EXTRUSION_COLOR ),
- &GetToolBox() );
+ &GetToolBox(),
+ mLastColor );
pColorWin->StartPopupMode( &GetToolBox(), FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF );
pColorWin->StartSelection();
SetPopupWindow( pColorWin );
@@ -1040,7 +1042,10 @@ void ExtrusionColorControl::StateChanged( USHORT nSID, SfxItemState eState, cons
pItem = PTR_CAST( SvxColorItem, pState );
if ( pItem )
+ {
mpBtnUpdater->Update( pItem->GetValue());
+ mLastColor = pItem->GetValue();
+ }
}
rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState );
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index c6581db9c842..6b9d865674b4 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -821,13 +821,15 @@ SvxColorWindow_Impl::SvxColorWindow_Impl( const OUString& rCommand,
USHORT nSlotId,
const Reference< XFrame >& rFrame,
const String& rWndTitle,
- Window* pParentWindow ) :
+ Window* pParentWindow,
+ const ::Color rLastColor ) :
SfxPopupWindow( nSlotId, rFrame, pParentWindow, WinBits( WB_STDPOPUP ) ),
theSlotId( nSlotId ),
aColorSet( this, WinBits( WB_ITEMBORDER | WB_NAMEFIELD | WB_3DLOOK | WB_NO_DIRECTSELECT) ),
- maCommand( rCommand )
+ maCommand( rCommand ),
+ mLastColor( rLastColor )
{
SfxObjectShell* pDocSh = SfxObjectShell::Current();
@@ -883,6 +885,8 @@ SvxColorWindow_Impl::SvxColorWindow_Impl( const OUString& rCommand,
{
pEntry = pColorTable->GetColor(i);
aColorSet.InsertItem( i+1, pEntry->GetColor(), pEntry->GetName() );
+ if( pEntry->GetColor() == mLastColor )
+ aColorSet.SelectItem( i+1 );
}
while ( i < PALETTE_SIZE )
@@ -921,7 +925,7 @@ void SvxColorWindow_Impl::KeyInput( const KeyEvent& rKEvt )
SfxPopupWindow* SvxColorWindow_Impl::Clone() const
{
- return new SvxColorWindow_Impl( maCommand, theSlotId, GetFrame(), GetText(), GetParent() );
+ return new SvxColorWindow_Impl( maCommand, theSlotId, GetFrame(), GetText(), GetParent(), mLastColor );
}
// -----------------------------------------------------------------------
@@ -930,7 +934,6 @@ IMPL_LINK( SvxColorWindow_Impl, SelectHdl, void *, EMPTYARG )
{
USHORT nItemId = aColorSet.GetSelectItemId();
SvxColorItem aColorItem( aColorSet.GetItemColor( nItemId ), theSlotId );
-
/* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() calls.
This instance may be deleted in the meantime (i.e. when a dialog is opened
while in Dispatch()), accessing members will crash in this case. */
@@ -2333,7 +2336,8 @@ SvxFontColorToolBoxControl::SvxFontColorToolBoxControl(
: SfxToolBoxControl( nSlotId, nId, rTbx ),
pBtnUpdater( new ::svx::ToolboxButtonColorUpdater(
- nSlotId, nId, &GetToolBox(), TBX_UPDATER_MODE_CHAR_COLOR_NEW ))
+ nSlotId, nId, &GetToolBox(), TBX_UPDATER_MODE_CHAR_COLOR_NEW )),
+ mLastColor( COL_AUTO )
{
rTbx.SetItemBits( nId, TIB_DROPDOWNONLY | rTbx.GetItemBits( nId ) );
}
@@ -2362,7 +2366,8 @@ SfxPopupWindow* SvxFontColorToolBoxControl::CreatePopupWindow()
SID_ATTR_CHAR_COLOR,
m_xFrame,
SVX_RESSTR( RID_SVXITEMS_EXTRAS_CHARCOLOR ),
- &GetToolBox() );
+ &GetToolBox(),
+ mLastColor);
pColorWin->StartPopupMode( &GetToolBox(),
FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF );
@@ -2386,7 +2391,10 @@ void SvxFontColorToolBoxControl::StateChanged(
pItem = PTR_CAST( SvxColorItem, pState );
if ( pItem )
- pBtnUpdater->Update( pItem->GetValue());
+ {
+ pBtnUpdater->Update( pItem->GetValue() );
+ mLastColor= pItem->GetValue();
+ }
rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState );
rTbx.SetItemState( nId, ( SFX_ITEM_DONTCARE == eState ) ? STATE_DONTKNOW : STATE_NOCHECK );
@@ -2398,7 +2406,8 @@ void SvxFontColorToolBoxControl::StateChanged(
SvxColorToolBoxControl::SvxColorToolBoxControl( USHORT nSlotId, USHORT nId, ToolBox& rTbx ) :
- SfxToolBoxControl( nSlotId, nId, rTbx )
+ SfxToolBoxControl( nSlotId, nId, rTbx ),
+ mLastColor( COL_AUTO )
{
if ( nSlotId == SID_BACKGROUND_COLOR )
rTbx.SetItemBits( nId, TIB_DROPDOWNONLY | rTbx.GetItemBits( nId ) );
@@ -2433,7 +2442,8 @@ SfxPopupWindow* SvxColorToolBoxControl::CreatePopupWindow()
SID_BACKGROUND_COLOR,
m_xFrame,
SVX_RESSTR(nResId),
- &GetToolBox() );
+ &GetToolBox(),
+ mLastColor);
pColorWin->StartPopupMode( &GetToolBox(),
FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF );
@@ -2445,16 +2455,16 @@ SfxPopupWindow* SvxColorToolBoxControl::CreatePopupWindow()
// -----------------------------------------------------------------------
void SvxColorToolBoxControl::StateChanged(
-
USHORT , SfxItemState eState, const SfxPoolItem* pState )
-
{
- const SvxColorItem* pItem = 0;
+ const SvxColorItem* pItem = 0;
if ( SFX_ITEM_DONTCARE != eState )
pItem = PTR_CAST( SvxColorItem, pState );
- if ( pItem )
+ if ( pItem ) {
pBtnUpdater->Update( pItem->GetValue() );
+ mLastColor= pItem->GetValue();
+ }
USHORT nId = GetId();
ToolBox& rTbx = GetToolBox();
@@ -2472,7 +2482,8 @@ SvxFontColorExtToolBoxControl::SvxFontColorExtToolBoxControl(
ToolBox& rTbx ) :
SfxToolBoxControl( nSlotId, nId, rTbx ),
- pBtnUpdater(0)
+ pBtnUpdater(0),
+ mLastColor( COL_AUTO )
{
rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) );
// The following commands are available at the writer module.
@@ -2510,7 +2521,8 @@ SfxPopupWindow* SvxFontColorExtToolBoxControl::CreatePopupWindow()
GetSlotId(),
m_xFrame,
SVX_RESSTR( RID_SVXITEMS_EXTRAS_CHARCOLOR ),
- &GetToolBox() );
+ &GetToolBox(),
+ mLastColor );
if ( GetSlotId() == SID_ATTR_CHAR_COLOR_BACKGROUND )
pColorWin->SetText( SVX_RESSTR( RID_SVXSTR_EXTRAS_CHARBACKGROUND ) );
@@ -2549,7 +2561,10 @@ void SvxFontColorExtToolBoxControl::StateChanged(
pItem = PTR_CAST( SvxColorItem, pState );
if ( pItem )
+ {
pBtnUpdater->Update( pItem->GetValue() );
+ mLastColor = pItem->GetValue();
+ }
}
}
@@ -2685,7 +2700,8 @@ SvxFrameLineColorToolBoxControl::SvxFrameLineColorToolBoxControl(
ToolBox& rTbx ) :
SfxToolBoxControl( nSlotId, nId, rTbx ),
- pBtnUpdater(new ::svx::ToolboxButtonColorUpdater( nSlotId, nId, &GetToolBox() ))
+ pBtnUpdater(new ::svx::ToolboxButtonColorUpdater( nSlotId, nId, &GetToolBox() )),
+ mLastColor( COL_AUTO )
{
rTbx.SetItemBits( nId, TIB_DROPDOWNONLY | rTbx.GetItemBits( nId ) );
}
@@ -2714,7 +2730,8 @@ SfxPopupWindow* SvxFrameLineColorToolBoxControl::CreatePopupWindow()
SID_FRAME_LINECOLOR,
m_xFrame,
SVX_RESSTR(RID_SVXSTR_FRAME_COLOR),
- &GetToolBox() );
+ &GetToolBox(),
+ mLastColor);
pColorWin->StartPopupMode( &GetToolBox(),
FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF );
@@ -2726,9 +2743,7 @@ SfxPopupWindow* SvxFrameLineColorToolBoxControl::CreatePopupWindow()
// -----------------------------------------------------------------------
void SvxFrameLineColorToolBoxControl::StateChanged(
-
USHORT , SfxItemState eState, const SfxPoolItem* pState )
-
{
USHORT nId = GetId();
ToolBox& rTbx = GetToolBox();
@@ -2738,9 +2753,12 @@ void SvxFrameLineColorToolBoxControl::StateChanged(
const SvxColorItem* pItem = 0;
if ( SFX_ITEM_DONTCARE != eState )
{
- pItem = PTR_CAST( SvxColorItem, pState );
+ pItem = PTR_CAST( SvxColorItem, pState );
if ( pItem )
+ {
pBtnUpdater->Update( pItem->GetValue());
+ mLastColor = pItem->GetValue();
+ }
}
}