summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--framework/source/uielement/toolbarmanager.cxx3
-rw-r--r--vcl/source/window/toolbox2.cxx23
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 );
}
}
+
}
}