all repos — openbox @ 5563e251c36a1fbda703cf4bc3c8c6ae543829bd

openbox fork - make it a bit more like ryudo

Merge branch 'backport' into work
Dana Jansens danakj@orodu.net
commit

5563e251c36a1fbda703cf4bc3c8c6ae543829bd

parent

e0c1978c516e3463ec3fdd66fba323fd514e2494

1 files changed, 11 insertions(+), 2 deletions(-)

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

@@ -910,6 +910,7 @@ gboolean rudel = rude, ruder = rude, rudet = rude, rudeb = rude;

gint fw, fh; Rect desired; guint i; + gboolean found_mon; RECT_SET(desired, *x, *y, w, h); frame_rect_to_frame(self->frame, &desired);

@@ -959,18 +960,26 @@ if (stationary_t && newbl.y > oldbl.y)

rudeb = TRUE; } + /* we iterate through every monitor that the window is at least partially + on, to make sure it is obeying the rules on them all + + if the window does not appear on any monitors, then use the first one + */ + found_mon = FALSE; for (i = 0; i < screen_num_monitors; ++i) { Rect *a; if (!screen_physical_area_monitor_contains(i, &desired)) { - if (i < screen_num_monitors - 1) + if (i < screen_num_monitors - 1 || found_mon) continue; /* the window is not inside any monitor! so just use the first one */ a = screen_area(self->desktop, 0, NULL); - } else + } else { + found_mon = TRUE; a = screen_area(self->desktop, SCREEN_AREA_ONE_MONITOR, &desired); + } /* This makes sure windows aren't entirely outside of the screen so you can't see them at all.