diff options
-rw-r--r-- | framework/source/uielement/toolbarmanager.cxx | 3 | ||||
-rw-r--r-- | vcl/source/window/toolbox2.cxx | 23 |
2 files changed, 15 insertions, 11 deletions
diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index 13919fcbabf7..fba6752fc13f 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -1601,7 +1601,8 @@ void ToolBarManager::ImplClearPopupMenu( ToolBox *pToolBar ) sal_uInt16 i; for( i=0; i<pMenu->GetItemCount(); ) { - if( pMenu->GetItemId( i ) < TOOLBOX_MENUITEM_START ) + if( pMenu->GetItemId( i ) < TOOLBOX_MENUITEM_START + && pMenu->GetItemId( i ) != 0 ) // Don't remove separators (Id == 0) pMenu->RemoveItem( i ); else i++; diff --git a/vcl/source/window/toolbox2.cxx b/vcl/source/window/toolbox2.cxx index 5f433848f65e..5619b4cbba81 100644 --- a/vcl/source/window/toolbox2.cxx +++ b/vcl/source/window/toolbox2.cxx @@ -1927,39 +1927,42 @@ void ToolBox::UpdateCustomMenu() i++; } - // add menu items, starting from the end and inserting at pos 0 + // add menu items: first the overflow items, then hidden items, both in the + // order they would usually appear in the toolbar. Separators that would be + // in the toolbar are ignored as they would introduce too much clutter, + // instead we have a single separator to help distinguish between overflow + // and hidden items. if ( !mpData->m_aItems.empty() ) { // nStartPos will hold the number of clipped items appended from first loop - sal_uInt16 nSepPos = 0; - for ( std::vector< ImplToolItem >::reverse_iterator it(mpData->m_aItems.rbegin()); - it != mpData->m_aItems.rend(); ++it) + for ( std::vector< ImplToolItem >::iterator it(mpData->m_aItems.begin()); + it != mpData->m_aItems.end(); ++it) { if( it->IsClipped() ) { sal_uInt16 id = it->mnId + TOOLBOX_MENUITEM_START; - pMenu->InsertItem( id, it->maText, it->maImage, 0, OString(), 0 ); + pMenu->InsertItem( id, it->maText, it->maImage, 0, OString()); pMenu->EnableItem( id, it->mbEnabled ); pMenu->CheckItem ( id, it->meState == TRISTATE_TRUE ); - nSepPos++; } } // add a separator below the inserted clipped-items - pMenu->InsertSeparator( OString(), nSepPos ); + pMenu->InsertSeparator(); // now append the items that are explicitly disabled - for ( std::vector< ImplToolItem >::reverse_iterator it(mpData->m_aItems.rbegin()); - it != mpData->m_aItems.rend(); ++it) + for ( std::vector< ImplToolItem >::iterator it(mpData->m_aItems.begin()); + it != mpData->m_aItems.end(); ++it) { if( it->IsItemHidden() ) { sal_uInt16 id = it->mnId + TOOLBOX_MENUITEM_START; - pMenu->InsertItem( id, it->maText, it->maImage, 0, OString(), nSepPos+1 ); + pMenu->InsertItem( id, it->maText, it->maImage, 0, OString() ); pMenu->EnableItem( id, it->mbEnabled ); pMenu->CheckItem( id, it->meState == TRISTATE_TRUE ); } } + } } |