Bugfix: don’t overwrite the window’s geometry after restarting

fixes #1263
This commit is contained in:
Michael Stapelberg 2014-06-13 22:29:24 +02:00
parent e69fcbb17b
commit 893dbae4b1
2 changed files with 10 additions and 4 deletions

View File

@ -429,6 +429,7 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki
* window to be useful (smaller windows are usually overlays/toolbars/ * window to be useful (smaller windows are usually overlays/toolbars/
* which are not managed by the wm anyways). We store the original geometry * which are not managed by the wm anyways). We store the original geometry
* here because its used for dock clients. */ * here because its used for dock clients. */
if (nc->geometry.width == 0)
nc->geometry = (Rect){ geom->x, geom->y, geom->width, geom->height }; nc->geometry = (Rect){ geom->x, geom->y, geom->width, geom->height };
if (want_floating) { if (want_floating) {

View File

@ -14,7 +14,8 @@
# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf # • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf
# (unless you are already familiar with Perl) # (unless you are already familiar with Perl)
# #
# Ensures floating windows dont drop out of fullscreen mode when restarting. # Ensures floating windows dont drop out of fullscreen mode when restarting
# and that they keep their geometry.
# Ticket: #1263 # Ticket: #1263
# Bug still in: 4.7.2-200-g570b572 # Bug still in: 4.7.2-200-g570b572
use i3test i3_autostart => 0; use i3test i3_autostart => 0;
@ -34,12 +35,16 @@ my $window = open_window(wm_class => '__i3-test-window');
cmd 'fullscreen'; cmd 'fullscreen';
my ($nodes, $focus) = get_ws($tmp); 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'; cmd 'restart';
($nodes, $focus) = get_ws($tmp); ($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); exit_gracefully($pid);