diff options
Diffstat (limited to 'sway/desktop/xdg_shell.c')
-rw-r--r-- | sway/desktop/xdg_shell.c | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c index 6d1ccdd7..d563edae 100644 --- a/sway/desktop/xdg_shell.c +++ b/sway/desktop/xdg_shell.c @@ -175,15 +175,6 @@ static bool wants_floating(struct sway_view *view) { || toplevel->parent; } -static bool has_client_side_decorations(struct sway_view *view) { - struct sway_xdg_shell_view *xdg_shell_view = - xdg_shell_view_from_view(view); - if (xdg_shell_view == NULL) { - return true; - } - return xdg_shell_view->deco_mode != WLR_SERVER_DECORATION_MANAGER_MODE_SERVER; -} - static void for_each_surface(struct sway_view *view, wlr_surface_iterator_func_t iterator, void *user_data) { if (xdg_shell_view_from_view(view) == NULL) { @@ -240,7 +231,6 @@ static const struct sway_view_impl view_impl = { .set_tiled = set_tiled, .set_fullscreen = set_fullscreen, .wants_floating = wants_floating, - .has_client_side_decorations = has_client_side_decorations, .for_each_surface = for_each_surface, .for_each_popup = for_each_popup, .close = _close, @@ -385,15 +375,13 @@ static void handle_map(struct wl_listener *listener, void *data) { view->natural_height = view->wlr_xdg_surface->surface->current.height; } + view_map(view, view->wlr_xdg_surface->surface); + struct sway_server_decoration *deco = decoration_from_surface(xdg_surface->surface); - if (deco != NULL) { - xdg_shell_view->deco_mode = deco->wlr_server_decoration->mode; - } else { - xdg_shell_view->deco_mode = WLR_SERVER_DECORATION_MANAGER_MODE_CLIENT; - } - - view_map(view, view->wlr_xdg_surface->surface); + bool csd = !deco || deco->wlr_server_decoration->mode == + WLR_SERVER_DECORATION_MANAGER_MODE_CLIENT; + view_set_csd_from_client(view, csd); if (xdg_surface->toplevel->client_pending.fullscreen) { container_set_fullscreen(view->container, true); |