X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmenu.c;h=a4f62f6c7301f87778dbf571dc3e36556a96911f;hb=36a437a70291c94b4c591df0cd99345f052a3e0c;hp=374aeec1fc59a7b951acaf8e7bfa5fb3709318d8;hpb=fd77a0a7b3f892925f203287b8b46c6ec9be94ea;p=chaz%2Fopenbox diff --git a/openbox/menu.c b/openbox/menu.c index 374aeec1..a4f62f6c 100644 --- a/openbox/menu.c +++ b/openbox/menu.c @@ -49,6 +49,7 @@ static GHashTable *menu_hash = NULL; static ObtXmlInst *menu_parse_inst; static ObMenuParseState menu_parse_state; static gboolean menu_can_hide = FALSE; +static guint menu_timeout_id = 0; static void menu_destroy_hash_value(ObMenu *self); static void parse_menu_item(xmlNodePtr node, gpointer data); @@ -437,6 +438,7 @@ void menu_free(ObMenu *menu) static gboolean menu_hide_delay_func(gpointer data) { menu_can_hide = TRUE; + menu_timeout_id = 0; return FALSE; /* no repeat */ } @@ -486,10 +488,11 @@ void menu_show(gchar *name, gint x, gint y, gboolean mouse, ObClient *client) menu_can_hide = TRUE; else { menu_can_hide = FALSE; - g_timeout_add_full(G_PRIORITY_DEFAULT, - config_menu_hide_delay, - menu_hide_delay_func, - NULL, NULL); + if (menu_timeout_id) g_source_remove(menu_timeout_id); + menu_timeout_id = g_timeout_add_full(G_PRIORITY_DEFAULT, + config_menu_hide_delay, + menu_hide_delay_func, + NULL, NULL); } } }