kwin/autotests
Martin Gräßlin 2feea7837a Warp the xcb pointer whenever pointer leaves an X11 surface
Summary:
For Xwayland windows we observed that passing pointer focus to another
window does not trigger proper leave events on X. Which results in e.g.
tooltip windows to show after the pointer moved to a completely
different position on a completely different surface.

This is a bug in Xwayland which will be fixed in 1.19 (already fixed in
master). Given that there is a runtime version check. Although it's fixed
in Xwayland master it's worth to carry a workaround.

To circumvent this problem KWin warps the xcb pointer to 0/0 whever an
X window loses pointer focus. That way the X window gets a proper leave
through the X protocol.

This created a problem though: when giving focus back to the X window it
started to warp the pointer for maximized windows as KWin got pointer
motion events through the X11 event filter for positions on the window
decoration. These are passed into the screen edge filter which pushes
the pointer back and warps our Wayland pointer. To solve this problem
KWin no longer performs any actions for pointer motion in the X11 event
filter if not on X11. The event filter needs to be reworked and most of
it should be moved into the Platform API, if possible.

Test Plan:
Reproduced situations where one could see that pointer updates
don't trigger leave. E.g. going from a highlighted window to the decoration.

Reviewers: #kwin, #plasma_on_wayland, bshah

Subscribers: plasma-devel, kwin

Tags: #plasma_on_wayland, #kwin

Differential Revision: https://phabricator.kde.org/D2531
2016-08-24 13:12:06 +02:00
..
integration Warp the xcb pointer whenever pointer leaves an X11 surface 2016-08-24 13:12:06 +02:00
libinput [autotests/integration] Fix TestLibinputDevice::testName 2016-08-15 17:21:45 +02:00
libkwineffects [libkwineffects] Port getXServerVersion from X11 to xcb 2016-08-23 11:45:59 +02:00
libxrenderutils [libkwinxrenderutils] Clean up static blend picture before going down 2016-06-13 15:29:07 +02:00
tabbox Move tabbox/autotests to autotests/tabbox 2016-06-29 10:38:17 +02:00
abstract_client.h [autotests] Adjust to changes regarding AbstractClient 2015-05-08 12:43:47 +02:00
client.h [auto-tests] Add an initial test for Screens 2014-09-17 10:29:03 +02:00
CMakeLists.txt [autotests] Move libkwineffects/autotests to autotests/libkwineffects 2016-07-18 08:47:45 +02:00
fakeeffectplugin.cpp [kwin] Add a PluginEffectLoader 2014-03-28 14:04:54 +01:00
fakeeffectplugin.json PluginEffectLoader doesn't use KPluginTrader any more 2015-07-07 09:36:15 +02:00
fakeeffectplugin_version.cpp [kwin] Adapt to KPluginFactory change 2014-03-28 19:50:46 +00:00
fakeeffectplugin_version.json PluginEffectLoader doesn't use KPluginTrader any more 2015-07-07 09:36:15 +02:00
mock_abstract_client.cpp Add hint similar to autohide to raise/lower a window 2015-10-12 10:37:16 +01:00
mock_abstract_client.h Add hint similar to autohide to raise/lower a window 2015-10-12 10:37:16 +01:00
mock_client.cpp Add hint similar to autohide to raise/lower a window 2015-10-12 10:37:16 +01:00
mock_client.h # This is a combination of 2 commits. 2015-05-15 23:55:26 +02:00
mock_effectshandler.cpp [kwin] Introduce a new Effect Loading mechanism 2014-03-28 14:04:54 +01:00
mock_effectshandler.h Introduce an EffectsHandler::animationsSupported -> bool 2016-08-15 17:38:33 +02:00
mock_screens.cpp Warnings--: unused parameters 2015-06-12 17:17:21 +02:00
mock_screens.h add Screens::name(int screen); STUB but for XRandr 2015-05-15 23:55:27 +02:00
mock_workspace.cpp [autotests] Adjust to changes regarding AbstractClient 2015-05-08 12:43:47 +02:00
mock_workspace.h [autotests] Adjust to changes regarding AbstractClient 2015-05-08 12:43:47 +02:00
test_builtin_effectloader.cpp [effects] Drop the logout effect 2016-08-24 10:09:22 +02:00
test_client_machine.cpp Provide x11Connection as a property on the KWin::Application 2015-03-17 09:44:53 +01:00
test_plugin_effectloader.cpp [effects] Drop the logout effect 2016-08-24 10:09:22 +02:00
test_screen_edges.cpp [autotest] Remove workaround in ScreenEdgeTest with Qt 5.6.1 2016-04-26 15:51:16 +02:00
test_screen_paint_data.cpp
test_screens.cpp Port left over qDebug to qCDebug 2015-07-31 13:25:51 +02:00
test_scripted_effectloader.cpp [autotests] Use QTR_COMPARE instead of QTest::qWait in TestScriptedEffectLoader 2016-08-16 14:08:07 +02:00
test_virtual_desktops.cpp Update x11Time when a global shortcut is pressed 2015-02-25 08:15:53 +01:00
test_window_paint_data.cpp Remove the decoration opacity property 2014-08-25 17:25:04 +02:00
test_xcb_size_hints.cpp Provide x11Connection as a property on the KWin::Application 2015-03-17 09:44:53 +01:00
test_xcb_window.cpp Provide x11Connection as a property on the KWin::Application 2015-03-17 09:44:53 +01:00
test_xcb_wrapper.cpp tests test tests, not code 2015-08-27 22:20:16 +02:00
test_xrandr_screens.cpp Select also raw button press/release in XInput2 based polling 2016-08-15 16:06:30 +02:00
testutils.h
workspace.h [auto-tests] Add an initial test for Screens 2014-09-17 10:29:03 +02:00