D5177: Initial support for popup window handling
Martin Gräßlin
noreply at phabricator.kde.org
Sat Mar 25 17:49:18 UTC 2017
graesslin created this revision.
Restricted Application added a project: KWin.
Restricted Application added subscribers: kwin, plasma-devel.
REVISION SUMMARY
So far KWin did not properly handle popup windows. That is when a popup
surface got created and a click outside the surface happened KWin did not
send out the popupDone Wayland event.
This change makes KWin aware of whether a surface is a popup and tracks
through a new PopupInputFilter whether there are popup windows. In case
there are popups the new filter waits for mouse press events and cancels
the popups if the press does not happen on any surface belonging to the
same client. To quote the relevant section of the Wayland documentation:
The popup grab continues until the window is destroyed or a mouse
button is pressed in any other client's window. A click in any of the
client's surfaces is reported as normal, however, clicks in other
clients' surfaces will be discarded and trigger the callback.
So far the support is still incomplete. Not yet implemented are:
- support xdg_shell popup windows
- verifying whether the popup is allowed to be a popup
- cancel the popup on more global interactions like screen lock or kwin effect
BUG: 366609
FIXED-IN: 5.10
TEST PLAN
Auto test and manual testing with QtWayland client
REPOSITORY
R108 KWin
BRANCH
popup-filter
REVISION DETAIL
https://phabricator.kde.org/D5177
AFFECTED FILES
CMakeLists.txt
autotests/integration/pointer_input.cpp
input.cpp
pointer_input.cpp
popup_input_filter.cpp
popup_input_filter.h
shell_client.cpp
shell_client.h
toplevel.h
To: graesslin, #plasma, #kwin
Cc: plasma-devel, kwin, progwolff, lesliezhai, ali-mohamed, hardening, jensreuterberg, abetts, sebas, apol
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20170325/0328c34e/attachment.html>
More information about the Plasma-devel
mailing list