mirror of
https://github.com/labwc/labwc.git
synced 2025-11-04 13:30:07 -05:00
osd: prevent preview outlines from overlapping OSD in first output
Following code didn't consider multi-monitor setup: wlr_scene_node_raise_to_top(&server->menu_tree->node); wlr_scene_node_raise_to_top(&output->osd_tree->node); ...because when executed twice, server->menu_tree is raised above output->osd_tree for the first output. This resulted in a scene tree like (higher to lower): - output->osd_tree (for 2nd output) - output->server->osd_state.preview_outline (placed just above menu_tree) - sever->menu_tree - output->osd_tree (for 1st output) So the previous outline for window switcher is placed above the OSD in the first output.
This commit is contained in:
parent
bf02598098
commit
fa6bffa6c6
2 changed files with 8 additions and 11 deletions
14
src/output.c
14
src/output.c
|
|
@ -512,20 +512,22 @@ new_output_notify(struct wl_listener *listener, void *data)
|
||||||
* bottom):
|
* bottom):
|
||||||
* - session lock layer
|
* - session lock layer
|
||||||
* - window switcher osd
|
* - window switcher osd
|
||||||
* - compositor menu
|
* - (compositor menu)
|
||||||
* - layer-shell popups
|
* - layer-shell popups
|
||||||
* - overlay layer
|
* - overlay layer
|
||||||
* - top layer
|
* - top layer
|
||||||
* - views
|
* - (views)
|
||||||
* - bottom layer
|
* - bottom layer
|
||||||
* - background layer
|
* - background layer
|
||||||
*/
|
*/
|
||||||
wlr_scene_node_lower_to_bottom(&output->layer_tree[1]->node);
|
wlr_scene_node_lower_to_bottom(&output->layer_tree[1]->node);
|
||||||
wlr_scene_node_lower_to_bottom(&output->layer_tree[0]->node);
|
wlr_scene_node_lower_to_bottom(&output->layer_tree[0]->node);
|
||||||
wlr_scene_node_raise_to_top(&output->layer_tree[2]->node);
|
|
||||||
wlr_scene_node_raise_to_top(&output->layer_tree[3]->node);
|
struct wlr_scene_node *menu_node = &server->menu_tree->node;
|
||||||
wlr_scene_node_raise_to_top(&output->layer_popup_tree->node);
|
wlr_scene_node_place_below(&output->layer_tree[2]->node, menu_node);
|
||||||
wlr_scene_node_raise_to_top(&server->menu_tree->node);
|
wlr_scene_node_place_below(&output->layer_tree[3]->node, menu_node);
|
||||||
|
wlr_scene_node_place_below(&output->layer_popup_tree->node, menu_node);
|
||||||
|
|
||||||
wlr_scene_node_raise_to_top(&output->osd_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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -580,11 +580,6 @@ server_init(struct server *server)
|
||||||
#if HAVE_XWAYLAND
|
#if HAVE_XWAYLAND
|
||||||
server->unmanaged_tree = wlr_scene_tree_create(&server->scene->tree);
|
server->unmanaged_tree = wlr_scene_tree_create(&server->scene->tree);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* menu_tree is moved to top in new_output_notify() when layer-shell
|
|
||||||
* layers are positioned
|
|
||||||
*/
|
|
||||||
server->menu_tree = wlr_scene_tree_create(&server->scene->tree);
|
server->menu_tree = wlr_scene_tree_create(&server->scene->tree);
|
||||||
|
|
||||||
workspaces_init(server);
|
workspaces_init(server);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue