struct border
ssd_thickness(struct view *view)
{
- if (!view->ssd_enabled) {
+ /*
+ * Check preconditions for displaying SSD. Note that this
+ * needs to work even before ssd_create() has been called.
+ */
+ if (!view->ssd_enabled || view->fullscreen) {
return (struct border){ 0 };
}
struct theme *theme = view->server->theme;
if (!view->maximized && !view->tiled) {
view_store_natural_geometry(view);
}
+ /* Hide decorations when going fullscreen */
+ if (view->ssd_enabled) {
+ ssd_destroy(view);
+ }
view->fullscreen = wlr_output;
view_apply_fullscreen_geometry(view, view->fullscreen);
} else {
- /* restore to normal */
+ view->fullscreen = false;
+ /* Restore non-fullscreen geometry */
if (view->maximized) {
view_apply_maximized_geometry(view);
} else if (view->tiled) {
} else {
view_apply_unmaximized_geometry(view);
}
- view->fullscreen = false;
+ /* Re-show decorations when no longer fullscreen */
+ if (view->ssd_enabled) {
+ ssd_create(view, view == view->server->focused_view);
+ }
}
/* Show fullscreen views above top-layer */
view_reload_ssd(struct view *view)
{
assert(view);
- if (view->ssd_enabled) {
+ if (view->ssd_enabled && !view->fullscreen) {
ssd_destroy(view);
ssd_create(view, view == view->server->focused_view);
}