]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
focus... works...? i have all cases of mozilla working, with RevertToPointerRoot...
[chaz/openbox] / openbox / action.c
index 4cd751071037ded7b412df70d8d545a1bb44419e..6eb06298f7cec4dc8c99166f0ed673ba2ad33cea 100644 (file)
@@ -60,10 +60,14 @@ Action *action_from_string(char *name)
         a = action_new(action_toggle_shade);
     } else if (!g_ascii_strcasecmp(name, "toggleomnipresent")) {
         a = action_new(action_toggle_omnipresent);
-    } else if (!g_ascii_strcasecmp(name, "moverelative")) {
-        a = action_new(action_move_relative);
-    } else if (!g_ascii_strcasecmp(name, "resizerelative")) {
-        a = action_new(action_resize_relative);
+    } else if (!g_ascii_strcasecmp(name, "moverelativehorz")) {
+        a = action_new(action_move_relative_horz);
+    } else if (!g_ascii_strcasecmp(name, "moverelativevert")) {
+        a = action_new(action_move_relative_vert);
+    } else if (!g_ascii_strcasecmp(name, "resizerelativehorz")) {
+        a = action_new(action_resize_relative_horz);
+    } else if (!g_ascii_strcasecmp(name, "resizerelativevert")) {
+        a = action_new(action_resize_relative_vert);
     } else if (!g_ascii_strcasecmp(name, "maximizefull")) {
         a = action_new(action_maximize_full);
     } else if (!g_ascii_strcasecmp(name, "unmaximizefull")) {
@@ -231,26 +235,43 @@ void action_toggle_omnipresent(union ActionData *data)
     if (data->client.c)
         client_set_desktop(data->client.c,
                            data->client.c->desktop == DESKTOP_ALL ?
-                           screen_desktop : DESKTOP_ALL);
+                           screen_desktop : DESKTOP_ALL, FALSE);
 }
 
-void action_move_relative(union ActionData *data)
+void action_move_relative_horz(union ActionData *data)
 {
     Client *c = data->relative.c;
     if (c)
         client_configure(c, Corner_TopLeft,
-                         c->area.x + data->relative.dx,
-                         c->area.y + data->relative.dy,
+                         c->area.x + data->relative.delta, c->area.y,
                          c->area.width, c->area.height, TRUE, TRUE);
 }
 
-void action_resize_relative(union ActionData *data)
+void action_move_relative_vert(union ActionData *data)
+{
+    Client *c = data->relative.c;
+    if (c)
+        client_configure(c, Corner_TopLeft,
+                         c->area.x, c->area.y + data->relative.delta,
+                         c->area.width, c->area.height, TRUE, TRUE);
+}
+
+void action_resize_relative_horz(union ActionData *data)
 {
     Client *c = data->relative.c;
     if (c)
         client_configure(c, Corner_TopLeft, c->area.x, c->area.y,
-                         c->area.width + data->relative.dx,
-                         c->area.height + data->relative.dy, TRUE, TRUE);
+                         c->area.width + data->relative.delta,
+                         c->area.height, TRUE, TRUE);
+}
+
+void action_resize_relative_vert(union ActionData *data)
+{
+    Client *c = data->relative.c;
+    if (c)
+        client_configure(c, Corner_TopLeft, c->area.x, c->area.y,
+                         c->area.width, c->area.height + data->relative.delta,
+                         TRUE, TRUE);
 }
 
 void action_maximize_full(union ActionData *data)
@@ -315,7 +336,7 @@ void action_send_to_desktop(union ActionData *data)
     if (data->sendto.c)
         if (data->sendto.desktop < screen_num_desktops ||
             data->sendto.desktop == DESKTOP_ALL)
-            client_set_desktop(data->sendto.c, data->sendto.desktop);
+            client_set_desktop(data->sendto.c, data->sendto.desktop, TRUE);
 }
 
 void action_send_to_next_desktop(union ActionData *data)
@@ -329,7 +350,7 @@ void action_send_to_next_desktop(union ActionData *data)
         if (!data->sendtonextprev.wrap) return;
         d = 0;
     }
-    client_set_desktop(data->sendtonextprev.c, d);
+    client_set_desktop(data->sendtonextprev.c, d, data->sendtonextprev.follow);
     if (data->sendtonextprev.follow) screen_set_desktop(d);
 }
 
@@ -344,7 +365,7 @@ void action_send_to_previous_desktop(union ActionData *data)
         if (!data->sendtonextprev.wrap) return;
         d = screen_num_desktops - 1;
     }
-    client_set_desktop(data->sendtonextprev.c, d);
+    client_set_desktop(data->sendtonextprev.c, d, data->sendtonextprev.follow);
     if (data->sendtonextprev.follow) screen_set_desktop(d);
 }
 
@@ -571,13 +592,15 @@ void action_move(union ActionData *data)
 void action_resize(union ActionData *data)
 {
     Client *c = data->resize.c;
-    int w = data->resize.x - c->frame->size.left - c->frame->size.right;
-    int h = data->resize.y - c->frame->size.top - c->frame->size.bottom;
+    int w = data->resize.x;
+    int h = data->resize.y;
  
     if (!c || !client_normal(c)) return;
 
-    /* XXX window snapping/struts */
-
+    dispatch_resize(c, &w, &h, data->resize.corner);
+    
+    w -= c->frame->size.left + c->frame->size.right;
+    h -= c->frame->size.top + c->frame->size.bottom;
     client_configure(c, data->resize.corner, c->area.x, c->area.y, w, h,
                      TRUE, data->resize.final);
 }
This page took 0.025534 seconds and 4 git commands to generate.