From 822ce7b515d746f141b4b6b155f02fae0a5a52b8 Mon Sep 17 00:00:00 2001 From: ookami Date: Sun, 17 Nov 2024 03:15:14 +0800 Subject: [PATCH] Fix sway_session_lock_has_surface Before this commit, if the cursor is at screen center, and the lock is swaylock, the cursor would be at swaylock's subsurface(the indicator). Since it's not the lock surface, `handle_rebase` would refuse to rebase the cursor to there. Thereby the cursor enter event won't be sent to swaylock. This commit fix the issue. --- sway/lock.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sway/lock.c b/sway/lock.c index c8975c747..e6a97685f 100644 --- a/sway/lock.c +++ b/sway/lock.c @@ -335,8 +335,9 @@ void sway_session_lock_add_output(struct sway_session_lock *lock, bool sway_session_lock_has_surface(struct sway_session_lock *lock, struct wlr_surface *surface) { struct sway_session_lock_output *lock_output; + struct wlr_surface *root_surface = wlr_surface_get_root_surface(surface); wl_list_for_each(lock_output, &lock->outputs, link) { - if (lock_output->surface && lock_output->surface->surface == surface) { + if (lock_output->surface && lock_output->surface->surface == root_surface) { return true; } }