summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-05 02:44:03 +0000
committerDana Jansens <danakj@orodu.net>2007-05-05 02:44:03 +0000
commit9389c7e6c80edc216173981a69eda525d6111547 (patch)
tree25f321e06db32f2365156b9bd7c19475edda7e4b
parent6d3b17488f22a0f02659ab05578059a1584e9486 (diff)
more hacks to avoid races
-rw-r--r--openbox/action.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/openbox/action.c b/openbox/action.c
index c91ea3c7..1af396a4 100644
--- a/openbox/action.c
+++ b/openbox/action.c
@@ -1102,7 +1102,8 @@ void action_run_list(GSList *acts, ObClient *c, ObFrameContext context,
(c && c->type == OB_CLIENT_TYPE_DESKTOP &&
context == OB_FRAME_CONTEXT_DESKTOP)) &&
(a->func == action_focus ||
- a->func == action_activate))
+ a->func == action_activate ||
+ a->func == action_showmenu))
{
/* XXX MORE UGLY HACK
actions from clicks on client windows are NOT queued.
@@ -1120,6 +1121,13 @@ void action_run_list(GSList *acts, ObClient *c, ObFrameContext context,
so, this is just for that bug, and it will only NOT queue it
if it is a focusing action that can be used with the mouse
pointer. ugh.
+
+ 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
+ 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
+ sending them the button press, then the result is
+ deterministic. yay.
*/
a->func(&a->data);
} else