framework/inc/uielement/toolbarmanager.hxx | 1 framework/source/uielement/addonstoolbarmanager.cxx | 7 -- framework/source/uielement/toolbarmanager.cxx | 10 +++ vcl/source/window/toolbox.cxx | 62 ++++++++++---------- 4 files changed, 48 insertions(+), 32 deletions(-)
New commits: commit e9b63535e426068435d36fbe9a70817950a55ef3 Author: Ivan Timofeev <[email protected]> Date: Thu Jun 7 22:34:01 2012 +0400 fdo#35972: toolbarmanager must be aware of changes in SvtMiscOptions (cherry picked from commit 1829efaf9f5d9af9d51b01d273c7b6c60970b05d) Conflicts: framework/source/uielement/toolbarmanager.cxx Change-Id: Ie6e3036e83b5ea859e2c73df47629eb79791a52c Signed-off-by: Caolán McNamara <[email protected]> diff --git a/framework/inc/uielement/toolbarmanager.hxx b/framework/inc/uielement/toolbarmanager.hxx index 2f8ad05..a18d84f 100644 --- a/framework/inc/uielement/toolbarmanager.hxx +++ b/framework/inc/uielement/toolbarmanager.hxx @@ -173,6 +173,7 @@ class ToolBarManager : public ::com::sun::star::frame::XFrameActionListener DECL_LINK( Deactivate, ToolBox * ); DECL_LINK( StateChanged, StateChangedType* ); DECL_LINK( DataChanged, DataChangedEvent* ); + DECL_LINK( MiscOptionsChanged, void* ); DECL_LINK( MenuButton, ToolBox * ); DECL_LINK( MenuSelect, Menu * ); diff --git a/framework/source/uielement/addonstoolbarmanager.cxx b/framework/source/uielement/addonstoolbarmanager.cxx index 1ea2388..dc886e8 100644 --- a/framework/source/uielement/addonstoolbarmanager.cxx +++ b/framework/source/uielement/addonstoolbarmanager.cxx @@ -215,6 +215,9 @@ void AddonsToolBarManager::RefreshImages() ); } } + m_pToolBar->SetToolboxButtonSize( bBigImages ? TOOLBOX_BUTTONSIZE_LARGE : TOOLBOX_BUTTONSIZE_SMALL ); + ::Size aSize = m_pToolBar->CalcWindowSizePixel(); + m_pToolBar->SetOutputSizePixel( aSize ); } void AddonsToolBarManager::FillToolbar( const Sequence< Sequence< PropertyValue > >& rAddonToolbar ) diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index df50488..74930d2 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -301,6 +301,8 @@ ToolBarManager::ToolBarManager( const Reference< XMultiServiceFactory >& rServic m_aAsyncUpdateControllersTimer.SetTimeout( 50 ); m_aAsyncUpdateControllersTimer.SetTimeoutHdl( LINK( this, ToolBarManager, AsyncUpdateControllersHdl ) ); + + SvtMiscOptions().AddListenerLink( LINK( this, ToolBarManager, MiscOptionsChanged ) ); } ToolBarManager::~ToolBarManager() @@ -350,6 +352,8 @@ void ToolBarManager::Destroy() m_pToolBar->SetCommandHdl( aEmpty ); m_pToolBar = 0; + + SvtMiscOptions().RemoveListenerLink( LINK( this, ToolBarManager, MiscOptionsChanged ) ); } ToolBox* ToolBarManager::GetToolBar() const @@ -2139,6 +2143,12 @@ IMPL_LINK( ToolBarManager, DataChanged, DataChangedEvent*, pDataChangedEvent ) return 1; } +IMPL_LINK(ToolBarManager, MiscOptionsChanged, void*, EMPTYARG) +{ + CheckAndUpdateImages(); + return 0; +} + IMPL_LINK( ToolBarManager, AsyncUpdateControllersHdl, Timer *, EMPTYARG ) { // The guard must be in its own context as the we can get destroyed when our commit b29d04e9360920045cfa87f1e6263434915ae9a7 Author: Ivan Timofeev <[email protected]> Date: Sat Jun 9 21:23:46 2012 +0400 fdo#42379: hide separators before calculating line breaks it is nesessary since commit 1703501a100cd6d52578baeb4e8097218b285ffb, ImplCalcBreaks looks for the last visible item. (cherry picked from commit 243fefb72897f45448d946d571397b7bc4893e7d) Signed-off-by: Caolán McNamara <[email protected]> diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx index 9da3a7a..a055c6a 100644 --- a/vcl/source/window/toolbox.cxx +++ b/vcl/source/window/toolbox.cxx @@ -2336,6 +2336,38 @@ Size ToolBox::ImplGetOptimalFloatingSize( FloatingSizeMode eMode ) return aCurrentSize; } +namespace +{ +static void lcl_hideDoubleSeparators( std::vector< ImplToolItem >& rItems ) +{ + bool bLastSep( true ); + std::vector< ImplToolItem >::iterator it; + for ( it = rItems.begin(); it != rItems.end(); ++it ) + { + if ( it->meType == TOOLBOXITEM_SEPARATOR ) + { + it->mbVisible = sal_False; + if ( !bLastSep ) + { + // check if any visible items have to appear behind it + std::vector< ImplToolItem >::iterator temp_it; + for ( temp_it = it+1; temp_it != rItems.end(); ++temp_it ) + { + if ( ((temp_it->meType == TOOLBOXITEM_BUTTON) && + temp_it->mbVisible) ) + { + it->mbVisible = sal_True; + break; + } + } + } + bLastSep = true; + } + else if ( it->mbVisible ) + bLastSep = false; + } +} +} void ToolBox::ImplFormat( sal_Bool bResize ) { @@ -2355,10 +2387,8 @@ void ToolBox::ImplFormat( sal_Bool bResize ) long nMax; // width of layoutarea in pixels sal_uInt16 nFormatLine; sal_Bool bMustFullPaint; - sal_Bool bLastSep; std::vector< ImplToolItem >::iterator it; - std::vector< ImplToolItem >::iterator temp_it; ImplDockingWindowWrapper *pWrapper = ImplGetDockingManager()->GetDockingWindowWrapper( this ); sal_Bool bIsInPopupMode = ImplIsInPopupMode(); @@ -2517,7 +2547,6 @@ void ToolBox::ImplFormat( sal_Bool bResize ) long nX = nLeft; // top-left offset long nY = nTop; nFormatLine = 1; - bLastSep = sal_True; // save old scroll rectangles and reset them Rectangle aOldLowerRect = maLowerRect; @@ -2552,6 +2581,8 @@ void ToolBox::ImplFormat( sal_Bool bResize ) // do we have any toolbox items at all ? if ( !mpData->m_aItems.empty() || IsMenuEnabled() ) { + lcl_hideDoubleSeparators( mpData->m_aItems ); + // compute line breaks and visible lines give the current window width (nMax) // the break indicators will be stored within each item (it->mbBreak) mnCurLines = ImplCalcBreaks( nMax, NULL, mbHorz ); @@ -2648,31 +2679,6 @@ void ToolBox::ImplFormat( sal_Bool bResize ) it = mpData->m_aItems.begin(); while ( it != mpData->m_aItems.end() ) { - // hide double separators - if ( it->meType == TOOLBOXITEM_SEPARATOR ) - { - it->mbVisible = sal_False; - if ( !bLastSep ) - { - // check if any visible items have to appear behind it - temp_it = it+1; - while ( temp_it != mpData->m_aItems.end() ) - { - if ( (temp_it->meType == TOOLBOXITEM_SEPARATOR) || - ((temp_it->meType == TOOLBOXITEM_BUTTON) && - temp_it->mbVisible) ) - { - it->mbVisible = sal_True; - break; - } - ++temp_it; - } - } - bLastSep = sal_True; - } - else if ( it->mbVisible ) - bLastSep = sal_False; - it->mbShowWindow = sal_False; // check for line break and advance nX/nY accordingly commit f11040c27f60e3b3c4e31c43de6b74f5b8676c31 Author: Ivan Timofeev <[email protected]> Date: Fri Jun 8 21:31:06 2012 +0400 fdo#42405: remove this, nowadays MenuItemAllowed disables menu entries since c4461665bd030a555a8b7ffa5bd6717cfb787b9d m_bCanBeCustomized = false will lead to toolbar locking, but we don't want this, indeed. Change-Id: I42f16a017c7f1cf6e8321c7fe26c027ec79c7953 (cherry picked from commit 3768e71344a298d8e7ac07fb38a97ccf58f83a10) Signed-off-by: Caolán McNamara <[email protected]> diff --git a/framework/source/uielement/addonstoolbarmanager.cxx b/framework/source/uielement/addonstoolbarmanager.cxx index facbf5b..1ea2388 100644 --- a/framework/source/uielement/addonstoolbarmanager.cxx +++ b/framework/source/uielement/addonstoolbarmanager.cxx @@ -104,10 +104,6 @@ AddonsToolBarManager::AddonsToolBarManager( const Reference< XMultiServiceFactor ToolBar* pToolBar ) : ToolBarManager( rServiceManager, rFrame, rResourceName, pToolBar ) { - // Configuration data is retrieved from non-writable configuration layer. Therefor we - // must disable some menu entries. - m_bCanBeCustomized = sal_False; - m_pToolBar->SetMenuType( TOOLBOX_MENUTYPE_CLIPPEDITEMS ); m_pToolBar->SetSelectHdl( LINK( this, AddonsToolBarManager, Select) ); m_pToolBar->SetActivateHdl( LINK( this, AddonsToolBarManager, Activate) );
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
