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_geometry(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_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
|
||||
* 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) {
|
||||
return (struct border){ 0 };
|
||||
|
|
@ -30,7 +37,7 @@ ssd_thickness(struct view *view)
|
|||
|
||||
if (view->maximized) {
|
||||
struct border thickness = { 0 };
|
||||
if (!ssd_titlebar_is_hidden(view->ssd)) {
|
||||
if (!view->ssd_titlebar_hidden) {
|
||||
thickness.top += theme->title_height;
|
||||
}
|
||||
return thickness;
|
||||
|
|
@ -43,7 +50,7 @@ ssd_thickness(struct view *view)
|
|||
.right = theme->border_width,
|
||||
};
|
||||
|
||||
if (ssd_titlebar_is_hidden(view->ssd)) {
|
||||
if (view->ssd_titlebar_hidden) {
|
||||
thickness.top -= theme->title_height;
|
||||
}
|
||||
return thickness;
|
||||
|
|
@ -177,8 +184,8 @@ ssd_create(struct view *view, bool active)
|
|||
ssd_extents_create(ssd);
|
||||
ssd_border_create(ssd);
|
||||
ssd_titlebar_create(ssd);
|
||||
if (rc.ssd_keep_border && view->ssd_titlebar_hidden) {
|
||||
/* Ensure we keep the old state when exiting fullscreen */
|
||||
if (view->ssd_titlebar_hidden) {
|
||||
/* Ensure we keep the old state on Reconfigure or when exiting fullscreen */
|
||||
ssd_titlebar_hide(ssd);
|
||||
}
|
||||
ssd->margin = ssd_thickness(view);
|
||||
|
|
@ -231,12 +238,6 @@ ssd_update_geometry(struct ssd *ssd)
|
|||
ssd->state.geometry = current;
|
||||
}
|
||||
|
||||
bool
|
||||
ssd_titlebar_is_hidden(struct ssd *ssd)
|
||||
{
|
||||
return ssd && !ssd->titlebar.tree->node.enabled;
|
||||
}
|
||||
|
||||
void
|
||||
ssd_titlebar_hide(struct ssd *ssd)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -740,9 +740,13 @@ view_toggle_decorations(struct view *view)
|
|||
{
|
||||
assert(view);
|
||||
if (rc.ssd_keep_border && view->ssd_enabled && view->ssd
|
||||
&& !ssd_titlebar_is_hidden(view->ssd)) {
|
||||
ssd_titlebar_hide(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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue