]> git.sur5r.net Git - i3/i3/blobdiff - testcases/t/525-i3bar-mouse-bindings.t
Add '--release' flag for bindsym in the bar block
[i3/i3] / testcases / t / 525-i3bar-mouse-bindings.t
index d3216d974cba8381ef7ed0ec59468ca40095f3e3..8755278508e0391563ee8f0ae96ab8db7ff12898 100644 (file)
@@ -30,6 +30,9 @@ bar {
     bindsym button3 focus left
     bindsym button4 focus right
     bindsym button5 focus left
+    bindsym --release button6 focus right
+    bindsym button7 focus left
+    bindsym button7 --release focus right
 }
 EOT
 use i3test::XTEST;
@@ -39,7 +42,7 @@ $i3->connect()->recv;
 my $ws = fresh_workspace;
 
 my $cv = AnyEvent->condvar;
-my $timer = AnyEvent->timer(1, 0, sub { $cv->send(0) });
+my $timer = AnyEvent->timer(after => 1, interval => 0, cb => sub { $cv->send(0) });
 $i3->subscribe({
         window => sub {
             my ($event) = @_;
@@ -87,8 +90,6 @@ diag('i3bar window = ' . $i3bar_window);
 my $left = open_window;
 my $right = open_window;
 sync_with_i3;
-my $con = $cv->recv;
-is($con->{window}, $right->{id}, 'focus is initially on the right container');
 
 sub focus_subtest {
     my ($subscribecb, $want, $msg) = @_;
@@ -144,4 +145,43 @@ subtest 'button 5 moves focus left', \&focus_subtest,
     [ $left->{id} ],
     'button 5 moves focus left';
 
+# Test --release flag with bar bindsym.
+# See issue: #3068.
+
+my $old_focus = get_focused($ws);
+subtest 'button 6 does not move focus while pressed', \&focus_subtest,
+    sub {
+        xtest_button_press(6, 3, 3);
+        xtest_sync_with($i3bar_window);
+    },
+    [],
+    'button 6 does not move focus while pressed';
+is(get_focused($ws), $old_focus, 'focus unchanged');
+
+subtest 'button 6 release moves focus right', \&focus_subtest,
+    sub {
+        xtest_button_release(6, 3, 3);
+        xtest_sync_with($i3bar_window);
+    },
+    [ $right->{id} ],
+    'button 6 release moves focus right';
+
+# Test same bindsym button with and without --release.
+
+subtest 'button 7 press moves focus left', \&focus_subtest,
+    sub {
+        xtest_button_press(7, 3, 3);
+        xtest_sync_with($i3bar_window);
+    },
+    [ $left->{id} ],
+    'button 7 press moves focus left';
+
+subtest 'button 7 release moves focus right', \&focus_subtest,
+    sub {
+        xtest_button_release(7, 3, 3);
+        xtest_sync_with($i3bar_window);
+    },
+    [ $right->{id} ],
+    'button 7 release moves focus right';
+
 done_testing;