From 098937b044a9c92942c73ca179bc020ddc286a1e Mon Sep 17 00:00:00 2001
From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= <vslavik@fastmail.fm>
Date: Mon, 16 Aug 2004 13:13:30 +0000
Subject: [PATCH] fixed handlers registration in DoPopupMenu (patch 1009949)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28816 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 src/gtk/window.cpp  | 10 ++++++----
 src/gtk1/window.cpp | 10 ++++++----
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp
index 8f3eadcf97..a461e3b7e8 100644
--- a/src/gtk/window.cpp
+++ b/src/gtk/window.cpp
@@ -4304,10 +4304,10 @@ bool wxWindowGTK::DoPopupMenu( wxMenu *menu, int x, int y )
 
     bool is_waiting = true;
 
-    gtk_signal_connect( GTK_OBJECT(menu->m_menu),
-                        "hide",
-                        GTK_SIGNAL_FUNC(gtk_pop_hide_callback),
-                        (gpointer)&is_waiting );
+    gulong handler = gtk_signal_connect( GTK_OBJECT(menu->m_menu),
+                                         "hide",
+                                         GTK_SIGNAL_FUNC(gtk_pop_hide_callback),
+                                         (gpointer)&is_waiting );
 
     wxPoint pos;
     gpointer userdata;
@@ -4344,6 +4344,8 @@ bool wxWindowGTK::DoPopupMenu( wxMenu *menu, int x, int y )
         gtk_main_iteration();
     }
 
+    gtk_signal_disconnect(GTK_OBJECT(menu->m_menu), handler);
+
     return true;
 }
 
diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp
index 8f3eadcf97..a461e3b7e8 100644
--- a/src/gtk1/window.cpp
+++ b/src/gtk1/window.cpp
@@ -4304,10 +4304,10 @@ bool wxWindowGTK::DoPopupMenu( wxMenu *menu, int x, int y )
 
     bool is_waiting = true;
 
-    gtk_signal_connect( GTK_OBJECT(menu->m_menu),
-                        "hide",
-                        GTK_SIGNAL_FUNC(gtk_pop_hide_callback),
-                        (gpointer)&is_waiting );
+    gulong handler = gtk_signal_connect( GTK_OBJECT(menu->m_menu),
+                                         "hide",
+                                         GTK_SIGNAL_FUNC(gtk_pop_hide_callback),
+                                         (gpointer)&is_waiting );
 
     wxPoint pos;
     gpointer userdata;
@@ -4344,6 +4344,8 @@ bool wxWindowGTK::DoPopupMenu( wxMenu *menu, int x, int y )
         gtk_main_iteration();
     }
 
+    gtk_signal_disconnect(GTK_OBJECT(menu->m_menu), handler);
+
     return true;
 }
 
-- 
2.47.2