RFR: 8280993: [XWayland] Popup is not closed on click outside of area controlled by XWayland
Alexander Zvegintsev
azvegint at openjdk.org
Fri May 5 12:34:12 UTC 2023
On Linux systems, we rely on XGrabPointer (X11 API) to capture mouse input and dismiss popup menus on mouse clicks outside the popup menu.
Unfortunately, on Linux systems using the [Wayland](https://wayland.freedesktop.org/) session this only works inside [XWayland(Wayland's X11 server implementation)](https://wayland.freedesktop.org/xserver.html).
This means if a user clicks on a part of the screen not controlled by XWayland (e.g. window decorations, other non X11 applications) the popup menu will not be hidden.
As a workaround, we can hide this menu when the parent popup menu window loses focus.
However, it does have its drawbacks, which should be described in the documentation.The focus does not change when clicking on the header of its own parent window or on non-focusable windows, .e.g., empty space in system dock, so in this case the popup menu is not hidden.
Third-party applications use a similar approach.
I also have doubts about the need to change the documentation, as I can't find where it is described that the popup menu should be hidden when clicked outside the menu.
CSR: https://bugs.openjdk.org/browse/JDK-8307529
-------------
Commit messages:
- doc changes
- actual fix
- Wayland detection
Changes: https://git.openjdk.org/jdk/pull/13830/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=13830&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8280993
Stats: 195 lines in 6 files changed: 181 ins; 0 del; 14 mod
Patch: https://git.openjdk.org/jdk/pull/13830.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/13830/head:pull/13830
PR: https://git.openjdk.org/jdk/pull/13830
More information about the client-libs-dev
mailing list