]> git.sur5r.net Git - i3/i3/commitdiff
bugfix: Resize and center a scratchpad even when a criteria is used.
authorFranck Michea <franck.michea@gmail.com>
Wed, 10 Jul 2013 20:18:18 +0000 (22:18 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Thu, 11 Jul 2013 19:18:21 +0000 (21:18 +0200)
src/scratchpad.c
testcases/t/202-scratchpad-criteria.t

index d6c1a09e1d630e92eec364c125c9e4e2389a485e..ce3d9b9ba3c38b4b8c31605707f9805ad776400c 100644 (file)
@@ -175,6 +175,10 @@ void scratchpad_show(Con *con) {
             LOG("Use 'move scratchpad' to move a window to the scratchpad.\n");
             return;
         }
+    } else {
+        /* We used a criterion, so we need to do what follows (moving,
+         * resizing) on the floating parent. */
+        con = con_inside_floating(con);
     }
 
     /* 1: Move the window from __i3_scratch to the current workspace. */
index 5ba8bfdddcdbd5d74067df85ab87a16fa4e9518d..162b989abfd1f71bc5c8951050042ff0b1e8346c 100644 (file)
@@ -17,6 +17,8 @@
 # Verifies that using criteria to address scratchpad windows works.
 use i3test;
 
+my $i3 = i3(get_socket_path());
+
 #####################################################################
 # Verify that using scratchpad show with criteria works as expected:
 # - When matching a scratchpad window which is visible,
@@ -51,6 +53,22 @@ cmd '[title="scratch-match"] scratchpad show';
 my $scratch_focus = get_focused($tmp);
 isnt($scratch_focus, $old_focus, 'matching criteria works');
 
+# Check that the window was centered and resized too.
+my $tree = $i3->get_tree->recv;
+my $ws = get_ws($tmp);
+my $scratchrect = $ws->{floating_nodes}->[0]->{rect};
+my $output = $tree->{nodes}->[1];
+my $outputrect = $output->{rect};
+
+is($scratchrect->{width}, $outputrect->{width} * 0.5, 'scratch width is 50%');
+is($scratchrect->{height}, $outputrect->{height} * 0.75, 'scratch height is 75%');
+is($scratchrect->{x},
+   ($outputrect->{width} / 2) - ($scratchrect->{width} / 2),
+   'scratch window centered horizontally');
+is($scratchrect->{y},
+   ($outputrect->{height} / 2 ) - ($scratchrect->{height} / 2),
+   'scratch window centered vertically');
+
 cmd '[title="scratch-match"] scratchpad show';
 
 isnt(get_focused($tmp), $scratch_focus, 'matching criteria works');