diff --git a/include/view.h b/include/view.h index 84eb217c..7c4a24d9 100644 --- a/include/view.h +++ b/include/view.h @@ -533,6 +533,7 @@ void view_toggle_maximize(struct view *view, enum view_axis axis); bool view_wants_decorations(struct view *view); void view_toggle_decorations(struct view *view); +void view_set_layer(struct view *view, enum view_layer layer); void view_toggle_always_on_top(struct view *view); void view_toggle_always_on_bottom(struct view *view); void view_toggle_visible_on_all_workspaces(struct view *view); diff --git a/src/view.c b/src/view.c index d6b79be2..cb82ab22 100644 --- a/src/view.c +++ b/src/view.c @@ -1537,17 +1537,24 @@ view_toggle_decorations(struct view *view) } } +void +view_set_layer(struct view *view, enum view_layer layer) +{ + assert(view); + view->layer = layer; + wlr_scene_node_reparent(&view->scene_tree->node, + view->workspace->view_trees[layer]); +} + void view_toggle_always_on_top(struct view *view) { assert(view); if (view->layer == VIEW_LAYER_ALWAYS_ON_TOP) { - view->layer = VIEW_LAYER_NORMAL; + view_set_layer(view, VIEW_LAYER_NORMAL); } else { - view->layer = VIEW_LAYER_ALWAYS_ON_TOP; + view_set_layer(view, VIEW_LAYER_ALWAYS_ON_TOP); } - wlr_scene_node_reparent(&view->scene_tree->node, - view->workspace->view_trees[view->layer]); } void @@ -1555,12 +1562,10 @@ view_toggle_always_on_bottom(struct view *view) { assert(view); if (view->layer == VIEW_LAYER_ALWAYS_ON_BOTTOM) { - view->layer = VIEW_LAYER_NORMAL; + view_set_layer(view, VIEW_LAYER_NORMAL); } else { - view->layer = VIEW_LAYER_ALWAYS_ON_BOTTOM; + view_set_layer(view, VIEW_LAYER_ALWAYS_ON_BOTTOM); } - wlr_scene_node_reparent(&view->scene_tree->node, - view->workspace->view_trees[view->layer]); } void