GTK4 Wayland Protocol Error: XDG Popup Reposition
Steps to reproduce
- Launch an app using GTK4 from a Wayland compositor.
- Hover the cursor over a button or icon that should display a tool-tip.
Current behavior
The tool-tip does not appear and the app freezes for a few seconds (no xdg_wm_pong) or until clicking somewhere over the toplevel window.
Expected outcome
A tooltip should appear when hovering the icon/button and the app should not freeze.
Version information
It only seems to happen with apps linked to GTK4 (libgtk-4.so.1.1400.4 shipped with Fedora).
Tested apps:
- Nautilus v46.1.
- Gnome Maps v46.10.
- Gnome Contacts v46.0.
Distro: Fedora Linux 40 (Workstation Edition)
Additional information
As seen in the logs, the bug is caused because GTK4 triggers a reposition request before mapping the xdg_popup.
The xdg_popup::reposition request documentation explicitly says:
Reposition an already-mapped popup.
Some compositors may ignore the request if the popup is not mapped causing the client to never receive a repositioned or configure event and for instance to freeze.
The solution should be to attach a buffer and commit the popup surface (to map it) and then trigger the reposition request.