RFR: 8280993: [XWayland] Popup is not closed on click outside of area controlled by XWayland

Alexander Zvegintsev azvegint at openjdk.org
Tue May 9 14:37:24 UTC 2023


On Mon, 8 May 2023 23:35:19 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:

>> 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
>
> src/java.desktop/share/classes/java/awt/PopupMenu.java line 46:
> 
>> 44:  * call {@code show} on that {@code PopupMenu}.
>> 45:  *
>> 46:  * @implNote On Linux systems using Wayland, the popup menu may not be dismissed
> 
> I guess the XWayland is affected, but implementation of the toolkit for Wayland will not have this issue?

It should, and this is another point about not changing the documentation.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/13830#discussion_r1188704947



More information about the client-libs-dev mailing list