]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkmenuitem.c
free the event that was returned to us by gtk_get_current_event
[~andy/gtk] / gtk / gtkmenuitem.c
index 3f6e3462fba92bd5987b121c8d1fbb4a5436f082..a42893cd4ecbdf7b70225cc41cde535ec723dd12 100644 (file)
@@ -545,6 +545,7 @@ gtk_real_menu_item_select (GtkItem *item)
                                            menu_item);
       else
        gtk_menu_item_select_timeout (menu_item);
+      if(event) gdk_event_free(event);
     }
   
   gtk_widget_set_state (GTK_WIDGET (menu_item), GTK_STATE_PRELIGHT);
@@ -577,6 +578,7 @@ gtk_real_menu_item_deselect (GtkItem *item)
       etime = event ? gdk_event_get_time (event) : GDK_CURRENT_TIME;
       if (etime > last_submenu_deselect_time)
        last_submenu_deselect_time = etime;
+      if(event) gdk_event_free(event);
     }
 
   gtk_widget_set_state (GTK_WIDGET (menu_item), GTK_STATE_NORMAL);
@@ -620,6 +622,8 @@ gtk_menu_item_select_timeout (gpointer data)
 {
   GtkMenuItem *menu_item;
 
+  GDK_THREADS_ENTER ();
+
   menu_item = GTK_MENU_ITEM (data);
   menu_item->timer = 0;
 
@@ -641,6 +645,8 @@ gtk_menu_item_select_timeout (gpointer data)
        gtk_menu_shell_select_item (submenu, submenu->children->data);
     }
 
+  GDK_THREADS_LEAVE ();
+
   return FALSE;
 }