Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

xdg_popup.grab in combination with wl_data_device.start_drag can lead to visual artifacts and break popup logic #1194

Open
vyivel opened this issue Nov 1, 2023 · 0 comments

Comments

@vyivel
Copy link
Contributor

vyivel commented Nov 1, 2023

Tested in Anvil with 4f9480e

Client: https://gitlab.freedesktop.org/vyivel/randfall/-/blob/main/cases/xdg_popup_interactive_grab_with_dnd.c

Sending xdg_popup.grab followed by wl_data_device.start_drag (done by pressing the left mouse button on the toplevel surface) breaks the popup logic in the following way:

  1. The popup can't be dismissed anymore;
  2. As a result, keyboard events aren't sent to other clients as the keyboard grab can't be stopped;
  3. If another client tries to open a grabbing popup, it's killed with wl_surface@25: error 2: xdg_popup was not created on the topmost popup.
  • Side note: the error is sent to the incorrect resource, not_the_topmost_popup is an xdg_wm_base error.

Sending wl_data_device.start_drag followed by xdg_popup.grab (done by pressing the middle mouse button on the toplevel surface) makes the drag icon follow the cursor even after all buttons are released.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant