diff options
author | Maxim Monastirsky <momonasmon@gmail.com> | 2014-10-22 21:44:45 +0300 |
---|---|---|
committer | Maxim Monastirsky <momonasmon@gmail.com> | 2014-10-22 23:25:52 +0300 |
commit | e2b84636b3baf344cbc8f709478714ddea7caced (patch) | |
tree | d2d22ffc0c90a9e217c610369604e35755d87153 | |
parent | af24b627370f2eecc9222b555fc5c1ef393f5850 (diff) |
Related: fdo#84844 Support of Sidebar wide buttons in SvxColorToolBoxControl
The end goal is to convert the Sidebar to use
SvxColorToolBoxControl, and get rid of the Sidebar
specific color popup, so we don't need to maintain
two popups.
Change-Id: I42e5bcb611acae25f16dfe9623d19727fc39ea07
-rw-r--r-- | include/svx/tbcontrl.hxx | 1 | ||||
-rw-r--r-- | svx/source/tbxctrls/tbcontrl.cxx | 32 |
2 files changed, 32 insertions, 1 deletions
diff --git a/include/svx/tbcontrl.hxx b/include/svx/tbcontrl.hxx index 36426dac3236..22b7bd0fab5b 100644 --- a/include/svx/tbcontrl.hxx +++ b/include/svx/tbcontrl.hxx @@ -220,6 +220,7 @@ class SVX_DLLPUBLIC SvxColorToolBoxControl : public SfxToolBoxControl ::boost::scoped_ptr< ::svx::ToolboxButtonColorUpdater > pBtnUpdater; PaletteManager mPaletteManager; + bool bSidebarType; DECL_LINK( SelectedHdl, Color* ); public: SFX_DECL_TOOLBOX_CONTROL(); diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index 83d36093736f..293d8a050991 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -59,6 +59,7 @@ #include "helpid.hrc" #include <sfx2/htmlmode.hxx> #include <sfx2/sidebar/Sidebar.hxx> +#include <sfx2/sidebar/SidebarToolBox.hxx> #include <svx/xtable.hxx> #include <editeng/fontitem.hxx> #include <editeng/fhgtitem.hxx> @@ -2330,7 +2331,10 @@ SvxColorToolBoxControl::SvxColorToolBoxControl( ToolBox& rTbx ) : SfxToolBoxControl( nSlotId, nId, rTbx ) { - rTbx.SetItemBits( nId, ToolBoxItemBits::DROPDOWN | rTbx.GetItemBits( nId ) ); + if ( dynamic_cast< sfx2::sidebar::SidebarToolBox* >(&rTbx) ) + bSidebarType = true; + else + bSidebarType = false; // The following commands are available at the various modules switch( nSlotId ) @@ -2338,11 +2342,13 @@ SvxColorToolBoxControl::SvxColorToolBoxControl( case SID_ATTR_CHAR_COLOR: addStatusListener( OUString( ".uno:Color" )); mPaletteManager.SetLastColor( COL_RED ); + bSidebarType = false; break; case SID_ATTR_CHAR_COLOR2: addStatusListener( OUString( ".uno:CharColorExt" )); mPaletteManager.SetLastColor( COL_RED ); + bSidebarType = false; break; case SID_BACKGROUND_COLOR: @@ -2353,6 +2359,7 @@ SvxColorToolBoxControl::SvxColorToolBoxControl( case SID_ATTR_CHAR_COLOR_BACKGROUND: addStatusListener( OUString( ".uno:CharBackgroundExt" )); mPaletteManager.SetLastColor( COL_YELLOW ); + bSidebarType = false; break; case SID_FRAME_LINECOLOR: @@ -2370,6 +2377,11 @@ SvxColorToolBoxControl::SvxColorToolBoxControl( break; } + if ( bSidebarType ) + rTbx.SetItemBits( nId, ToolBoxItemBits::DROPDOWNONLY | rTbx.GetItemBits( nId ) ); + else + rTbx.SetItemBits( nId, ToolBoxItemBits::DROPDOWN | rTbx.GetItemBits( nId ) ); + pBtnUpdater.reset( new ::svx::ToolboxButtonColorUpdater( nSlotId, nId, &GetToolBox() ) ); mPaletteManager.SetBtnUpdater( pBtnUpdater.get() ); } @@ -2448,10 +2460,28 @@ void SvxColorToolBoxControl::StateChanged( rTbx.CheckItem( nId, pBool && pBool->GetValue() ); } } + else if ( bSidebarType && SfxItemState::DEFAULT <= eState ) + { + Color aColor; + if ( pState->ISA( SvxColorItem ) ) + aColor = static_cast< const SvxColorItem* >(pState)->GetValue(); + else if ( pState->ISA( XLineColorItem ) ) + aColor = static_cast< const XLineColorItem* >(pState)->GetColorValue(); + pBtnUpdater->Update( aColor ); + } } void SvxColorToolBoxControl::Select(sal_uInt16 /*nSelectModifier*/) { + if ( bSidebarType ) + { + // Open the popup also when Enter key is pressed. + css::uno::Reference< css::awt::XWindow > xWin = createPopupWindow(); + if ( xWin.is() ) + xWin->setFocus(); + return; + } + OUString aCommand; OUString aParamName; |