]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Make level up a noop during fullscreen mode (+testcase) (Thanks dothebart)
authorMichael Stapelberg <michael@stapelberg.de>
Wed, 9 Mar 2011 17:36:45 +0000 (18:36 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Wed, 9 Mar 2011 17:37:05 +0000 (18:37 +0100)
Fixes #341

src/tree.c
testcases/t/57-regress-fullscreen-level-up.t [new file with mode: 0644]

index 2d09dd917b373c36560fc1f91a613d1ab8bcd4e4..a66e0f4946d2edde9c8f3ee28e09de71f894d3ca 100644 (file)
@@ -264,11 +264,17 @@ void tree_split(Con *con, orientation_t orientation) {
  *
  */
 void level_up() {
+    /* We cannot go up when we are in fullscreen mode at the moment, that would
+     * be totally not intuitive */
+    if (focused->fullscreen_mode != CF_NONE) {
+        LOG("Currently in fullscreen, not going up\n");
+        return;
+    }
     /* We can focus up to the workspace, but not any higher in the tree */
     if ((focused->parent->type != CT_CON &&
         focused->parent->type != CT_WORKSPACE) ||
         focused->type == CT_WORKSPACE) {
-        printf("cannot go up\n");
+        LOG("Cannot go up any further\n");
         return;
     }
     con_focus(focused->parent);
diff --git a/testcases/t/57-regress-fullscreen-level-up.t b/testcases/t/57-regress-fullscreen-level-up.t
new file mode 100644 (file)
index 0000000..124ebd4
--- /dev/null
@@ -0,0 +1,51 @@
+#!perl
+# vim:ts=4:sw=4:expandtab
+#
+# Regression test: level up should be a noop during fullscreen mode
+#
+use X11::XCB qw(:all);
+use Time::HiRes qw(sleep);
+use i3test;
+
+BEGIN {
+    use_ok('X11::XCB::Window');
+}
+
+my $x = X11::XCB::Connection->new;
+my $i3 = i3("/tmp/nestedcons");
+
+my $tmp = get_unused_workspace;
+cmd "workspace $tmp";
+
+#####################################################################
+# open a window, verify it’s not in fullscreen mode
+#####################################################################
+
+my $win = open_standard_window($x);
+
+my $nodes = get_ws_content $tmp;
+is(@$nodes, 1, 'exactly one client');
+is($nodes->[0]->{fullscreen_mode}, 0, 'client not fullscreen');
+
+#####################################################################
+# make it fullscreen
+#####################################################################
+
+cmd 'nop making fullscreen';
+cmd 'fullscreen';
+
+my $nodes = get_ws_content $tmp;
+is($nodes->[0]->{fullscreen_mode}, 1, 'client fullscreen now');
+
+#####################################################################
+# send level up, try to un-fullscreen
+#####################################################################
+cmd 'level up';
+cmd 'fullscreen';
+
+my $nodes = get_ws_content $tmp;
+is($nodes->[0]->{fullscreen_mode}, 0, 'client not fullscreen any longer');
+
+does_i3_live;
+
+done_testing;