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:
parent
8fb4083416
commit
68d4301b9f
|
|
@ -3943,7 +3943,14 @@ frame_buf_at(int px, int py)
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue