src/ssd/ssd.c: Keep view->margin in sync when toggling decorations

Fixes #409
This commit is contained in:
Consolatis 2022-06-28 19:42:40 +02:00 committed by Johan Malm
parent ef3dbbf29a
commit 09915b8f43
5 changed files with 8 additions and 19 deletions

View file

@ -134,7 +134,6 @@ struct ssd_hover_state {
/* Public SSD API */ /* Public SSD API */
void ssd_create(struct view *view); void ssd_create(struct view *view);
void ssd_hide(struct view *view);
void ssd_set_active(struct view *view); void ssd_set_active(struct view *view);
void ssd_update_title(struct view *view); void ssd_update_title(struct view *view);
void ssd_update_geometry(struct view *view); void ssd_update_geometry(struct view *view);

View file

@ -42,7 +42,6 @@ reload_config_and_theme(void)
if (!view->mapped || !view->ssd.enabled) { if (!view->mapped || !view->ssd.enabled) {
continue; continue;
} }
view->margin = ssd_thickness(view);
ssd_reload(view); ssd_reload(view);
} }

View file

@ -17,6 +17,10 @@
struct border struct border
ssd_thickness(struct view *view) ssd_thickness(struct view *view)
{ {
if (!view->ssd.enabled) {
struct border border = { 0 };
return border;
}
struct theme *theme = view->server->theme; struct theme *theme = view->server->theme;
struct border border = { struct border border = {
.top = theme->title_height + theme->border_width, .top = theme->title_height + theme->border_width,
@ -159,6 +163,7 @@ ssd_create(struct view *view)
ssd_extents_create(view); ssd_extents_create(view);
ssd_border_create(view); ssd_border_create(view);
ssd_titlebar_create(view); ssd_titlebar_create(view);
view->margin = ssd_thickness(view);
} }
void void
@ -171,10 +176,12 @@ ssd_update_geometry(struct view *view)
if (!view->ssd.enabled) { if (!view->ssd.enabled) {
if (view->ssd.tree->node.enabled) { if (view->ssd.tree->node.enabled) {
wlr_scene_node_set_enabled(&view->ssd.tree->node, false); wlr_scene_node_set_enabled(&view->ssd.tree->node, false);
view->margin = ssd_thickness(view);
} }
return; return;
} else if (!view->ssd.tree->node.enabled) { } else if (!view->ssd.tree->node.enabled) {
wlr_scene_node_set_enabled(&view->ssd.tree->node, true); wlr_scene_node_set_enabled(&view->ssd.tree->node, true);
view->margin = ssd_thickness(view);
} }
int width = view->w; int width = view->w;
@ -198,15 +205,6 @@ ssd_update_geometry(struct view *view)
view->ssd.state.y = view->y; view->ssd.state.y = view->y;
} }
void
ssd_hide(struct view *view)
{
if (!view->ssd.tree) {
return;
}
wlr_scene_node_set_enabled(&view->ssd.tree->node, false);
}
void ssd_reload(struct view *view) void ssd_reload(struct view *view)
{ {
if (!view->ssd.tree) { if (!view->ssd.tree) {

View file

@ -298,7 +298,6 @@ xdg_toplevel_view_map(struct view *view)
view->ssd.enabled = has_ssd(view); view->ssd.enabled = has_ssd(view);
if (view->ssd.enabled) { if (view->ssd.enabled) {
view->margin = ssd_thickness(view);
ssd_create(view); ssd_create(view);
} }
@ -311,7 +310,6 @@ xdg_toplevel_view_map(struct view *view)
} }
view_discover_output(view); view_discover_output(view);
view->been_mapped = true; view->been_mapped = true;
} }

View file

@ -329,7 +329,7 @@ map(struct view *view)
if (!view->been_mapped) { if (!view->been_mapped) {
view->ssd.enabled = want_deco(view); view->ssd.enabled = want_deco(view);
if (view->ssd.enabled) { if (view->ssd.enabled) {
view->margin = ssd_thickness(view); ssd_create(view);
} }
if (!view->maximized && !view->fullscreen) { if (!view->maximized && !view->fullscreen) {
@ -341,11 +341,6 @@ map(struct view *view)
} }
view_discover_output(view); view_discover_output(view);
if (view->ssd.enabled) {
/* Create ssd after view_disover_output() had been called */
ssd_create(view);
}
view->been_mapped = true; view->been_mapped = true;
} }