summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-05-16 09:29:38 +0100
committerCaolán McNamara <caolanm@redhat.com>2016-05-16 10:42:05 +0100
commita30e3ea231dd1a355e616fed33eb7c4c4866c12c (patch)
treee13f4fd85a067733c58d927a8a745ffa14e5e362
parent42801672f0acc3b2ffbc30602d881b43e62d07cf (diff)
Resolves: tdf#99857 missing items from toolbar right click
we do an activate/deactivate to force the vcl menu to update so we have a full model before we try to show the gtk one. This particular toplevel menu has a deactivate handler which empties out the submenus on the deactivate, so we don't get the full thing, so we end up with missing entries. The Deactivate to empty the menu is a bit dubious. Even if we limited the activate/deactivate to submenus we still get the deactivate before the "select" so the ordering is fragile. The Deactivate handler seems dubious anyway, why not just clear it out after the Execute has finished which is simpler and more direct anyway dde83e3cea5b5fc1f91ebd336a2071ce8ff75e75 Change-Id: I56145f6236db1787cc4ee623c513cb927bf2a972
-rw-r--r--framework/inc/uielement/toolbarmanager.hxx2
-rw-r--r--framework/source/uielement/toolbarmanager.cxx19
2 files changed, 6 insertions, 15 deletions
diff --git a/framework/inc/uielement/toolbarmanager.hxx b/framework/inc/uielement/toolbarmanager.hxx
index 41e2539174f8..692652e5404a 100644
--- a/framework/inc/uielement/toolbarmanager.hxx
+++ b/framework/inc/uielement/toolbarmanager.hxx
@@ -128,7 +128,7 @@ class ToolBarManager : public ToolbarManager_Base
DECL_LINK_TYPED( MenuButton, ToolBox *, void );
DECL_LINK_TYPED( MenuSelect, Menu *, bool );
- DECL_LINK_TYPED( MenuDeactivate, Menu *, bool );
+ void MenuDeactivated();
DECL_LINK_TYPED(AsyncUpdateControllersHdl, Timer *, void);
DECL_STATIC_LINK_TYPED( ToolBarManager, ExecuteHdl_Impl, void*, void );
diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx
index 4eb687710dd0..0feaabe3b5a5 100644
--- a/framework/source/uielement/toolbarmanager.cxx
+++ b/framework/source/uielement/toolbarmanager.cxx
@@ -1332,19 +1332,11 @@ void ToolBarManager::ImplClearPopupMenu( ToolBox *pToolBar )
}
}
-IMPL_LINK_TYPED( ToolBarManager, MenuDeactivate, Menu*, pMenu, bool )
+void ToolBarManager::MenuDeactivated()
{
- SolarMutexGuard g;
-
- if ( m_bDisposed )
- return true;
-
- if( pMenu != m_pToolBar->GetMenu() )
- return true;
-
- ImplClearPopupMenu( m_pToolBar );
-
- return false;
+ if (m_bDisposed)
+ return;
+ ImplClearPopupMenu(m_pToolBar);
}
Reference< XModel > ToolBarManager::GetModelFromFrame() const
@@ -1539,7 +1531,6 @@ IMPL_LINK_TYPED( ToolBarManager, Command, CommandEvent const *, pCmdEvt, void )
// when the menu is being used as an overflow menu.
Menu *pManagerMenu = m_pToolBar->GetMenu();
pManagerMenu->SetSelectHdl( LINK( this, ToolBarManager, MenuSelect ) );
- pManagerMenu->SetDeactivateHdl( LINK( this, ToolBarManager, MenuDeactivate ) );
// make sure all disabled entries will be shown
pMenu->SetMenuFlags( pMenu->GetMenuFlags() | MenuFlags::AlwaysShowDisabledEntries );
@@ -1553,7 +1544,7 @@ IMPL_LINK_TYPED( ToolBarManager, Command, CommandEvent const *, pCmdEvt, void )
{
// Unlink our listeners again -- see above for why.
pManagerMenu->SetSelectHdl( Link<Menu*, bool>() );
- pManagerMenu->SetDeactivateHdl( Link<Menu *, bool>() );
+ MenuDeactivated();
}
}
}