mirror of
https://github.com/labwc/labwc.git
synced 2025-11-04 13:30:07 -05:00
decorations: refactor view_set_decorations
This commit is contained in:
parent
bab1be834d
commit
a0debda142
8 changed files with 88 additions and 51 deletions
79
src/view.c
79
src/view.c
|
|
@ -1223,25 +1223,14 @@ view_toggle_decorations(struct view *view)
|
|||
{
|
||||
assert(view);
|
||||
|
||||
/* Reject decoration toggles when shaded */
|
||||
if (view->shaded) {
|
||||
return;
|
||||
enum ssd_mode mode = view_get_ssd_mode(view);
|
||||
if (rc.ssd_keep_border && mode == LAB_SSD_MODE_FULL) {
|
||||
view_set_ssd_mode(view, LAB_SSD_MODE_BORDER);
|
||||
} else if (mode != LAB_SSD_MODE_NONE) {
|
||||
view_set_ssd_mode(view, LAB_SSD_MODE_NONE);
|
||||
} else {
|
||||
view_set_ssd_mode(view, LAB_SSD_MODE_FULL);
|
||||
}
|
||||
|
||||
if (rc.ssd_keep_border && view->ssd_enabled && view->ssd
|
||||
&& !view->ssd_titlebar_hidden) {
|
||||
/*
|
||||
* ssd_titlebar_hidden has to be set before calling
|
||||
* ssd_titlebar_hide() to make ssd_thickness() happy.
|
||||
*/
|
||||
view->ssd_titlebar_hidden = true;
|
||||
ssd_titlebar_hide(view->ssd);
|
||||
if (!view_is_floating(view)) {
|
||||
view_apply_special_geometry(view);
|
||||
}
|
||||
return;
|
||||
}
|
||||
view_set_decorations(view, !view->ssd_enabled);
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
@ -1323,26 +1312,46 @@ undecorate(struct view *view)
|
|||
view->ssd = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
view_set_decorations(struct view *view, bool decorations)
|
||||
enum ssd_mode
|
||||
view_get_ssd_mode(struct view *view)
|
||||
{
|
||||
assert(view);
|
||||
|
||||
if (view->ssd_enabled != decorations && !view->fullscreen) {
|
||||
/*
|
||||
* Set view->ssd_enabled first since it is referenced
|
||||
* within the call tree of ssd_create()
|
||||
*/
|
||||
view->ssd_enabled = decorations;
|
||||
if (decorations) {
|
||||
decorate(view);
|
||||
} else {
|
||||
undecorate(view);
|
||||
view->ssd_titlebar_hidden = false;
|
||||
}
|
||||
if (!view_is_floating(view)) {
|
||||
view_apply_special_geometry(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;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
view_set_ssd_mode(struct view *view, enum ssd_mode mode)
|
||||
{
|
||||
assert(view);
|
||||
|
||||
if (view->shaded || view->fullscreen
|
||||
|| mode == view_get_ssd_mode(view)) {
|
||||
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;
|
||||
|
||||
if (view->ssd_enabled) {
|
||||
decorate(view);
|
||||
ssd_set_titlebar(view->ssd, !view->ssd_titlebar_hidden);
|
||||
} else {
|
||||
undecorate(view);
|
||||
}
|
||||
|
||||
if (!view_is_floating(view)) {
|
||||
view_apply_special_geometry(view);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue