author Ryan C. Gordon
Mon, 21 Aug 2017 00:42:06 -0400
changeset 11334 749cb40916f2
parent 10557 71d4148e32de
child 11526 d0748685683f
permissions -rw-r--r--
x11: specify event mask for buttons when grabbing pointer (thanks, Stas!).

This fixes a strange corner case (notes appended below), and should be
safe to do anyhow.

Fixes Bugzilla #3674.

"I did more tests.
It appears the bug only happens if there is
another window on the screen that has "always
on top" property. For me it is xawtv - it is
always opened in a screen corner. Closing
xawtv or removing "always on top" property
from it makes the problem to go away.
Plus, it doesn't appear like the buttons are
not delivered at all. It appears that instead
the button presses are delivered on some mouse
positions, but not delivered when you move the
mouse to other part of the window... So this is
really weird and is likely somewhere deep in the
Maybe somehow it happens that the cursor is
actually above the xawtv window, but, because
my app uses grab, it is not visible there, and
in that case the events are not delivered to
my app?
But with my patch the button events are
always delivered flawlessly, it seems.

Hmm, and that indeed seems to explain my problem:
if the mask is set properly and my app uses
grab, then, even if the mouse is above some
other window, the events would still be delivered
to the grabbing app, which is what actually wanted
because my app uses relative mouse mode, so it
doesn't know the pointer can cross some other window
(my app draws the pointer itself).
So my current theory is that my patch only enforces
the mouse grab, which otherwise can be tricked by
some other window preventing the button events
delivery (but motion events are still delivered
via xinput2, which makes it all look very obscure)."
     1 0afe0e38e02cf2048e93582f01c52fbb91d3c7bb release-1.2.7
     2 230b156829ed13b31134d96f689c917981f57b84 release-1.2.5
     3 27cab50ec9c746e886ce0f3fdaa0b0cdc55a594f release-1.2.11
     4 2fe3fbd2bff50165b3cad33bf40d70b3bb3c9fd0 release-1.2.3
     5 3c052d3bcc76c899dfd4846be76243a78e8c7180 release-1.2.4
     6 3c5eed71a3320962551af3b3dfbee0c99fcf0086 release-1.2.10
     7 4867f7f7dd3426d1dbbeef48b3f3b3aa19590cc4 release-1.2.12
     8 6e28dae59e3baf4447c83e833a8d2ac912536f5b release-1.2.1
     9 7c2589fb8d4df54c6faabd3faebd0c0e73f67879 release-1.2.13
    10 86de11faf082881ad9b73a1a1d78733ca07f8db8 release-1.2.6
    11 bb051fa871aa0b53ea57df56a446cec3bb85924c release-1.2.2
    12 cfcb2e1c36ebe9809577adf768b0ec53e8768af9 release-1.2.8
    13 e044e7c70a50a2f54d14ee20d0933e904e5853b6 release-1.2.9
    14 f14cf9d71233934811774f941d0de121d5f96ccf release-1.2.14
    15 39c22a953456f6c9e2c8993c8ff973824104102a pre-touch-removal
    16 ccf5fbfa2afabab429ad911308f362201a94d810 macosx_10_4_supported
    17 d6a8fa507a45d9de7258e51585eab3e45c415149 release-2.0.0
    18 a8bd63b33636715f2cf6e7d36ab7201acbd478fe release-2.0.1
    19 a8bd63b33636715f2cf6e7d36ab7201acbd478fe release-2.0.1
    20 715a01415ac9305b9f8ec72b99fcf8cc9dd64dde release-2.0.1
    21 715a01415ac9305b9f8ec72b99fcf8cc9dd64dde release-2.0.1
    22 9ec71e56071cc80eda6691a3f8719ed5395dfcfb release-2.0.1
    23 9ec71e56071cc80eda6691a3f8719ed5395dfcfb release-2.0.1
    24 0000000000000000000000000000000000000000 release-2.0.1
    25 0000000000000000000000000000000000000000 release-2.0.1
    26 b9663c77f5c95ebf05f3c18e80619caae8ae1460 release-2.0.1
    27 be2102f000d0d2d9bab75e9703a1d503d0f6bb33 release-2.0.2
    28 f285b9487756ff681f76c85644222c03a7bfa1c7 release-2.0.3
    29 f285b9487756ff681f76c85644222c03a7bfa1c7 release-2.0.3
    30 704a0bfecf754e4e1383f83c7d5118b00cae26ea release-2.0.3
    31 e12c387305129c847b3928a123300b113782fe3f release-2.0.4
    32 007dfe83abf81b1ff5df40186f65e8e64987b825 release-2.0.5