Disconnect "hide" menu signal to fix menu destruction in wxGTK.
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 10 Nov 2010 00:36:55 +0000 (00:36 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 10 Nov 2010 00:36:55 +0000 (00:36 +0000)
The "hide" signal handler was triggered when destroying a sub-menu (even if it
was not shown at this time). Disconnect it to avoid asserts due to attempts to
generate an event for an already detached menu and to avoid the (bogus)
wxEVT_MENU_CLOSE event as well.

Closes #12668.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66082 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/menu.cpp

index 53869105fb39e77a856b26feffc0687df0b7bcd4..d4e961b241128c1ad5a5fde1e00379dceddd4a37 100644 (file)
@@ -719,6 +719,11 @@ void wxMenu::Init()
 
 wxMenu::~wxMenu()
 {
+    // Destroying a menu generates a "hide" signal even if it's not shown
+    // currently, so disconnect it to avoid dummy wxEVT_MENU_CLOSE events
+    // generation.
+    g_signal_handlers_disconnect_by_func(m_menu, (gpointer)menu_hide, this);
+
     // see wxMenu::Init
     g_object_unref(m_menu);