]> git.mdlowis.com Git - proto/labwc.git/commitdiff
Set node position in xdg/xwayland commit handlers
authorJohan Malm <jgm323@gmail.com>
Wed, 23 Feb 2022 22:39:57 +0000 (22:39 +0000)
committerJohan Malm <jgm323@gmail.com>
Wed, 23 Feb 2022 22:39:57 +0000 (22:39 +0000)
...in order to sync resize/move events to avoid left/bottom edge wobbling
when resizing with top/left resize edges

src/view.c
src/xdg.c
src/xwayland.c

index 64674482c08fd3dabcaff92b4c0ae301a0c6491d..740ed63fae6153b35567b677e4ed2e4e9dfd430c 100644 (file)
@@ -48,7 +48,6 @@ view_move_resize(struct view *view, struct wlr_box geo)
        }
        ssd_update_title(view);
        view_discover_output(view);
-       wlr_scene_node_set_position(&view->scene_tree->node, view->x, view->y);
 }
 
 #define MIN_VIEW_WIDTH (100)
@@ -150,7 +149,6 @@ view_center(struct view *view)
        if (view_compute_centered_position(view, view->w, view->h, &x, &y)) {
                view_move(view, x, y);
        }
-       wlr_scene_node_set_position(&view->scene_tree->node, view->x, view->y);
 }
 
 static void
@@ -226,7 +224,6 @@ view_maximize(struct view *view, bool maximize)
        if (view->fullscreen) {
                return;
        }
-       wlr_scene_node_set_position(&view->scene_tree->node, view->x, view->y);
        if (view->impl->maximize) {
                view->impl->maximize(view, maximize);
        }
index 3b6178f3a2e26b12ba72378b2ff0caa05d3a7cba..5ab801f38b3a6bb8de4784c57948125c008c093d 100644 (file)
--- a/src/xdg.c
+++ b/src/xdg.c
@@ -57,6 +57,8 @@ handle_commit(struct wl_listener *listener, void *data)
                if (serial == view->xdg_surface->current.configure_serial) {
                        view->pending_move_resize.configure_serial = 0;
                }
+               wlr_scene_node_set_position(&view->scene_tree->node,
+                       view->x, view->y);
        }
        ssd_update_geometry(view);
        damage_view_part(view);
index fa4be0fac210f24b94056ca3c9c4ae271877dce2..ddbff726d5d440808ddf0a974a116e9ffd68c9a4 100644 (file)
@@ -12,6 +12,8 @@ handle_commit(struct wl_listener *listener, void *data)
        /* Must receive commit signal before accessing surface->current* */
        view->w = view->surface->current.width;
        view->h = view->surface->current.height;
+       bool move_pending = view->pending_move_resize.update_x
+               || view->pending_move_resize.update_y;
 
        if (view->pending_move_resize.update_x) {
                view->x = view->pending_move_resize.x +
@@ -23,6 +25,10 @@ handle_commit(struct wl_listener *listener, void *data)
                        view->pending_move_resize.height - view->h;
                view->pending_move_resize.update_y = false;
        }
+       if (move_pending) {
+               wlr_scene_node_set_position(&view->scene_tree->node,
+                       view->x, view->y);
+       }
        ssd_update_geometry(view);
        damage_view_whole(view);
 }