]> git.mdlowis.com Git - proto/labwc.git/commitdiff
src/xdg.c: sync move with pending resize
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Sun, 12 Feb 2023 06:44:01 +0000 (07:44 +0100)
committerJohn Lindgren <john@jlindgren.net>
Mon, 13 Feb 2023 16:30:15 +0000 (11:30 -0500)
Before this patch, configuring a surface with a new size,
immediately followed up by one or more view_move() calls
would move the surface to the new coordinates immediately
without waiting for the resize. This caused visual glitches
when for example dragging a maximized window: the position
would change but the size was still that of a maximized
window.

This patch fixes that by just ignoring view_move() requests
(but still updating view->pending) if there is a configure
request pending. Once the client commit comes in the new
size will be applied as usual.

src/xdg.c

index d5c7daec5e23a0cd9a5dd56455157ecdfc650b30..89b1f4c303b7336eb8cd722ca58781194b0edc96 100644 (file)
--- a/src/xdg.c
+++ b/src/xdg.c
@@ -203,13 +203,17 @@ handle_set_app_id(struct wl_listener *listener, void *data)
 static void
 xdg_toplevel_view_move(struct view *view, int x, int y)
 {
-       view->current.x = x;
-       view->current.y = y;
-
        /* override any previous pending move */
        view->pending.x = x;
        view->pending.y = y;
 
+       /* Syncs moves with resizes  */
+       if (view->pending_configure_serial > 0) {
+               return;
+       }
+
+       view->current.x = x;
+       view->current.y = y;
        view_moved(view);
 }