]> Dogcows Code - chaz/openbox/blobdiff - openbox/place.c
woa.. let you do mouse actions while in an interactive keyboard action, and let you...
[chaz/openbox] / openbox / place.c
index 5614ecf3e002d55f06109c30e13a3330503e9bef..8003270eb0e04f6afe4ee99cae683b96d2127224 100644 (file)
@@ -126,9 +126,9 @@ static gboolean place_random(ObClient *client, gint *x, gint *y)
     b = areas[i]->y + areas[i]->height - client->frame->area.height;
 
     if (r > l) *x = g_random_int_range(l, r + 1);
-    else       *x = 0;
+    else       *x = areas[i]->x;
     if (b > t) *y = g_random_int_range(t, b + 1);
-    else       *y = 0;
+    else       *y = areas[i]->y;
 
     g_free(areas);
 
@@ -282,7 +282,7 @@ static gboolean place_smart(ObClient *client, gint *x, gint *y,
 
             if (WINDOW_IS_CLIENT(it->data)) {
                 c = it->data;
-                if (c->fullscreen)
+                if (c->fullscreen || (c->max_vert && c->max_horz))
                     continue;
             } else
                 continue;
@@ -306,7 +306,7 @@ static gboolean place_smart(ObClient *client, gint *x, gint *y,
 
                 if (WINDOW_IS_CLIENT(it->data)) {
                     c = it->data;
-                    if (c->fullscreen)
+                    if (c->fullscreen || (c->max_vert && c->max_horz))
                         continue;
                 } else
                     continue;
@@ -489,6 +489,7 @@ gboolean place_client(ObClient *client, gint *x, gint *y,
          place_random(client, x, y))))
         g_assert_not_reached(); /* the last one better succeed */
     /* get where the client should be */
-    frame_frame_gravity(client->frame, x, y);
+    frame_frame_gravity(client->frame, x, y,
+                        client->area.width, client->area.height);
     return ret;
 }
This page took 0.02198 seconds and 4 git commands to generate.