From: Michael Stapelberg Date: Fri, 13 Jun 2014 20:29:24 +0000 (+0200) Subject: Bugfix: don’t overwrite the window’s geometry after restarting X-Git-Tag: 4.8~6 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=893dbae4b1c0efa855498e4a8cd8ecfbb7f3d7ce;p=i3%2Fi3 Bugfix: don’t overwrite the window’s geometry after restarting fixes #1263 --- 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);