which have been sent before or at the same time as
    the control creation time so that these evens don't
    make the control disappear again.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37747 
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
     // --------------
 
     virtual void OnInternalIdle();
     // --------------
 
     virtual void OnInternalIdle();
+    
+    // GTK time when connecting to button_press signal
+    wxUint32  m_time;
 
 {
     GtkWidget *child = gtk_get_event_widget (gdk_event);
 
 {
     GtkWidget *child = gtk_get_event_widget (gdk_event);
 
-  /* We don't ask for button press events on the grab widget, so
-   *  if an event is reported directly to the grab widget, it must
-   *  be on a window outside the application (and thus we remove
-   *  the popup window). Otherwise, we check if the widget is a child
-   *  of the grab widget, and only remove the popup window if it
-   *  is not.
-   */
+    /* Ignore events sent out before we connected to the signal */
+    if (win->m_time >= ((GdkEventButton*)gdk_event)->time)
+        return FALSE;
+
+    /*  We don't ask for button press events on the grab widget, so
+     *  if an event is reported directly to the grab widget, it must
+     *  be on a window outside the application (and thus we remove
+     *  the popup window). Otherwise, we check if the widget is a child
+     *  of the grab widget, and only remove the popup window if it
+     *  is not. */
     if (child != widget)
     {
         while (child)
     if (child != widget)
     {
         while (child)
     if (g_isIdle)
         wxapp_install_idle_handler();
 
     if (g_isIdle)
         wxapp_install_idle_handler();
 
-    // This disables GTK's tab traversal
+    /* This disables GTK's tab traversal */
     g_signal_stop_emission_by_name (widget, "focus");
     return TRUE;
 }
     g_signal_stop_emission_by_name (widget, "focus");
     return TRUE;
 }
     g_signal_connect (m_widget, "focus",
                       G_CALLBACK (gtk_dialog_focus_callback), this);
 
     g_signal_connect (m_widget, "focus",
                       G_CALLBACK (gtk_dialog_focus_callback), this);
 
+    m_time = gtk_get_current_event_time();
+
     g_signal_connect (m_widget, "button_press_event",
                       G_CALLBACK (gtk_popup_button_press), this);
 
     g_signal_connect (m_widget, "button_press_event",
                       G_CALLBACK (gtk_popup_button_press), this);