all repos — openbox @ cf397b0e60efb0b90ccd3add468bbf128e47e323

openbox fork - make it a bit more like ryudo

smarter picking of heads for client windows
Dana Jansens danakj@orodu.net
commit

cf397b0e60efb0b90ccd3add468bbf128e47e323

parent

f5f59cea71b42ac462a8d30122646b79462e6499

1 files changed, 15 insertions(+), 5 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -2906,15 +2906,25 @@

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)