]> git.mdlowis.com Git - proto/labwc.git/commitdiff
src/ssd/ssd.c: Keep view->margin in sync when toggling decorations
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Tue, 28 Jun 2022 17:42:40 +0000 (19:42 +0200)
committerJohan Malm <johanmalm@users.noreply.github.com>
Thu, 30 Jun 2022 05:45:18 +0000 (06:45 +0100)
Fixes #409

include/ssd.h
src/server.c
src/ssd/ssd.c
src/xdg.c
src/xwayland.c

index 302d78d836c1b06dd2b320da7fcf6764e8a510f2..524f3b685e1813dfabd0db4f6ced1b0f00824aee 100644 (file)
@@ -134,7 +134,6 @@ struct ssd_hover_state {
 
 /* Public SSD API */
 void ssd_create(struct view *view);
-void ssd_hide(struct view *view);
 void ssd_set_active(struct view *view);
 void ssd_update_title(struct view *view);
 void ssd_update_geometry(struct view *view);
index df9d89358756c4723e214ff37492a30ed473ef0a..857d3e49235b26f0c44458ccea312925f826c302 100644 (file)
@@ -42,7 +42,6 @@ reload_config_and_theme(void)
                if (!view->mapped || !view->ssd.enabled) {
                        continue;
                }
-               view->margin = ssd_thickness(view);
                ssd_reload(view);
        }
 
index 94dcf501e217e79eb7346d24fb8f43132d794595..04c78575f6b50a95752887395c2b0e9314ea7653 100644 (file)
 struct border
 ssd_thickness(struct view *view)
 {
+       if (!view->ssd.enabled) {
+               struct border border = { 0 };
+               return border;
+       }
        struct theme *theme = view->server->theme;
        struct border border = {
                .top = theme->title_height + theme->border_width,
@@ -159,6 +163,7 @@ ssd_create(struct view *view)
        ssd_extents_create(view);
        ssd_border_create(view);
        ssd_titlebar_create(view);
+       view->margin = ssd_thickness(view);
 }
 
 void
@@ -171,10 +176,12 @@ ssd_update_geometry(struct view *view)
        if (!view->ssd.enabled) {
                if (view->ssd.tree->node.enabled) {
                        wlr_scene_node_set_enabled(&view->ssd.tree->node, false);
+                       view->margin = ssd_thickness(view);
                }
                return;
        } else if (!view->ssd.tree->node.enabled) {
                wlr_scene_node_set_enabled(&view->ssd.tree->node, true);
+               view->margin = ssd_thickness(view);
        }
 
        int width = view->w;
@@ -198,15 +205,6 @@ ssd_update_geometry(struct view *view)
        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)
 {
        if (!view->ssd.tree) {
index 611691c63927c5ddce44f7522250b2615f977a32..b7c9edf33d7bb44fdb0cd04edd73c21d6f7598df 100644 (file)
--- a/src/xdg.c
+++ b/src/xdg.c
@@ -298,7 +298,6 @@ xdg_toplevel_view_map(struct view *view)
 
                view->ssd.enabled = has_ssd(view);
                if (view->ssd.enabled) {
-                       view->margin = ssd_thickness(view);
                        ssd_create(view);
                }
 
@@ -311,7 +310,6 @@ xdg_toplevel_view_map(struct view *view)
                }
 
                view_discover_output(view);
-
                view->been_mapped = true;
        }
 
index 334dd3b2f2bd7320bc1b54d30e664744ed797f3e..1efd44158ed3707d1b8b1001f94f27701af50285 100644 (file)
@@ -329,7 +329,7 @@ map(struct view *view)
        if (!view->been_mapped) {
                view->ssd.enabled = want_deco(view);
                if (view->ssd.enabled) {
-                       view->margin = ssd_thickness(view);
+                       ssd_create(view);
                }
 
                if (!view->maximized && !view->fullscreen) {
@@ -341,11 +341,6 @@ map(struct view *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;
        }