kwin/autotests/integration
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
..
data/anim-data-delete-effect
effects Introduce an EffectsHandler::animationsSupported -> bool 2016-08-15 17:38:33 +02:00
helper
scripting Improve introspection into Scripting for KWin core/testing 2016-08-22 14:37:46 +02:00
activities_test.cpp Include setOnActivity in the test 2016-08-12 13:21:09 +01:00
CMakeLists.txt [autotests] Add a test case for pointer enter/leave of X windows 2016-08-23 09:15:05 +02:00
debug_console_test.cpp Add support for xdg-shell version 5 interface 2016-07-13 13:20:00 +02:00
decoration_input_test.cpp Add support for xdg-shell version 5 interface 2016-07-13 13:20:00 +02:00
desktop_window_x11_test.cpp Force windows of type desktop to be opaque 2016-08-10 15:10:22 +02:00
dont_crash_aurorae_destroy_deco.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
dont_crash_cancel_animation.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
dont_crash_empty_deco.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
dont_crash_glxgears.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
dont_crash_no_border.cpp Add support for xdg-shell version 5 interface 2016-07-13 13:20:00 +02:00
input_stacking_order.cpp Add support for xdg-shell version 5 interface 2016-07-13 13:20:00 +02:00
internal_window.cpp [autotests/integration] Split InternalWindowTest::testKeyboard into two test methods 2016-08-16 15:39:47 +02:00
kwin_wayland_test.cpp [autotests/integration] Unload effects before destroying Workspace 2016-07-04 14:37:35 +02:00
kwin_wayland_test.h [autotests/integration] Test case for screen locked with mod-only-shortcuts 2016-08-16 08:19:45 +02:00
lockscreen.cpp [autotest/intergration] Wait for pointer enter before simulating button press 2016-08-08 11:12:22 +02:00
maximize_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
modifier_only_shortcut_test.cpp Ensure modifier locks and latches don't trigger the mod only shortcut 2016-08-19 10:56:41 +02:00
move_resize_window_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
no_xdg_runtime_dir_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
plasma_surface_test.cpp Force windows of type desktop to be opaque 2016-08-10 15:10:22 +02:00
plasmawindow_test.cpp Expose window geometry to PlasmaWindow 2016-07-20 13:49:10 +02:00
platformcursor.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
pointer_input.cpp [wayland] Ensure that pointer enter event carries the correct coordinates 2016-08-04 11:13:52 +02:00
quick_tiling_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
scene_opengl_test.cpp Support restarting the OpenGL compositor on Wayland 2016-07-20 14:08:23 +02:00
scene_qpainter_test.cpp Handle restart of Compositor Scene correctly for Wayland client 2016-07-21 08:11:32 +02:00
screen_changes_test.cpp Announce output changes to Wayland for platforms not handling outputs 2016-07-20 13:53:02 +02:00
screenedge_client_show_test.cpp Emit windowShown and windowHidden from Client::internalKeep and ::internalHide 2016-07-14 11:11:49 +02:00
shade_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
shell_client_test.cpp Fix crash when unminizing a ShellClient 2016-08-18 10:30:27 +02:00
start_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
struts_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
test_helpers.cpp [autotests/integration] Add ScreenLockerWatcher to the Test::lockScreen and ::unlockScreen 2016-08-16 10:23:37 +02:00
touch_input_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
transient_no_input_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
transient_placement.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
xclipboardsync_test.cpp Handle situation of no XDG_RUNTIME_DIR gracefully 2016-07-13 10:00:46 +02:00
xwayland_input_test.cpp Warp the xcb pointer whenever pointer leaves an X11 surface 2016-08-24 13:12:06 +02:00