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;
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue