From a6a6c9b6d9d47ef1ccbff5ac5d4fe17f9666f29f Mon Sep 17 00:00:00 2001 From: Tony Crisci Date: Fri, 14 Mar 2014 22:59:08 -0400 Subject: [PATCH] Bugfix: don't try to resize docks by command cmd_resize does not implement a method to resize dock clients. A command like `[instance=".*"] resize grow width 160 px or 16 ppt` when a dock client matched would crash i3. fixes #1201 --- src/commands.c | 6 ++++ testcases/t/222-regress-dock-resize.t | 42 +++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 testcases/t/222-regress-dock-resize.t diff --git a/src/commands.c b/src/commands.c index 32fdc7f1..f73f2bb3 100644 --- a/src/commands.c +++ b/src/commands.c @@ -779,6 +779,12 @@ void cmd_resize(I3_CMD, char *way, char *direction, char *resize_px, char *resiz owindow *current; TAILQ_FOREACH(current, &owindows, owindows) { + /* Don't handle dock windows (issue #1201) */ + if (current->con->window->dock) { + DLOG("This is a dock window. Not resizing (con = %p)\n)", current->con); + continue; + } + Con *floating_con; if ((floating_con = con_inside_floating(current->con))) { cmd_resize_floating(current_match, cmd_output, way, direction, floating_con, px); diff --git a/testcases/t/222-regress-dock-resize.t b/testcases/t/222-regress-dock-resize.t new file mode 100644 index 00000000..0e80a6aa --- /dev/null +++ b/testcases/t/222-regress-dock-resize.t @@ -0,0 +1,42 @@ +#!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) +# +# Test that i3 does not crash when a command is issued that would resize a dock +# client. +# Ticket: #1201 +# Bug still in: 4.7.2-107-g9b03be6 +use i3test i3_autostart => 0; + +my $config = <<'EOT'; +# i3 config file (v4) +font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +EOT + +my $pid = launch_with_config($config); + +my $i3 = i3(get_socket_path()); +$i3->connect()->recv; + +my $window = open_window( + wm_class => 'special', + window_type => $x->atom(name => '_NET_WM_WINDOW_TYPE_DOCK'), +); + +cmd('[class="special"] resize grow height 160 px or 16 ppt'); + +does_i3_live; + +done_testing;