mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-23 06:59:44 -05:00
xwayland: fix xdg->xwayland drag-and-drop
As struct wlr_drag is destroyed on drop and in the process resets
the focus, a xwayland dnd listener would also reset xwm->drag_focus.
This prevents the xcb replies from being processed and also prevents
the transfer if a compositor would not additionally request new focus
in its wlr_drag destroy handler (which is something usually only done
when in a focus-follows-mouse setting).
This patch creates a new xwm->drop_focus pointer which is a copy of
xwm->drag_focus at drop time. The xcb reply handler and transfer
logic now use the new xwm->drop_focus for their authorization checks.
(cherry picked from commit 546c5d000d)
This commit is contained in:
parent
35ab453360
commit
0c437f6e98
4 changed files with 31 additions and 4 deletions
|
|
@ -2177,6 +2177,7 @@ struct wlr_xwm *xwm_create(struct wlr_xwayland *xwayland, int wm_fd) {
|
|||
wl_list_init(&xwm->pending_startup_ids);
|
||||
wl_list_init(&xwm->seat_drag_source_destroy.link);
|
||||
wl_list_init(&xwm->drag_focus_destroy.link);
|
||||
wl_list_init(&xwm->drop_focus_destroy.link);
|
||||
|
||||
xwm->ping_timeout = 10000;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue