bool mapped;
bool been_mapped;
- bool ssd_enabled;
- bool ssd_titlebar_hidden;
+ enum lab_ssd_mode ssd_mode;
enum ssd_preference ssd_preference;
bool shaded;
bool minimized;
bool view_is_tiled_and_notify_tiled(struct view *view);
bool view_is_floating(struct view *view);
void view_move_to_workspace(struct view *view, struct workspace *workspace);
-enum lab_ssd_mode view_get_ssd_mode(struct view *view);
+bool view_titlebar_visible(struct view *view);
void view_set_ssd_mode(struct view *view, enum lab_ssd_mode mode);
void view_set_decorations(struct view *view, enum lab_ssd_mode mode, bool force_ssd);
void view_toggle_fullscreen(struct view *view);
* in border-only deco mode as view->ssd would only be set
* after ssd_create() returns.
*/
- if (!view->ssd_enabled || view->fullscreen) {
+ if (!view->ssd_mode || view->fullscreen) {
return (struct border){ 0 };
}
if (view->maximized == VIEW_AXIS_BOTH) {
struct border thickness = { 0 };
- if (!view->ssd_titlebar_hidden) {
+ if (view_titlebar_visible(view)) {
thickness.top += theme->titlebar_height;
}
return thickness;
.left = theme->border_width,
};
- if (view->ssd_titlebar_hidden) {
+ if (!view_titlebar_visible(view)) {
thickness.top -= theme->titlebar_height;
}
return thickness;
get_resizing_type(const struct ssd *ssd, struct wlr_cursor *cursor)
{
struct view *view = ssd ? ssd->view : NULL;
- if (!view || !cursor || !view->ssd_enabled || view->fullscreen) {
+ if (!view || !cursor || !view->ssd_mode || view->fullscreen) {
return LAB_SSD_NONE;
}
struct wlr_box view_box = view->current;
view_box.height = view_effective_height(view, /* use_pending */ false);
- if (!view->ssd_titlebar_hidden) {
+ if (view_titlebar_visible(view)) {
/* If the titlebar is visible, consider it part of the view */
int titlebar_height = view->server->theme->titlebar_height;
view_box.y -= titlebar_height;
*/
ssd_titlebar_create(ssd);
ssd_border_create(ssd);
- if (view->ssd_titlebar_hidden) {
+ if (!view_titlebar_visible(view)) {
/* Ensure we keep the old state on Reconfigure or when exiting fullscreen */
ssd_set_titlebar(ssd, false);
}
struct view_query *query = znew(*query);
query->window_type = -1;
query->maximized = VIEW_AXIS_INVALID;
+ query->decoration = LAB_SSD_MODE_INVALID;
return query;
}
}
}
- enum lab_ssd_mode decor = view_get_ssd_mode(view);
- if (query->decoration != LAB_SSD_MODE_INVALID && query->decoration != decor) {
+ if (query->decoration != LAB_SSD_MODE_INVALID
+ && query->decoration != view->ssd_mode) {
return false;
}
&natural.x, &natural.y);
}
- if (view->ssd_enabled) {
+ if (view->ssd_mode) {
struct border border = ssd_thickness(view);
box.x += border.left;
box.y += border.top;
assert(view);
if (force_ssd || view_wants_decorations(view)
- || mode < view_get_ssd_mode(view)) {
+ || mode < view->ssd_mode) {
view_set_ssd_mode(view, mode);
}
}
{
assert(view);
- enum lab_ssd_mode mode = view_get_ssd_mode(view);
- if (rc.ssd_keep_border && mode == LAB_SSD_MODE_FULL) {
+ if (rc.ssd_keep_border && view->ssd_mode == LAB_SSD_MODE_FULL) {
view_set_ssd_mode(view, LAB_SSD_MODE_BORDER);
- } else if (mode != LAB_SSD_MODE_NONE) {
+ } else if (view->ssd_mode != LAB_SSD_MODE_NONE) {
view_set_ssd_mode(view, LAB_SSD_MODE_NONE);
} else {
view_set_ssd_mode(view, LAB_SSD_MODE_FULL);
view->ssd = NULL;
}
-enum lab_ssd_mode
-view_get_ssd_mode(struct view *view)
+bool
+view_titlebar_visible(struct view *view)
{
- assert(view);
-
- if (!view->ssd_enabled) {
- return LAB_SSD_MODE_NONE;
- } else if (view->ssd_titlebar_hidden) {
- return LAB_SSD_MODE_BORDER;
- } else {
- return LAB_SSD_MODE_FULL;
- }
+ return view->ssd_mode == LAB_SSD_MODE_FULL;
}
void
assert(view);
if (view->shaded || view->fullscreen
- || mode == view_get_ssd_mode(view)) {
+ || mode == view->ssd_mode) {
return;
}
* Set these first since they are referenced
* within the call tree of ssd_create() and ssd_thickness()
*/
- view->ssd_enabled = mode != LAB_SSD_MODE_NONE;
- view->ssd_titlebar_hidden = mode != LAB_SSD_MODE_FULL;
+ view->ssd_mode = mode;
- if (view->ssd_enabled) {
+ if (mode) {
decorate(view);
- ssd_set_titlebar(view->ssd, !view->ssd_titlebar_hidden);
+ ssd_set_titlebar(view->ssd, view_titlebar_visible(view));
} else {
undecorate(view);
}
}
/* Hide decorations when going fullscreen */
- if (fullscreen && view->ssd_enabled) {
+ if (fullscreen && view->ssd_mode) {
undecorate(view);
}
wl_signal_emit_mutable(&view->events.fullscreened, NULL);
/* Re-show decorations when no longer fullscreen */
- if (!fullscreen && view->ssd_enabled) {
+ if (!fullscreen && view->ssd_mode) {
decorate(view);
}
view_reload_ssd(struct view *view)
{
assert(view);
- if (view->ssd_enabled && !view->fullscreen) {
+ if (view->ssd_mode && !view->fullscreen) {
undecorate(view);
decorate(view);
}
assert(view);
view->inhibits_keybinds = !view->inhibits_keybinds;
- if (view->ssd_enabled) {
+ if (view->ssd_mode) {
ssd_enable_keybind_inhibit_indicator(view->ssd,
view->inhibits_keybinds);
}
}
/* Views without a title-bar or SSD cannot be shaded */
- if (shaded && (!view->ssd || view->ssd_titlebar_hidden)) {
+ if (shaded && (!view->ssd || !view_titlebar_visible(view))) {
return;
}