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.
This commit is contained in:
ookami 2024-11-17 03:15:14 +08:00 committed by ookami
parent 909a2ddb5f
commit 822ce7b515

View file

@ -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;
}
}