From e69fcbb17bb3c88e2a2a916a16be1fcf4af9e8fc Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Fri, 13 Jun 2014 22:26:06 +0200 Subject: [PATCH] =?utf8?q?Bugfix:=20ensure=20floating=20windows=20don?= =?utf8?q?=E2=80=99t=20drop=20out=20of=20fullscreen=20when=20restarting?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit fixes #1263 --- src/manage.c | 5 +- testcases/t/230-floating-fullscreen-restart.t | 46 +++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 testcases/t/230-floating-fullscreen-restart.t diff --git a/src/manage.c b/src/manage.c index de4f6fd7..dd103a9e 100644 --- a/src/manage.c +++ b/src/manage.c @@ -328,8 +328,11 @@ void manage_window(xcb_window_t window, xcb_get_window_attributes_cookie_t cooki fs = con_get_fullscreen_con(croot, CF_GLOBAL); if (xcb_reply_contains_atom(state_reply, A__NET_WM_STATE_FULLSCREEN)) { + /* If this window is already fullscreen (after restarting!), skip + * toggling fullscreen, that would drop it out of fullscreen mode. */ + if (fs != nc) + con_toggle_fullscreen(nc, CF_OUTPUT); fs = NULL; - con_toggle_fullscreen(nc, CF_OUTPUT); } bool set_focus = false; diff --git a/testcases/t/230-floating-fullscreen-restart.t b/testcases/t/230-floating-fullscreen-restart.t new file mode 100644 index 00000000..bf6afd33 --- /dev/null +++ b/testcases/t/230-floating-fullscreen-restart.t @@ -0,0 +1,46 @@ +#!perl +# vim:ts=4:sw=4:expandtab +# +# Please read the following documents before working on tests: +# • http://build.i3wm.org/docs/testsuite.html +# (or docs/testsuite) +# +# • http://build.i3wm.org/docs/lib-i3test.html +# (alternatively: perldoc ./testcases/lib/i3test.pm) +# +# • http://build.i3wm.org/docs/ipc.html +# (or docs/ipc) +# +# • 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. +# Ticket: #1263 +# Bug still in: 4.7.2-200-g570b572 +use i3test i3_autostart => 0; + +my $config = < '__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'); + +cmd 'restart'; + +($nodes, $focus) = get_ws($tmp); +is($nodes->{floating_nodes}->[0]->{nodes}->[0]->{fullscreen_mode}, 1, 'floating window still in fullscreen mode'); + +exit_gracefully($pid); + +done_testing; -- 2.39.5