]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
launch things on the desktop where you ran it.
[chaz/openbox] / openbox / action.c
index 097eaf8d165db736d3acea1b3a146c7c8cc5a85d..4fd86d302197dec171acf148c82ce05d2e2792be 100644 (file)
@@ -1109,6 +1109,9 @@ void action_execute(union ActionData *data)
                 env = sn_get_spawn_environment(program,
                                                data->execute.name,
                                                data->execute.icon_name,
+                                               /* launch it on the current
+                                                  desktop */
+                                               screen_desktop,
                                                data->execute.any.time);
                 if (!g_spawn_async(NULL, argv, env, G_SPAWN_SEARCH_PATH |
                                    G_SPAWN_DO_NOT_REAP_CHILD,
@@ -1149,8 +1152,7 @@ void action_activate(union ActionData *data)
            moving on us */
         event_halt_focus_delay();
 
-        client_activate(data->activate.any.c, data->activate.here, TRUE,
-                        data->activate.any.time);
+        client_activate(data->activate.any.c, data->activate.here, TRUE);
     }
 }
 
@@ -1164,14 +1166,15 @@ void action_focus(union ActionData *data)
            moving on us */
         event_halt_focus_delay();
 
-        client_focus(data->client.any.c);
+        if (client_validate(data->client.any.c))
+            client_focus(data->client.any.c);
     }
 }
 
 void action_unfocus (union ActionData *data)
 {
     if (data->client.any.c == focus_client)
-        focus_fallback(OB_FOCUS_FALLBACK_UNFOCUSING);
+        focus_fallback(FALSE);
 }
 
 void action_iconify(union ActionData *data)
@@ -1344,28 +1347,35 @@ void action_move_relative(union ActionData *data)
 void action_resize_relative(union ActionData *data)
 {
     ObClient *c = data->relative.any.c;
+    gint x, y, ow, w, oh, h, lw, lh;
+
     client_action_start(data);
-    client_move_resize(c,
-                  c->area.x - data->relative.deltaxl * c->size_inc.width,
-                  c->area.y - data->relative.deltayu * c->size_inc.height,
-                  c->area.width + data->relative.deltax  * c->size_inc.width
-                                + data->relative.deltaxl * c->size_inc.width,
-                  c->area.height + data->relative.deltay  * c->size_inc.height
-                                 + data->relative.deltayu * c->size_inc.height);
+
+    x = c->area.x;
+    y = c->area.y;
+    ow = c->area.width;
+    w = ow + data->relative.deltax * c->size_inc.width
+        + data->relative.deltaxl * c->size_inc.width;
+    oh = c->area.height;
+    h = oh + data->relative.deltay * c->size_inc.height
+        + data->relative.deltayu * c->size_inc.height;
+    
+    client_try_configure(c, OB_CORNER_TOPLEFT, &x, &y, &w, &h, &lw, &lh, TRUE);
+    client_move_resize(c, x + (ow - w), y + (oh - h), w, h);
     client_action_end(data);
 }
 
 void action_maximize_full(union ActionData *data)
 {
     client_action_start(data);
-    client_maximize(data->client.any.c, TRUE, 0, TRUE);
+    client_maximize(data->client.any.c, TRUE, 0);
     client_action_end(data);
 }
 
 void action_unmaximize_full(union ActionData *data)
 {
     client_action_start(data);
-    client_maximize(data->client.any.c, FALSE, 0, TRUE);
+    client_maximize(data->client.any.c, FALSE, 0);
     client_action_end(data);
 }
 
@@ -1375,21 +1385,21 @@ void action_toggle_maximize_full(union ActionData *data)
     client_maximize(data->client.any.c,
                     !(data->client.any.c->max_horz ||
                       data->client.any.c->max_vert),
-                    0, TRUE);
+                    0);
     client_action_end(data);
 }
 
 void action_maximize_horz(union ActionData *data)
 {
     client_action_start(data);
-    client_maximize(data->client.any.c, TRUE, 1, TRUE);
+    client_maximize(data->client.any.c, TRUE, 1);
     client_action_end(data);
 }
 
 void action_unmaximize_horz(union ActionData *data)
 {
     client_action_start(data);
-    client_maximize(data->client.any.c, FALSE, 1, TRUE);
+    client_maximize(data->client.any.c, FALSE, 1);
     client_action_end(data);
 }
 
@@ -1397,21 +1407,21 @@ void action_toggle_maximize_horz(union ActionData *data)
 {
     client_action_start(data);
     client_maximize(data->client.any.c,
-                    !data->client.any.c->max_horz, 1, TRUE);
+                    !data->client.any.c->max_horz, 1);
     client_action_end(data);
 }
 
 void action_maximize_vert(union ActionData *data)
 {
     client_action_start(data);
-    client_maximize(data->client.any.c, TRUE, 2, TRUE);
+    client_maximize(data->client.any.c, TRUE, 2);
     client_action_end(data);
 }
 
 void action_unmaximize_vert(union ActionData *data)
 {
     client_action_start(data);
-    client_maximize(data->client.any.c, FALSE, 2, TRUE);
+    client_maximize(data->client.any.c, FALSE, 2);
     client_action_end(data);
 }
 
@@ -1419,15 +1429,14 @@ void action_toggle_maximize_vert(union ActionData *data)
 {
     client_action_start(data);
     client_maximize(data->client.any.c,
-                    !data->client.any.c->max_vert, 2, TRUE);
+                    !data->client.any.c->max_vert, 2);
     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_fullscreen(data->client.any.c, !(data->client.any.c->fullscreen));
     client_action_end(data);
 }
 
@@ -1625,8 +1634,7 @@ void action_cycle_windows(union ActionData *data)
 
     focus_cycle(data->cycle.forward, data->cycle.linear, data->any.interactive,
                 data->cycle.dialog,
-                data->cycle.inter.final, data->cycle.inter.cancel,
-                data->cycle.inter.any.time);
+                data->cycle.inter.final, data->cycle.inter.cancel);
 }
 
 void action_directional_focus(union ActionData *data)
@@ -1639,8 +1647,7 @@ void action_directional_focus(union ActionData *data)
                             data->any.interactive,
                             data->interdiraction.dialog,
                             data->interdiraction.inter.final,
-                            data->interdiraction.inter.cancel,
-                            data->interdiraction.inter.any.time);
+                            data->interdiraction.inter.cancel);
 }
 
 void action_movetoedge(union ActionData *data)
This page took 0.024083 seconds and 4 git commands to generate.