mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
view: unify ssd_enabled and ssd_titlebar_hidden to ssd_mode
This commit is contained in:
parent
48ba23fc8d
commit
943f5751ee
4 changed files with 29 additions and 39 deletions
|
|
@ -36,10 +36,10 @@ enum lab_rotation {
|
|||
};
|
||||
|
||||
enum lab_ssd_mode {
|
||||
LAB_SSD_MODE_INVALID,
|
||||
LAB_SSD_MODE_NONE,
|
||||
LAB_SSD_MODE_NONE = 0,
|
||||
LAB_SSD_MODE_BORDER,
|
||||
LAB_SSD_MODE_FULL,
|
||||
LAB_SSD_MODE_INVALID,
|
||||
};
|
||||
|
||||
enum lab_tristate {
|
||||
|
|
|
|||
|
|
@ -170,8 +170,7 @@ struct view {
|
|||
|
||||
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;
|
||||
|
|
@ -534,7 +533,7 @@ bool view_is_tiled(struct view *view);
|
|||
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);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ ssd_thickness(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 };
|
||||
}
|
||||
|
||||
|
|
@ -40,7 +40,7 @@ ssd_thickness(struct view *view)
|
|||
|
||||
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;
|
||||
|
|
@ -53,7 +53,7 @@ ssd_thickness(struct view *view)
|
|||
.left = theme->border_width,
|
||||
};
|
||||
|
||||
if (view->ssd_titlebar_hidden) {
|
||||
if (!view_titlebar_visible(view)) {
|
||||
thickness.top -= theme->titlebar_height;
|
||||
}
|
||||
return thickness;
|
||||
|
|
@ -89,14 +89,14 @@ static enum ssd_part_type
|
|||
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;
|
||||
|
|
@ -250,7 +250,7 @@ ssd_create(struct view *view, bool active)
|
|||
*/
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
47
src/view.c
47
src/view.c
|
|
@ -80,6 +80,7 @@ view_query_create(void)
|
|||
struct view_query *query = znew(*query);
|
||||
query->window_type = -1;
|
||||
query->maximized = VIEW_AXIS_INVALID;
|
||||
query->decoration = LAB_SSD_MODE_INVALID;
|
||||
return query;
|
||||
}
|
||||
|
||||
|
|
@ -206,8 +207,8 @@ view_matches_query(struct view *view, struct view_query *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;
|
||||
}
|
||||
|
||||
|
|
@ -1316,7 +1317,7 @@ view_apply_maximized_geometry(struct view *view)
|
|||
&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;
|
||||
|
|
@ -1557,7 +1558,7 @@ view_set_decorations(struct view *view, enum lab_ssd_mode mode, bool force_ssd)
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -1567,10 +1568,9 @@ view_toggle_decorations(struct view *view)
|
|||
{
|
||||
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);
|
||||
|
|
@ -1657,18 +1657,10 @@ undecorate(struct view *view)
|
|||
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
|
||||
|
|
@ -1677,7 +1669,7 @@ view_set_ssd_mode(struct view *view, enum lab_ssd_mode mode)
|
|||
assert(view);
|
||||
|
||||
if (view->shaded || view->fullscreen
|
||||
|| mode == view_get_ssd_mode(view)) {
|
||||
|| mode == view->ssd_mode) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1685,12 +1677,11 @@ view_set_ssd_mode(struct view *view, enum lab_ssd_mode mode)
|
|||
* 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);
|
||||
}
|
||||
|
|
@ -1718,7 +1709,7 @@ set_fullscreen(struct view *view, bool fullscreen)
|
|||
}
|
||||
|
||||
/* Hide decorations when going fullscreen */
|
||||
if (fullscreen && view->ssd_enabled) {
|
||||
if (fullscreen && view->ssd_mode) {
|
||||
undecorate(view);
|
||||
}
|
||||
|
||||
|
|
@ -1730,7 +1721,7 @@ set_fullscreen(struct view *view, bool fullscreen)
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
@ -2393,7 +2384,7 @@ void
|
|||
view_reload_ssd(struct view *view)
|
||||
{
|
||||
assert(view);
|
||||
if (view->ssd_enabled && !view->fullscreen) {
|
||||
if (view->ssd_mode && !view->fullscreen) {
|
||||
undecorate(view);
|
||||
decorate(view);
|
||||
}
|
||||
|
|
@ -2416,7 +2407,7 @@ view_toggle_keybinds(struct view *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);
|
||||
}
|
||||
|
|
@ -2498,7 +2489,7 @@ view_set_shade(struct view *view, bool shaded)
|
|||
}
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue