diff --git a/src/ssd/ssd.c b/src/ssd/ssd.c index 6cb8ae13..f556b24d 100644 --- a/src/ssd/ssd.c +++ b/src/ssd/ssd.c @@ -169,16 +169,18 @@ ssd_create(struct view *view) void ssd_update_geometry(struct view *view) { - if (!view->ssd.tree || !view->scene_node) { + if (!view->scene_node) { return; } if (!view->ssd.enabled) { - if (view->ssd.tree->node.enabled) { + if (view->ssd.tree && view->ssd.tree->node.enabled) { wlr_scene_node_set_enabled(&view->ssd.tree->node, false); view->margin = ssd_thickness(view); } return; + } else if (!view->ssd.tree) { + ssd_create(view); } else if (!view->ssd.tree->node.enabled) { wlr_scene_node_set_enabled(&view->ssd.tree->node, true); view->margin = ssd_thickness(view); diff --git a/src/xdg.c b/src/xdg.c index 487a7b69..1d8815c3 100644 --- a/src/xdg.c +++ b/src/xdg.c @@ -303,11 +303,7 @@ xdg_toplevel_view_map(struct view *view) struct wlr_xdg_toplevel_requested *requested = &view->xdg_surface->toplevel->requested; foreign_toplevel_handle_create(view); - - view->ssd.enabled = has_ssd(view); - if (view->ssd.enabled) { - ssd_create(view); - } + view_set_decorations(view, has_ssd(view)); position_xdg_toplevel_view(view); if (!view->fullscreen && requested->fullscreen) { diff --git a/src/xwayland.c b/src/xwayland.c index b360b1c7..8bfa31a8 100644 --- a/src/xwayland.c +++ b/src/xwayland.c @@ -389,10 +389,7 @@ map(struct view *view) } if (!view->been_mapped) { - view->ssd.enabled = want_deco(view); - if (view->ssd.enabled) { - ssd_create(view); - } + view_set_decorations(view, want_deco(view)); if (!view->maximized && !view->fullscreen) { set_initial_position(view);