]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
fix iconify action to fallback focus correctly
[chaz/openbox] / openbox / action.c
index 81a9ef3e1703f40c80cb95887c10c6f471492da1..ef8052e717108747f5e19c1050049e46bcf7c609 100644 (file)
@@ -591,6 +591,11 @@ ActionString actionstrings[] =
         action_toggle_maximize_vert,
         setup_client_action
     },
+    {
+        "togglefullscreen",
+        action_toggle_fullscreen,
+        setup_client_action
+    },
     {
         "sendtodesktop",
         action_send_to_desktop,
@@ -1030,7 +1035,9 @@ void action_unfocus (union ActionData *data)
 
 void action_iconify(union ActionData *data)
 {
+    client_action_start(data);
     client_iconify(data->client.any.c, TRUE, TRUE);
+    client_action_end(data);
 }
 
 void action_raiselower(union ActionData *data)
@@ -1089,8 +1096,6 @@ void action_lower(union ActionData *data)
     client_action_start(data);
     stacking_lower(CLIENT_AS_WINDOW(data->client.any.c));
     client_action_end(data);
-
-    focus_order_to_bottom(data->client.any.c);
 }
 
 void action_close(union ActionData *data)
@@ -1236,6 +1241,14 @@ void action_toggle_maximize_vert(union ActionData *data)
     client_action_end(data);
 }
 
+void action_toggle_fullscreen(union ActionData *data)
+{
+    client_action_start(data);
+    client_fullscreen(data->client.any.c,
+                      !(data->client.any.c->fullscreen), TRUE);
+    client_action_end(data);
+}
+
 void action_send_to_desktop(union ActionData *data)
 {
     ObClient *c = data->sendto.any.c;
@@ -1333,25 +1346,40 @@ void action_toggle_decorations(union ActionData *data)
 
 static guint32 pick_corner(gint x, gint y, gint cx, gint cy, gint cw, gint ch)
 {
-    if ((cw / 3 < 1) || (x - cx > cw / 3 * 2)) {
-        if ((ch / 3 < 1) || (y - cy > ch / 3 * 2))
-            return prop_atoms.net_wm_moveresize_size_bottomright;
-        else if (y - cy < ch / 3)
-            return prop_atoms.net_wm_moveresize_size_topright;
-        else
-            return prop_atoms.net_wm_moveresize_size_right;
-    } else if (x - cx < cw / 3) {
-        if (y - cy > ch / 3 * 2)
-            return prop_atoms.net_wm_moveresize_size_bottomleft;
-        else if (y - cy < ch / 3)
-            return prop_atoms.net_wm_moveresize_size_topleft;
-        else
-            return prop_atoms.net_wm_moveresize_size_left;
+    if (config_resize_four_corners) {
+        if (x - cx > cw / 2) {
+            if (y - cy > ch / 2)
+                return prop_atoms.net_wm_moveresize_size_bottomright;
+            else
+                return prop_atoms.net_wm_moveresize_size_topright;
+        } else {
+            if (y - cy > ch / 2)
+                return prop_atoms.net_wm_moveresize_size_bottomleft;
+            else
+                return prop_atoms.net_wm_moveresize_size_topleft;
+        }
     } else {
-        if (y - cy > ch / 2)
-            return prop_atoms.net_wm_moveresize_size_bottom;
-        else
-            return prop_atoms.net_wm_moveresize_size_top;
+        if (x - cx > cw * 2 / 3) {
+            if (y - cy > ch * 2 / 3)
+                return prop_atoms.net_wm_moveresize_size_bottomright;
+            else if (y - cy < ch / 3)
+                return prop_atoms.net_wm_moveresize_size_topright;
+            else
+                return prop_atoms.net_wm_moveresize_size_right;
+        } else if (x - cx < cw / 3) {
+            if (y - cy > ch * 2 / 3)
+                return prop_atoms.net_wm_moveresize_size_bottomleft;
+            else if (y - cy < ch / 3)
+                return prop_atoms.net_wm_moveresize_size_topleft;
+            else
+                return prop_atoms.net_wm_moveresize_size_left;
+        } else
+            if (y - cy > ch * 2 / 3)
+                return prop_atoms.net_wm_moveresize_size_bottom;
+            else if (y - cy < ch / 3)
+                return prop_atoms.net_wm_moveresize_size_top;
+            else
+                return prop_atoms.net_wm_moveresize_move;
     }
 }
 
@@ -1413,7 +1441,7 @@ void action_cycle_windows(union ActionData *data)
        on us */
     event_halt_focus_delay();
 
-    focus_cycle(data->cycle.forward, data->cycle.linear,
+    focus_cycle(data->cycle.forward, data->cycle.linear, data->any.interactive,
                 data->cycle.dialog,
                 data->cycle.inter.final, data->cycle.inter.cancel);
 }
@@ -1425,6 +1453,7 @@ void action_directional_focus(union ActionData *data)
     event_halt_focus_delay();
 
     focus_directional_cycle(data->interdiraction.direction,
+                            data->any.interactive,
                             data->interdiraction.dialog,
                             data->interdiraction.inter.final,
                             data->interdiraction.inter.cancel);
@@ -1468,6 +1497,10 @@ void action_growtoedge(union ActionData *data)
     ObClient *c = data->diraction.any.c;
     Rect *a;
 
+    //FIXME growtoedge resizes shaded windows to 0 height
+    if (c->shaded)
+        return;
+
     a = screen_area(c->desktop);
     x = c->frame->area.x;
     y = c->frame->area.y;
This page took 0.02415 seconds and 4 git commands to generate.