From 7be5ece6636f7a4c800ab0c5dd6289b38db7b435 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Fri, 25 Jan 2013 15:47:43 +0100 Subject: [PATCH] Bugfix: fix coordinates of scratchpad windows on output changes (Thanks badboy) Previously, after reconfiguring monitors, scratchpad windows could still be focused but might be out of bounds for you to see. fixes #929 --- src/scratchpad.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/scratchpad.c b/src/scratchpad.c index 7b309095..c60b29eb 100644 --- a/src/scratchpad.c +++ b/src/scratchpad.c @@ -218,8 +218,24 @@ void scratchpad_fix_resolution(void) { new_height = _lcm(new_height, output->rect.height); } } + + Rect old_rect = __i3_output->rect; + DLOG("new width = %d, new height = %d\n", new_width, new_height); __i3_output->rect.width = new_width; __i3_output->rect.height = new_height; + + Rect new_rect = __i3_output->rect; + + if (memcmp(&old_rect, &new_rect, sizeof(Rect)) == 0) { + DLOG("Scratchpad size unchanged.\n"); + return; + } + + DLOG("Fixing coordinates of scratchpad windows\n"); + Con *con; + TAILQ_FOREACH(con, &(__i3_scratch->floating_head), floating_windows) { + floating_fix_coordinates(con, &old_rect, &new_rect); + } }