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