path: root/vcl
diff options
authorAndrzej Hunt <>2014-06-01 08:40:43 +0100
committerAndras Timar <>2014-06-10 22:09:53 +0200
commit9c4624f53961dc4f6822eb2dc2055dbefd7d1f4b (patch)
tree67d783f96d7ee5c3d05e1cd1895c97e2dd4447b6 /vcl
parent283774b2cc515ba5fa65f924d460736b9a4151a4 (diff)
fdo79368 Don't process overflow menu items twice.
We reuse the toolbox overflow menu for toolbarmanager's context menu -- toolbarmanger previously added its menu listener to the toolboxes menu permanently, meaning that it would try to handle overflow menu items (in addition to the context menu items which it should handle), instead we should only add the listener when we are actually using the menu as a context menu. Perhaps it would be better in the long run to actually use fully separate menus instead, and ask toolbox to specifically add its items to that rather than trying to hack the context menu on top of the overflow menu? Change-Id: Iecface2c6eae9ab79dbcdb25ffdbaf446e2885ea (cherry picked from commit 1ae89d189200c1e351a396a3f02612b84a69985f) Reviewed-on: Reviewed-by: Caolán McNamara <> Tested-by: Caolán McNamara <>
Diffstat (limited to 'vcl')
1 files changed, 7 insertions, 1 deletions
diff --git a/vcl/source/window/toolbox2.cxx b/vcl/source/window/toolbox2.cxx
index af7d38c54266..ba273c370734 100644
--- a/vcl/source/window/toolbox2.cxx
+++ b/vcl/source/window/toolbox2.cxx
@@ -2185,7 +2185,13 @@ void ToolBox::ImplExecuteCustomMenu()
// call button handler to allow for menu customization
mpData->maMenuButtonHdl.Call( this );
- // register handler
+ // We specifically only register this event listener when executing our
+ // overflow menu (and remove it directly afterwards), as the same menu
+ // is reused for both the overflow menu (as managed here in ToolBox),
+ // but also by ToolBarManager for its context menu. If we leave event
+ // listeners alive beyond when the menu is showing in the desired mode
+ // then duplicate events can happen as the context menu "duplicates"
+ // items from the overflow menu, which both listeners would then act on.
GetMenu()->AddEventListener( LINK( this, ToolBox, ImplCustomMenuListener ) );
// make sure all disabled entries will be shown