From 893dbae4b1c0efa855498e4a8cd8ecfbb7f3d7ce Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Fri, 13 Jun 2014 22:29:24 +0200 Subject: [PATCH] =?utf8?q?Bugfix:=20don=E2=80=99t=20overwrite=20the=20wind?= =?utf8?q?ow=E2=80=99s=20geometry=20after=20restarting?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit fixes #1263 --- src/manage.c | 3 ++- testcases/t/230-floating-fullscreen-restart.t | 11 ++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/manage.c b/src/manage.c index dd103a9e..5ee6e829 100644 --- a/src/manage.c +++ b/src/manage.c @@ -429,7 +429,8 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki * window to be useful (smaller windows are usually overlays/toolbars/… * which are not managed by the wm anyways). We store the original geometry * here because it’s used for dock clients. */ - nc->geometry = (Rect){ geom->x, geom->y, geom->width, geom->height }; + if (nc->geometry.width == 0) + nc->geometry = (Rect){ geom->x, geom->y, geom->width, geom->height }; if (want_floating) { DLOG("geometry = %d x %d\n", nc->geometry.width, nc->geometry.height); diff --git a/testcases/t/230-floating-fullscreen-restart.t b/testcases/t/230-floating-fullscreen-restart.t index bf6afd33..e4d51e2e 100644 --- a/testcases/t/230-floating-fullscreen-restart.t +++ b/testcases/t/230-floating-fullscreen-restart.t @@ -14,7 +14,8 @@ # • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf # (unless you are already familiar with Perl) # -# Ensures floating windows don’t drop out of fullscreen mode when restarting. +# Ensures floating windows don’t drop out of fullscreen mode when restarting +# and that they keep their geometry. # Ticket: #1263 # Bug still in: 4.7.2-200-g570b572 use i3test i3_autostart => 0; @@ -34,12 +35,16 @@ my $window = open_window(wm_class => '__i3-test-window'); cmd 'fullscreen'; my ($nodes, $focus) = get_ws($tmp); -is($nodes->{floating_nodes}->[0]->{nodes}->[0]->{fullscreen_mode}, 1, 'floating window in fullscreen mode'); +my $floating_win = $nodes->{floating_nodes}->[0]->{nodes}->[0]; +is($floating_win->{fullscreen_mode}, 1, 'floating window in fullscreen mode'); +my $old_geometry = $floating_win->{geometry}; cmd 'restart'; ($nodes, $focus) = get_ws($tmp); -is($nodes->{floating_nodes}->[0]->{nodes}->[0]->{fullscreen_mode}, 1, 'floating window still in fullscreen mode'); +$floating_win = $nodes->{floating_nodes}->[0]->{nodes}->[0]; +is($floating_win->{fullscreen_mode}, 1, 'floating window still in fullscreen mode'); +is_deeply($floating_win->{geometry}, $old_geometry, 'floating window geometry still the same'); exit_gracefully($pid); -- 2.39.5