]> git.sur5r.net Git - i3/i3/commitdiff
tests: move set_wm_class to X11::XCB::Window
authorMichael Stapelberg <michael@stapelberg.de>
Tue, 24 Sep 2013 19:53:48 +0000 (21:53 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 24 Sep 2013 19:56:52 +0000 (21:56 +0200)
This code was duplicated way too often for a long time :)

testcases/Makefile.PL
testcases/t/119-match.t
testcases/t/165-for_window.t
testcases/t/166-assign.t
testcases/t/173-regress-focus-assign.t
testcases/t/190-scratchpad-diff-ws.t
testcases/t/203-regress-assign-and-move.t
testcases/t/204-regress-scratchpad-move.t
testcases/t/208-regress-floating-criteria.t
testcases/t/211-regress-urgency-assign.t

index 28036d1fd390dae998e3de8548e240edcace0514..1a9b19cf26e85e4ff4dd6c1ad4fa12e0732fc176 100755 (executable)
@@ -9,7 +9,7 @@ WriteMakefile(
     PREREQ_PM => {
         'AnyEvent'     => 0,
         'AnyEvent::I3' => '0.14',
-        'X11::XCB'     => '0.03',
+        'X11::XCB'     => '0.09',
         'Inline'       => 0,
         'ExtUtils::PkgConfig' => 0,
         'Test::More'   => '0.94',
index 7ac622c72457777c6610a047532ce7abd1fa5b55..0aaeddd732ddfc676380cc451f0c2f28fd666fe3 100644 (file)
@@ -17,7 +17,6 @@
 # Tests all kinds of matching methods
 #
 use i3test;
-use X11::XCB qw(PROP_MODE_REPLACE);
 
 my $tmp = fresh_workspace;
 
@@ -61,39 +60,10 @@ is_num_children($tmp, 0, 'window killed');
 
 $tmp = fresh_workspace;
 
-# TODO: move to X11::XCB
-sub set_wm_class {
-    my ($id, $class, $instance) = @_;
-
-    # Add a _NET_WM_STRUT_PARTIAL hint
-    my $atomname = $x->atom(name => 'WM_CLASS');
-    my $atomtype = $x->atom(name => 'STRING');
-
-    $x->change_property(
-        PROP_MODE_REPLACE,
-        $id,
-        $atomname->id,
-        $atomtype->id,
-        8,
-        length($class) + length($instance) + 2,
-        "$instance\x00$class\x00"
-    );
-}
-
-sub open_special {
-    my %args = @_;
-    my $wm_class = delete($args{wm_class}) || 'special';
-
-    return open_window(
-        %args,
-        before_map => sub { set_wm_class($_->id, $wm_class, $wm_class) },
-    );
-}
-
-my $left = open_special(name => 'left');
+my $left = open_window(wm_class => 'special', name => 'left');
 ok($left->mapped, 'left window mapped');
 
-my $right = open_special(name => 'right');
+my $right = open_window(wm_class => 'special', name => 'right');
 ok($right->mapped, 'right window mapped');
 
 # two windows should be here
@@ -111,7 +81,7 @@ is_num_children($tmp, 1, 'one window still there');
 
 $tmp = fresh_workspace;
 
-$left = open_special(name => 'left', wm_class => 'special7');
+$left = open_window(name => 'left', wm_class => 'special7');
 ok($left->mapped, 'left window mapped');
 is_num_children($tmp, 1, 'window opened');
 
@@ -125,7 +95,7 @@ is_num_children($tmp, 0, 'window killed');
 
 $tmp = fresh_workspace;
 
-$left = open_special(name => 'ä 3', wm_class => 'special7');
+$left = open_window(name => 'ä 3', wm_class => 'special7');
 ok($left->mapped, 'left window mapped');
 is_num_children($tmp, 1, 'window opened');
 
index b01de91d3b398a2bc0afc4561178f5f407a256df..ada7c5c5bd67c98f79d2be3d088027d54f1c3016 100644 (file)
@@ -49,29 +49,9 @@ wait_for_unmap $window;
 cmp_ok(@content, '==', 0, 'no more nodes');
 diag('content = '. Dumper(\@content));
 
-
-# TODO: move this to X11::XCB::Window
-sub set_wm_class {
-    my ($id, $class, $instance) = @_;
-
-    # Add a _NET_WM_STRUT_PARTIAL hint
-    my $atomname = $x->atom(name => 'WM_CLASS');
-    my $atomtype = $x->atom(name => 'STRING');
-
-    $x->change_property(
-        PROP_MODE_REPLACE,
-        $id,
-        $atomname->id,
-        $atomtype->id,
-        8,
-        length($class) + length($instance) + 2,
-        "$instance\x00$class\x00"
-    );
-}
-
 $window = open_window(
     name => 'Borderless window',
-    before_map => sub { set_wm_class($_->id, 'borderless', 'borderless') },
+    wm_class => 'borderless',
 );
 
 @content = @{get_ws_content($tmp)};
@@ -190,7 +170,7 @@ $tmp = fresh_workspace;
 
 $window = open_window(
     name => 'usethis',
-    before_map => sub { set_wm_class($_->id, 'borderless', 'borderless') },
+    wm_class => 'borderless',
 );
 
 @content = @{get_ws_content($tmp)};
@@ -208,8 +188,7 @@ sync_with_i3;
 cmp_ok(@content, '==', 0, 'no nodes on this workspace now');
 
 $window->_create;
-
-set_wm_class($window->id, 'borderless', 'borderless');
+$window->wm_class('borderless');
 $window->name('notthis');
 $window->map;
 wait_for_map $window;
@@ -238,7 +217,8 @@ $tmp = fresh_workspace;
 
 $window = open_window(
     name => 'usethis',
-    before_map => sub { set_wm_class($_->id, 'bar', 'foo') },
+    wm_class => 'bar',
+    instance => 'foo',
 );
 
 @content = @{get_ws_content($tmp)};
@@ -264,7 +244,8 @@ $tmp = fresh_workspace;
 
 $window = open_window(
     name => 'usethis',
-    before_map => sub { set_wm_class($_->id, 'bar', 'foo') },
+    wm_class => 'bar',
+    instance => 'foo',
 );
 
 @content = @{get_ws_content($tmp)};
@@ -292,7 +273,8 @@ $tmp = fresh_workspace;
 
 $window = open_window(
     name => 'usethis',
-    before_map => sub { set_wm_class($_->id, 'bar', 'foo') },
+    wm_class => 'bar',
+    instance => 'foo',
 );
 
 @content = @{get_ws_content($tmp)};
index 1cee1ebbeeed77f0b498c5c5d3b23e5fb0e02905..355058dd01314feecd131b3d13e19a919c286368 100644 (file)
 # Tests if assignments work
 #
 use i3test i3_autostart => 0;
-use X11::XCB qw(PROP_MODE_REPLACE);
-
-# TODO: move to X11::XCB
-sub set_wm_class {
-    my ($id, $class, $instance) = @_;
-
-    # Add a _NET_WM_STRUT_PARTIAL hint
-    my $atomname = $x->atom(name => 'WM_CLASS');
-    my $atomtype = $x->atom(name => 'STRING');
-
-    $x->change_property(
-        PROP_MODE_REPLACE,
-        $id,
-        $atomname->id,
-        $atomtype->id,
-        8,
-        length($class) + length($instance) + 2,
-        "$instance\x00$class\x00"
-    );
-}
 
 sub open_special {
     my %args = @_;
-    my $wm_class = delete($args{wm_class}) || 'special';
     $args{name} //= 'special window';
 
     # We use dont_map because i3 will not map the window on the current
     # workspace. Thus, open_window would time out in wait_for_map (2 seconds).
     my $window = open_window(
         %args,
-        before_map => sub { set_wm_class($_->id, $wm_class, $wm_class) },
+        wm_class => 'special',
         dont_map => 1,
     );
     $window->map;
index aff3fe3a61c6f9711b26a5bf0c6056ae1f495f63..b010963b1231cc391535e561d2df37d421235669 100644 (file)
 # assigned to an invisible workspace
 #
 use i3test i3_autostart => 0;
-use X11::XCB qw(PROP_MODE_REPLACE);
-
-# TODO: move to X11::XCB
-sub set_wm_class {
-    my ($id, $class, $instance) = @_;
-
-    # Add a _NET_WM_STRUT_PARTIAL hint
-    my $atomname = $x->atom(name => 'WM_CLASS');
-    my $atomtype = $x->atom(name => 'STRING');
-
-    $x->change_property(
-        PROP_MODE_REPLACE,
-        $id,
-        $atomname->id,
-        $atomtype->id,
-        8,
-        length($class) + length($instance) + 2,
-        "$instance\x00$class\x00"
-    );
-}
 
 sub open_special {
     my %args = @_;
-    my $wm_class = delete($args{wm_class}) || 'special';
     $args{name} //= 'special window';
 
     # We use dont_map because i3 will not map the window on the current
     # workspace. Thus, open_window would time out in wait_for_map (2 seconds).
     my $window = open_window(
         %args,
-        before_map => sub { set_wm_class($_->id, $wm_class, $wm_class) },
+        wm_class => 'special',
         dont_map => 1,
     );
     $window->map;
index 5451f482272cd2e366dd758c9ae93b54535e2747..644aafb130943225d2e03af15b653ec237c97499 100644 (file)
 # window is shown on another workspace.
 #
 use i3test;
-use List::Util qw(first);
-use X11::XCB qw(:all);
 
 my $i3 = i3(get_socket_path());
 my $tmp = fresh_workspace;
 
-# TODO: move to X11::XCB
-sub set_wm_class {
-    my ($id, $class, $instance) = @_;
-
-    # Add a _NET_WM_STRUT_PARTIAL hint
-    my $atomname = $x->atom(name => 'WM_CLASS');
-    my $atomtype = $x->atom(name => 'STRING');
-
-    $x->change_property(
-        PROP_MODE_REPLACE,
-        $id,
-        $atomname->id,
-        $atomtype->id,
-        8,
-        length($class) + length($instance) + 2,
-        "$instance\x00$class\x00"
-    );
-}
-
-sub open_special {
-    my %args = @_;
-    my $wm_class = delete($args{wm_class}) || 'special';
-
-    return open_window(
-        %args,
-        before_map => sub { set_wm_class($_->id, $wm_class, $wm_class) },
-    );
-}
-
 my $win = open_window;
 
-my $scratch = open_special;
+my $scratch = open_window(wm_class => 'special');
 cmd '[class="special"] move scratchpad';
 
 is_num_children($tmp, 1, 'one window on current ws');
index bf3df91ee4f70b21a711dabec7895cf7fb5f24ab..51a1676f02b68fdff469ed200b167a81c82be052 100644 (file)
@@ -19,7 +19,6 @@
 # Ticket: #909
 # Bug still in: 4.4-69-g6856b23
 use i3test i3_autostart => 0;
-use X11::XCB qw(:all);
 
 my $config = <<EOT;
 # i3 config file (v4)
@@ -31,28 +30,10 @@ EOT
 
 my $pid = launch_with_config($config);
 
-sub set_wm_class {
-    my ($id, $class, $instance) = @_;
-
-    # Add a _NET_WM_STRUT_PARTIAL hint
-    my $atomname = $x->atom(name => 'WM_CLASS');
-    my $atomtype = $x->atom(name => 'STRING');
-
-    $x->change_property(
-        PROP_MODE_REPLACE,
-        $id,
-        $atomname->id,
-        $atomtype->id,
-        8,
-        length($class) + length($instance) + 2,
-        "$instance\x00$class\x00"
-    );
-}
-
 # We use dont_map because i3 will not map the window on the current
 # workspace. Thus, open_window would time out in wait_for_map (2 seconds).
 my $window = open_window(
-    before_map => sub { set_wm_class($_->id, '__i3-test-window', '__i3-test-window') },
+    wm_class => '__i3-test-window',
     dont_map => 1,
 );
 $window->map;
index 8c307aa5820921e925daeaa7e08e5303c2b099ee..0782da387d5eed868bbd2f4f14ace41f0673b3b0 100644 (file)
 # Ticket: #913
 # Bug still in: 4.4-97-gf767ac3
 use i3test;
-use X11::XCB qw(:all);
-
-# TODO: move to X11::XCB
-sub set_wm_class {
-    my ($id, $class, $instance) = @_;
-
-    # Add a _NET_WM_STRUT_PARTIAL hint
-    my $atomname = $x->atom(name => 'WM_CLASS');
-    my $atomtype = $x->atom(name => 'STRING');
-
-    $x->change_property(
-        PROP_MODE_REPLACE,
-        $id,
-        $atomname->id,
-        $atomtype->id,
-        8,
-        length($class) + length($instance) + 2,
-        "$instance\x00$class\x00"
-    );
-}
-
-sub open_special {
-    my %args = @_;
-    my $wm_class = delete($args{wm_class}) || 'special';
-
-    return open_window(
-        %args,
-        before_map => sub { set_wm_class($_->id, $wm_class, $wm_class) },
-    );
-}
 
 my $tmp = fresh_workspace;
 
 # Open a new window which we can identify later on based on its WM_CLASS.
-my $scratch = open_special;
+my $scratch = open_window(wm_class => 'special');
 
 my $tmp2 = fresh_workspace;
 
index 09a29fd8aca4015f27eedf6daf9c51e42a395dab..a13e0ad36695f758ef1f21ac8198e83dfab4a401 100644 (file)
@@ -19,7 +19,6 @@
 # Ticket: #1027
 # Bug still in: 4.5.1-90-g6582da9
 use i3test i3_autostart => 0;
-use X11::XCB qw(PROP_MODE_REPLACE);
 
 my $config = <<'EOT';
 # i3 config file (v4)
@@ -31,28 +30,9 @@ EOT
 
 my $pid = launch_with_config($config);
 
-# TODO: move this to X11::XCB::Window
-sub set_wm_class {
-    my ($id, $class, $instance) = @_;
-
-    # Add a _NET_WM_STRUT_PARTIAL hint
-    my $atomname = $x->atom(name => 'WM_CLASS');
-    my $atomtype = $x->atom(name => 'STRING');
-
-    $x->change_property(
-        PROP_MODE_REPLACE,
-        $id,
-        $atomname->id,
-        $atomtype->id,
-        8,
-        length($class) + length($instance) + 2,
-        "$instance\x00$class\x00"
-    );
-}
-
 my $window = open_window(
     name => 'Borderless window',
-    before_map => sub { set_wm_class($_->id, 'special', 'special') },
+    wm_class => 'special',
     dont_map => 1,
 );
 $window->map;
index a90703ee894b75efa2bcf6131dd79d0442ce03d7..57d8b434d116c41e96953379703beb992f7977a7 100644 (file)
 # Ticket: #1086
 # Bug still in: 4.6-62-g7098ef6
 use i3test i3_autostart => 0;
-use X11::XCB qw(:all);
-
-# TODO: move to X11::XCB
-sub set_wm_class {
-    my ($id, $class, $instance) = @_;
-
-    # Add a _NET_WM_STRUT_PARTIAL hint
-    my $atomname = $x->atom(name => 'WM_CLASS');
-    my $atomtype = $x->atom(name => 'STRING');
-
-    $x->change_property(
-        PROP_MODE_REPLACE,
-        $id,
-        $atomname->id,
-        $atomtype->id,
-        8,
-        length($class) + length($instance) + 2,
-        "$instance\x00$class\x00"
-    );
-}
 
 sub open_special {
     my %args = @_;
-    my $wm_class = delete($args{wm_class}) || 'special';
     $args{name} //= 'special window';
 
     # We use dont_map because i3 will not map the window on the current
     # workspace. Thus, open_window would time out in wait_for_map (2 seconds).
     my $window = open_window(
         %args,
-        before_map => sub { set_wm_class($_->id, $wm_class, $wm_class) },
+        wm_class => 'special',
         dont_map => 1,
     );
     $window->add_hint('urgency');