]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
when restoring from show-desktop mode because a window is going to be focused, then...
[chaz/openbox] / openbox / action.c
index c91ea3c727275355da4b1c21d1ddaf52dee66531..b54e888eec34a8e5d8679b7c43fc2ad433438768 100644 (file)
@@ -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
@@ -1924,17 +1932,17 @@ void action_toggle_dockautohide(union ActionData *data)
 
 void action_toggle_show_desktop(union ActionData *data)
 {
-    screen_show_desktop(!screen_showing_desktop);
+    screen_show_desktop(!screen_showing_desktop, TRUE);
 }
 
 void action_show_desktop(union ActionData *data)
 {
-    screen_show_desktop(TRUE);
+    screen_show_desktop(TRUE, TRUE);
 }
 
 void action_unshow_desktop(union ActionData *data)
 {
-    screen_show_desktop(FALSE);
+    screen_show_desktop(FALSE, TRUE);
 }
 
 void action_break_chroot(union ActionData *data)
This page took 0.021875 seconds and 4 git commands to generate.