fix: modal dialogs not receiving mouse clicks on Wayland

frame_buf_at() could not find WINGs dialog frame_bufs because they
have no tree wrapper (only a bare scene_buf in WL_LAYER_FLOATING).
After the walk-up stops at the level_tree bucket, Step 4 only checks
fb->tree, missing tree-less frame_bufs entirely.

Add Step 5: match tree-less frame_bufs whose scene_buf node is a
direct child of a level_tree bucket. This resolves clicks on WINGs
modal dialogs (Run dialog, info panels, etc.).
This commit is contained in:
lkn 2026-05-23 13:37:11 +02:00
parent 8fb4083416
commit 68d4301b9f
1 changed files with 8 additions and 1 deletions

View File

@ -3943,7 +3943,14 @@ frame_buf_at(int px, int py)
return fb; return fb;
} }
/* Step 5: topmost node was a client surface — not a WM frame. */ /* Step 5: match a tree-less frame_buf (WINGs dialog) whose scene_buf
* is a direct child of a level_tree bucket. */
wl_list_for_each(fb, &wl_state.frame_list, link) {
if (!fb->tree && fb->scene_buf && &fb->scene_buf->node == n)
return fb;
}
/* Step 6: topmost node was a client surface — not a WM frame. */
return NULL; return NULL;
} }