]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
more animation frames for iconifying, if your computer can do it
[chaz/openbox] / openbox / action.c
index c91ea3c727275355da4b1c21d1ddaf52dee66531..797552f69abd2c649704f496fcf29c5798ef2795 100644 (file)
@@ -48,19 +48,8 @@ inline void client_action_start(union ActionData *data)
 inline void client_action_end(union ActionData *data)
 {
     if (config_focus_follow)
-        if (data->any.context != OB_FRAME_CONTEXT_CLIENT) {
-            if (!data->any.button) {
-                grab_pointer(FALSE, FALSE, OB_CURSOR_NONE);
-            } else {
-                ObClient *c;
-
-                /* usually this is sorta redundant, but with a press action
-                   the enter event will come as a GrabNotify which is
-                   ignored, so this will handle that case */
-                if ((c = client_under_pointer()))
-                    event_enter_client(c);
-            }
-        }
+        if (data->any.context != OB_FRAME_CONTEXT_CLIENT && !data->any.button)
+            grab_pointer(FALSE, FALSE, OB_CURSOR_NONE);
 }
 
 typedef struct
@@ -1102,7 +1091,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 +1110,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
@@ -1266,9 +1263,9 @@ void action_raiselower(union ActionData *data)
 
             if (cit == c) break;
             if (client_normal(cit) == client_normal(c) &&
-                    cit->layer == c->layer &&
-                    cit->frame->visible &&
-                    !client_search_transient(c, cit))
+                cit->layer == c->layer &&
+                cit->frame->visible &&
+                !client_search_transient(c, cit))
             {
                 if (RECT_INTERSECTS_RECT(cit->frame->area, c->frame->area)) {
                     raise = TRUE;
@@ -1924,17 +1921,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.021649 seconds and 4 git commands to generate.