]> Dogcows Code - chaz/openbox/commitdiff
smarter picking of heads for client windows
authorDana Jansens <danakj@orodu.net>
Sat, 11 Oct 2003 08:24:49 +0000 (08:24 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 11 Oct 2003 08:24:49 +0000 (08:24 +0000)
openbox/client.c

index 095eded331012cf36f3f0811a3289ac3ecc1211c..fab5328d2b712a40fd85354974d5f40db920c5e8 100644 (file)
@@ -2906,15 +2906,25 @@ void client_set_undecorated(ObClient *self, gboolean undecorated)
 guint client_monitor(ObClient *self)
 {
     guint i;
+    guint most = 0;
+    guint mostv = 0;
 
     for (i = 0; i < screen_num_monitors; ++i) {
         Rect *area = screen_physical_area_monitor(i);
-        if (RECT_INTERSECTS_RECT(*area, self->frame->area))
-            break;
+        if (RECT_INTERSECTS_RECT(*area, self->frame->area)) {
+            Rect r;
+            guint v;
+
+            RECT_SET_INTERSECTION(r, *area, self->frame->area);
+            v = r.width * r.height;
+
+            if (v > mostv) {
+                mostv = v;
+                most = i;
+            }
+        }
     }
-    if (i == screen_num_monitors) i = 0;
-    g_assert(i < screen_num_monitors);
-    return i;
+    return most;
 }
 
 ObClient *client_search_top_transient(ObClient *self)
This page took 0.028179 seconds and 4 git commands to generate.