X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmenu.c;h=6c346e85a995bedf4bb2ebf80e7ad26cac220e45;hb=5ff0d07aba5399e1c8eeb8064d1d800e78c4fe9b;hp=374aeec1fc59a7b951acaf8e7bfa5fb3709318d8;hpb=fd77a0a7b3f892925f203287b8b46c6ec9be94ea;p=chaz%2Fopenbox diff --git a/openbox/menu.c b/openbox/menu.c index 374aeec1..6c346e85 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); @@ -293,19 +294,7 @@ static void parse_menu_item(xmlNodePtr node, gpointer data) if (config_menu_show_icons && obt_xml_attr_string(node, "icon", &icon)) { - RrImage *ic; - - ic = RrImageCacheFindName(ob_rr_icons, icon); - if (ic) - RrImageRef(ic); - else { - ic = RrImageNew(ob_rr_icons); - if (!RrImageAddPictureName(ic, icon)) { - RrImageUnref(ic); /* no need to keep it around */ - ic = NULL; - } - } - e->data.normal.icon = ic; + e->data.normal.icon = RrImageNewFromName(ob_rr_icons, icon); if (e->data.normal.icon) e->data.normal.icon_alpha = 0xff; @@ -437,6 +426,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 +476,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); } } }