]> git.mdlowis.com Git - proto/labwc.git/commitdiff
view: Fix positioning of initially-maximized XWayland views
authorJohn Lindgren <john@jlindgren.net>
Wed, 16 Nov 2022 21:46:52 +0000 (16:46 -0500)
committerJohan Malm <johanmalm@users.noreply.github.com>
Sun, 20 Nov 2022 19:10:05 +0000 (19:10 +0000)
map() in xwayland.c called ssd_create() but did not call
view_apply_maximized_geometry() afterward, resulting in the
decorations being displayed off-screen.

Rather than calling view_apply_maximized_geometry() in more places,
let's reuse the existing call in view_set_decorations(), and extend
ssd_update_geometry() to call ssd_create() when needed.

src/ssd/ssd.c
src/xdg.c
src/xwayland.c

index 6cb8ae13fe4bfc1e892e693024c8bd3077796a6a..f556b24d553034f2d010e1db5f3e569e91ab1f79 100644 (file)
@@ -169,16 +169,18 @@ ssd_create(struct view *view)
 void
 ssd_update_geometry(struct view *view)
 {
-       if (!view->ssd.tree || !view->scene_node) {
+       if (!view->scene_node) {
                return;
        }
 
        if (!view->ssd.enabled) {
-               if (view->ssd.tree->node.enabled) {
+               if (view->ssd.tree && 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) {
+               ssd_create(view);
        } else if (!view->ssd.tree->node.enabled) {
                wlr_scene_node_set_enabled(&view->ssd.tree->node, true);
                view->margin = ssd_thickness(view);
index 487a7b6942cfc99c5d7fa72db2add6e349c9def2..1d8815c3d1664d2d4fd6051dc6f33890569fea26 100644 (file)
--- a/src/xdg.c
+++ b/src/xdg.c
@@ -303,11 +303,7 @@ xdg_toplevel_view_map(struct view *view)
                struct wlr_xdg_toplevel_requested *requested =
                        &view->xdg_surface->toplevel->requested;
                foreign_toplevel_handle_create(view);
-
-               view->ssd.enabled = has_ssd(view);
-               if (view->ssd.enabled) {
-                       ssd_create(view);
-               }
+               view_set_decorations(view, has_ssd(view));
 
                position_xdg_toplevel_view(view);
                if (!view->fullscreen && requested->fullscreen) {
index b360b1c7aff3d9d94519fda0f1d17759a588e98c..8bfa31a8b968725ded8c8253c559904b7d4c75f4 100644 (file)
@@ -389,10 +389,7 @@ map(struct view *view)
        }
 
        if (!view->been_mapped) {
-               view->ssd.enabled = want_deco(view);
-               if (view->ssd.enabled) {
-                       ssd_create(view);
-               }
+               view_set_decorations(view, want_deco(view));
 
                if (!view->maximized && !view->fullscreen) {
                        set_initial_position(view);