osd: prevent preview outlines to be above OSD

86c3597 raised server->menu_tree above layer shell surfaces, but it caused
preview outlines for window switcher to be placed above the OSD because
the preview outlines are placed just above server->menu_tree.

So this commit fixes it by placing server->osd_tree above server->menu.
This also prevents layer-shell surfaces from covering the OSD.

Before (higher-first):
- preview outlines (just above menu)
- menu
- layer-shell (top/overlay/popup)
- osd

After (higher-first):
- osd
- preview outlines (just above menu)
- menu
- layer-shell (top/overlay/popup)
This commit is contained in:
tokyo4j 2025-01-07 03:42:22 +09:00 committed by Johan Malm
parent 8d9bd2d747
commit 773bdc3823
2 changed files with 3 additions and 0 deletions

View file

@ -511,6 +511,7 @@ new_output_notify(struct wl_listener *listener, void *data)
* Set the z-positions to achieve the following order (from top to * Set the z-positions to achieve the following order (from top to
* bottom): * bottom):
* - session lock layer * - session lock layer
* - window switcher osd
* - compositor menu * - compositor menu
* - layer-shell popups * - layer-shell popups
* - overlay layer * - overlay layer
@ -525,6 +526,7 @@ new_output_notify(struct wl_listener *listener, void *data)
wlr_scene_node_raise_to_top(&output->layer_tree[3]->node); wlr_scene_node_raise_to_top(&output->layer_tree[3]->node);
wlr_scene_node_raise_to_top(&output->layer_popup_tree->node); wlr_scene_node_raise_to_top(&output->layer_popup_tree->node);
wlr_scene_node_raise_to_top(&server->menu_tree->node); wlr_scene_node_raise_to_top(&server->menu_tree->node);
wlr_scene_node_raise_to_top(&output->osd_tree->node);
wlr_scene_node_raise_to_top(&output->session_lock_tree->node); wlr_scene_node_raise_to_top(&output->session_lock_tree->node);
if (rc.auto_enable_outputs) { if (rc.auto_enable_outputs) {

View file

@ -561,6 +561,7 @@ server_init(struct server *server)
* | Type | Scene Tree | Per Output | Example * | Type | Scene Tree | Per Output | Example
* | ----------------- | ---------------- | ---------- | ------- * | ----------------- | ---------------- | ---------- | -------
* | ext-session | lock-screen | Yes | swaylock * | ext-session | lock-screen | Yes | swaylock
* | osd | osd_tree | Yes |
* | compositor-menu | menu_tree | No | root-menu * | compositor-menu | menu_tree | No | root-menu
* | layer-shell | layer-popups | Yes | * | layer-shell | layer-popups | Yes |
* | layer-shell | overlay-layer | Yes | * | layer-shell | overlay-layer | Yes |