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
* bottom):
* - session lock layer
* - window switcher osd
* - compositor menu
* - layer-shell popups
* - 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_popup_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);
if (rc.auto_enable_outputs) {