mirror of
https://github.com/labwc/labwc.git
synced 2025-11-05 13:29:58 -05:00
src/ssd: use view->ssd_titlebar_hidden for ssd_thickness calculations
Before this patch we were using the internal .enabled flag of the titlebar tree node. This failed due to ssd_thickness() not having view->ssd assigned when initially called. Instead of assigning view->ssd within ssd_create() we just always use the view boolean flag directly. This fixes an issue where a border-only view that has been snapped to an edge or region would have a gap in the size of the titlebar on top after a Reconfigure. Fixes #1083
This commit is contained in:
parent
e5d459aa0c
commit
e8ec8ea7ff
3 changed files with 17 additions and 13 deletions
|
|
@ -65,7 +65,6 @@ void ssd_set_active(struct ssd *ssd, bool active);
|
||||||
void ssd_update_title(struct ssd *ssd);
|
void ssd_update_title(struct ssd *ssd);
|
||||||
void ssd_update_geometry(struct ssd *ssd);
|
void ssd_update_geometry(struct ssd *ssd);
|
||||||
void ssd_destroy(struct ssd *ssd);
|
void ssd_destroy(struct ssd *ssd);
|
||||||
bool ssd_titlebar_is_hidden(struct ssd *ssd);
|
|
||||||
void ssd_titlebar_hide(struct ssd *ssd);
|
void ssd_titlebar_hide(struct ssd *ssd);
|
||||||
|
|
||||||
void ssd_enable_keybind_inhibit_indicator(struct ssd *ssd, bool enable);
|
void ssd_enable_keybind_inhibit_indicator(struct ssd *ssd, bool enable);
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,13 @@ ssd_thickness(struct view *view)
|
||||||
/*
|
/*
|
||||||
* Check preconditions for displaying SSD. Note that this
|
* Check preconditions for displaying SSD. Note that this
|
||||||
* needs to work even before ssd_create() has been called.
|
* needs to work even before ssd_create() has been called.
|
||||||
|
*
|
||||||
|
* For that reason we are not using the .enabled state of
|
||||||
|
* the titlebar node here but rather check for the view
|
||||||
|
* boolean. If we were to use the .enabled state this would
|
||||||
|
* cause issues on Reconfigure events with views which were
|
||||||
|
* 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_enabled || view->fullscreen) {
|
||||||
return (struct border){ 0 };
|
return (struct border){ 0 };
|
||||||
|
|
@ -30,7 +37,7 @@ ssd_thickness(struct view *view)
|
||||||
|
|
||||||
if (view->maximized) {
|
if (view->maximized) {
|
||||||
struct border thickness = { 0 };
|
struct border thickness = { 0 };
|
||||||
if (!ssd_titlebar_is_hidden(view->ssd)) {
|
if (!view->ssd_titlebar_hidden) {
|
||||||
thickness.top += theme->title_height;
|
thickness.top += theme->title_height;
|
||||||
}
|
}
|
||||||
return thickness;
|
return thickness;
|
||||||
|
|
@ -43,7 +50,7 @@ ssd_thickness(struct view *view)
|
||||||
.right = theme->border_width,
|
.right = theme->border_width,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (ssd_titlebar_is_hidden(view->ssd)) {
|
if (view->ssd_titlebar_hidden) {
|
||||||
thickness.top -= theme->title_height;
|
thickness.top -= theme->title_height;
|
||||||
}
|
}
|
||||||
return thickness;
|
return thickness;
|
||||||
|
|
@ -177,8 +184,8 @@ ssd_create(struct view *view, bool active)
|
||||||
ssd_extents_create(ssd);
|
ssd_extents_create(ssd);
|
||||||
ssd_border_create(ssd);
|
ssd_border_create(ssd);
|
||||||
ssd_titlebar_create(ssd);
|
ssd_titlebar_create(ssd);
|
||||||
if (rc.ssd_keep_border && view->ssd_titlebar_hidden) {
|
if (view->ssd_titlebar_hidden) {
|
||||||
/* Ensure we keep the old state when exiting fullscreen */
|
/* Ensure we keep the old state on Reconfigure or when exiting fullscreen */
|
||||||
ssd_titlebar_hide(ssd);
|
ssd_titlebar_hide(ssd);
|
||||||
}
|
}
|
||||||
ssd->margin = ssd_thickness(view);
|
ssd->margin = ssd_thickness(view);
|
||||||
|
|
@ -231,12 +238,6 @@ ssd_update_geometry(struct ssd *ssd)
|
||||||
ssd->state.geometry = current;
|
ssd->state.geometry = current;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
|
||||||
ssd_titlebar_is_hidden(struct ssd *ssd)
|
|
||||||
{
|
|
||||||
return ssd && !ssd->titlebar.tree->node.enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ssd_titlebar_hide(struct ssd *ssd)
|
ssd_titlebar_hide(struct ssd *ssd)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -740,9 +740,13 @@ view_toggle_decorations(struct view *view)
|
||||||
{
|
{
|
||||||
assert(view);
|
assert(view);
|
||||||
if (rc.ssd_keep_border && view->ssd_enabled && view->ssd
|
if (rc.ssd_keep_border && view->ssd_enabled && view->ssd
|
||||||
&& !ssd_titlebar_is_hidden(view->ssd)) {
|
&& !view->ssd_titlebar_hidden) {
|
||||||
ssd_titlebar_hide(view->ssd);
|
/*
|
||||||
|
* ssd_titlebar_hidden has to be set before calling
|
||||||
|
* ssd_titlebar_hide() to make ssd_thickness() happy.
|
||||||
|
*/
|
||||||
view->ssd_titlebar_hidden = true;
|
view->ssd_titlebar_hidden = true;
|
||||||
|
ssd_titlebar_hide(view->ssd);
|
||||||
if (!view_is_floating(view)) {
|
if (!view_is_floating(view)) {
|
||||||
view_apply_special_geometry(view);
|
view_apply_special_geometry(view);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue