From c099381632ba37a81cce603204038cef6e13f024 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ingo=20B=C3=BCrk?= Date: Sun, 27 Dec 2015 19:03:31 -0500 Subject: [PATCH] Added test for #2097. fixes #2115 --- testcases/lib/i3test/XTEST.pm | 36 +++++++++++++++--- testcases/t/262-root-window-mouse-binding.t | 42 +++++++++++++++++++++ 2 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 testcases/t/262-root-window-mouse-binding.t diff --git a/testcases/lib/i3test/XTEST.pm b/testcases/lib/i3test/XTEST.pm index 065c8a35..9ec083b1 100644 --- a/testcases/lib/i3test/XTEST.pm +++ b/testcases/lib/i3test/XTEST.pm @@ -15,6 +15,8 @@ our @EXPORT = qw( set_xkb_group xtest_key_press xtest_key_release + xtest_button_press + xtest_button_release listen_for_binding start_binding_capture binding_events @@ -107,7 +109,7 @@ bool set_xkb_group(int group) { return true; } -bool xtest_key(int type, int detail) { +bool xtest_input(int type, int detail, int x, int y) { xcb_generic_error_t *err; xcb_void_cookie_t cookie; @@ -117,8 +119,8 @@ bool xtest_key(int type, int detail) { detail, /* detail */ XCB_CURRENT_TIME, /* time */ XCB_NONE, /* root */ - 0, /* rootX */ - 0, /* rootY */ + x, /* rootX */ + y, /* rootY */ XCB_NONE); /* deviceid */ if ((err = xcb_request_check(conn, cookie)) != NULL) { fprintf(stderr, "X error code %d\n", err->error_code); @@ -128,6 +130,10 @@ bool xtest_key(int type, int detail) { return true; } +bool xtest_key(int type, int detail) { + return xtest_input(type, detail, 0, 0); +} + bool xtest_key_press(int detail) { return xtest_key(XCB_KEY_PRESS, detail); } @@ -136,6 +142,14 @@ bool xtest_key_release(int detail) { return xtest_key(XCB_KEY_RELEASE, detail); } +bool xtest_button_press(int button, int x, int y) { + return xtest_input(XCB_BUTTON_PRESS, button, x, y); +} + +bool xtest_button_release(int button, int x, int y) { + return xtest_input(XCB_BUTTON_RELEASE, button, x, y); +} + END_OF_C_CODE sub import { @@ -240,14 +254,26 @@ Returns false when there was an X11 error changing the group, true otherwise. Sends a KeyPress event via XTEST, with the specified C<$detail>, i.e. key code. Use C to find key codes. -Returns false when there was an X11 error changing the group, true otherwise. +Returns false when there was an X11 error, true otherwise. =head2 xtest_key_release($detail) Sends a KeyRelease event via XTEST, with the specified C<$detail>, i.e. key code. Use C to find key codes. -Returns false when there was an X11 error changing the group, true otherwise. +Returns false when there was an X11 error, true otherwise. + +=head2 xtest_button_press($button, $x, $y) + +Sends a ButtonPress event via XTEST, with the specified C<$button>. + +Returns false when there was an X11 error, true otherwise. + +=head2 xtest_button_release($button, $x, $y) + +Sends a ButtonRelease event via XTEST, with the specified C<$button>. + +Returns false when there was an X11 error, true otherwise. =head1 AUTHOR diff --git a/testcases/t/262-root-window-mouse-binding.t b/testcases/t/262-root-window-mouse-binding.t new file mode 100644 index 00000000..c8fd89ef --- /dev/null +++ b/testcases/t/262-root-window-mouse-binding.t @@ -0,0 +1,42 @@ +#!perl +# vim:ts=4:sw=4:expandtab +# +# Please read the following documents before working on tests: +# • http://build.i3wm.org/docs/testsuite.html +# (or docs/testsuite) +# +# • http://build.i3wm.org/docs/lib-i3test.html +# (alternatively: perldoc ./testcases/lib/i3test.pm) +# +# • http://build.i3wm.org/docs/ipc.html +# (or docs/ipc) +# +# • http://onyxneon.com/books/modern_perl/modern_perl_a4.pdf +# (unless you are already familiar with Perl) +# +# Verifies that mouse bindings work on the root window if +# --whole-window is set. +# Ticket: #2115 +use i3test i3_autostart => 0; +use i3test::XTEST; + +my $config = <