]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Fix crash on '[class="i3bar"] focus' (+test) (Thanks f8l)
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 26 Nov 2011 22:17:34 +0000 (22:17 +0000)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 26 Nov 2011 22:17:34 +0000 (22:17 +0000)
Fixes #575

src/cmdparse.y
testcases/t/182-regress-focus-dock.t [new file with mode: 0644]

index bf181c28c02c8f107db9562126eeba085861e455..d319bb3f0974e5ac0532be5e531f8201da3da510 100644 (file)
@@ -450,6 +450,10 @@ focus:
         int count = 0;
         TAILQ_FOREACH(current, &owindows, owindows) {
             Con *ws = con_get_workspace(current->con);
+            /* If no workspace could be found, this was a dock window.
+             * Just skip it, you cannot focus dock windows. */
+            if (!ws)
+                continue;
 
             /* If the container is not on the current workspace,
              * workspace_show() will switch to a different workspace and (if
diff --git a/testcases/t/182-regress-focus-dock.t b/testcases/t/182-regress-focus-dock.t
new file mode 100644 (file)
index 0000000..6212a9e
--- /dev/null
@@ -0,0 +1,21 @@
+#!perl
+# vim:ts=4:sw=4:expandtab
+#
+# Regression test: Focusing a dock window should just do nothing, not crash i3.
+# See ticket http://bugs.i3wm.org/575
+# Wrong behaviour manifested itself up to (including) commit
+# 340592a532b5259c3a3f575de5a9639fad4d1459
+#
+use i3test;
+
+fresh_workspace;
+
+my $window = open_window(
+    window_type => $x->atom(name => '_NET_WM_WINDOW_TYPE_DOCK'),
+);
+
+cmd '[title="' . $window->name . '"] focus';
+
+does_i3_live;
+
+done_testing;