Don't hog the user during the hideDelay
This commit is contained in:
parent
5d5714f01e
commit
194bb32cf6
2 changed files with 11 additions and 7 deletions
|
@ -1792,8 +1792,9 @@ static gboolean event_handle_menu_input(XEvent *ev)
|
|||
if (ev->type == ButtonRelease || ev->type == ButtonPress) {
|
||||
ObMenuEntryFrame *e;
|
||||
|
||||
if (menu_hide_delay_reached() &&
|
||||
(ev->xbutton.button < 4 || ev->xbutton.button > 5))
|
||||
if ((ev->xbutton.button < 4 || ev->xbutton.button > 5) &&
|
||||
((ev->type == ButtonRelease && menu_hide_delay_reached()) ||
|
||||
ev->type == ButtonPress))
|
||||
{
|
||||
if ((e = menu_entry_frame_under(ev->xbutton.x_root,
|
||||
ev->xbutton.y_root)))
|
||||
|
@ -1804,7 +1805,7 @@ static gboolean event_handle_menu_input(XEvent *ev)
|
|||
if (ev->type == ButtonRelease)
|
||||
menu_entry_frame_execute(e, ev->xbutton.state);
|
||||
}
|
||||
else if (ev->type == ButtonRelease)
|
||||
else
|
||||
menu_frame_hide_all();
|
||||
}
|
||||
ret = TRUE;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue