src/osd.c: Integrate preview outline into OSD state

This commit is contained in:
Consolatis 2022-08-22 00:42:01 +02:00
parent 15a5b710db
commit ca3c83aafc
2 changed files with 6 additions and 7 deletions

View file

@ -202,8 +202,6 @@ struct server {
/* Tree for built in menu */
struct wlr_scene_tree *menu_tree;
struct multi_rect *osd_preview_outline;
/* Workspaces */
struct wl_list workspaces; /* struct workspace.link */
struct workspace *workspace_current;
@ -236,6 +234,7 @@ struct server {
bool preview_was_enabled;
struct wlr_scene_node *preview_node;
struct wlr_scene_node *preview_anchor;
struct multi_rect *preview_outline;
} osd_state;
struct theme *theme;

View file

@ -90,7 +90,7 @@ osd_update_preview_outlines(struct view *view)
{
/* Create / Update preview outline tree */
struct server *server = view->server;
struct multi_rect *rect = view->server->osd_preview_outline;
struct multi_rect *rect = view->server->osd_state.preview_outline;
if (!rect) {
int line_width = server->theme->osd_border_width;
float *colors[] = {
@ -100,7 +100,7 @@ osd_update_preview_outlines(struct view *view)
};
rect = multi_rect_create(&server->scene->tree, colors, line_width);
wlr_scene_node_place_above(&rect->tree->node, &server->menu_tree->node);
server->osd_preview_outline = rect;
server->osd_state.preview_outline = rect;
}
struct wlr_box geo = ssd_max_extents(view);
@ -120,10 +120,10 @@ osd_finish(struct server *server)
destroy_osd_nodes(output);
wlr_scene_node_set_enabled(&output->osd_tree->node, false);
}
if (server->osd_preview_outline) {
if (server->osd_state.preview_outline) {
/* Destroy the whole multi_rect so we can easily react to new themes */
wlr_scene_node_destroy(&server->osd_preview_outline->tree->node);
server->osd_preview_outline = NULL;
wlr_scene_node_destroy(&server->osd_state.preview_outline->tree->node);
server->osd_state.preview_outline = NULL;
}
}