don't queue focusing actions. so they don't hide the menu right away

This commit is contained in:
Dana Jansens 2007-05-27 05:07:17 +00:00
parent fe99440c16
commit 10002eaa27

View file

@ -1151,13 +1151,9 @@ void action_run_list(GSList *acts, ObClient *c, ObFrameContext context,
{ {
/* interactive actions are not queued */ /* interactive actions are not queued */
a->func(&a->data); a->func(&a->data);
} else if (c && } else if (a->func == action_focus ||
(context == OB_FRAME_CONTEXT_CLIENT || a->func == action_activate ||
(c->type == OB_CLIENT_TYPE_DESKTOP && a->func == action_showmenu)
context == OB_FRAME_CONTEXT_DESKTOP)) &&
(a->func == action_focus ||
a->func == action_activate ||
a->func == action_showmenu))
{ {
/* XXX MORE UGLY HACK /* XXX MORE UGLY HACK
actions from clicks on client windows are NOT queued. actions from clicks on client windows are NOT queued.
@ -1177,11 +1173,15 @@ void action_run_list(GSList *acts, ObClient *c, ObFrameContext context,
pointer. ugh. pointer. ugh.
also with the menus, there is a race going on. if the also with the menus, there is a race going on. if the
desktop wants to pop up a menu, and we do to, we send them desktop wants to pop up a menu, and we do too, we send them
the button before we pop up the menu, so they pop up their the button before we pop up the menu, so they pop up their
menu first. but not always. if we pop up our menu before menu first. but not always. if we pop up our menu before
sending them the button press, then the result is sending them the button press, then the result is
deterministic. yay. deterministic. yay.
XXX further more. focus actions are not queued at all,
because if you bind focus->showmenu, the menu will get
hidden to do the focusing
*/ */
a->func(&a->data); a->func(&a->data);
} else } else