efl/src/lib/ecore_wl2
Derek Foreman ed60eddff5 ecore_wl2: Fix window drag mouse eventing
Summary:
When a CSD button interaction under wayland leads to a compositor action
like move or resize, we essentially "give back" that button press to the
compositor, and it never sends us a mouse up for it.

We need to internally fire a mouse up event to fix up state so the client
doesn't think the mouse is still down.  Until now we've been doing this
by setting a flag when we start a move/resize and checking it at next
pointer enter for the window.

This leads to unsolvable races and wacky bookkeeping, and runs afoul of
the fact that we're not actually guaranteed a pointer enter immediately
after a move completes.  There is absolutely no way at all on wayland to
know if a move or resize operation has completed.

So, let's just fire the mouse up immediately on start of interaction,
which is raceless.

This fixes a years old bug where dragging a window might leave a stuck
mouse up, and allow hilighting text without drag after the window drag
completes.  (elementary-test -to "text editor" with multiple windows open
exhibits this bug)
Depends on D6127

Reviewers: zmike, cedric

Reviewed By: zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6128
2018-05-08 13:26:46 -05:00
..
Ecore_Wl2.h ecore_wl2: Remove ecore_wl2_input_grab/ungrab 2018-05-08 13:26:42 -05:00
ecore_wl2.c ecore_wl2: Add new event for windows not displayed on any output 2018-01-30 17:09:51 -06:00
ecore_wl2_buffer.c ecore_wl2: Don't unmap buffers at unlock 2018-04-20 13:00:28 -05:00
ecore_wl2_display.c ecore_wl2: reduce wayland display flushes 2018-04-20 13:00:28 -05:00
ecore_wl2_dnd.c ecore wl2 - fix null checing of drag offer - coverity 2017-09-28 15:28:00 +09:00
ecore_wl2_input.c ecore_wl2: Fix window drag mouse eventing 2018-05-08 13:26:46 -05:00
ecore_wl2_output.c ecore_wl2: Add internal _ecore_wl2_output_find 2018-01-30 17:09:51 -06:00
ecore_wl2_private.h ecore_wl2: Fix window drag mouse eventing 2018-05-08 13:26:46 -05:00
ecore_wl2_subsurf.c wayland: Reduce number of unneccessary display flushes 2018-01-19 12:40:40 -06:00
ecore_wl2_surface.c ecore_wl2: Add ecore_wl2_surface_alpha_get query 2018-04-20 13:00:27 -05:00
ecore_wl2_surface_module_dmabuf.c ecore_wl2_dmabuf: Properly reconfigure on surface alpha change 2018-04-20 13:00:27 -05:00
ecore_wl2_window.c ecore_wl2: Fix window drag mouse eventing 2018-05-08 13:26:46 -05:00
window_v6.x ecore_wl2: handle configure_complete after handling configure 2018-04-17 11:12:27 -05:00