Interpret the size in the configure event as window geometry
The size of the configure event has always been specified as in window
geometry coordinates, but it was never implemented this way.
diff --git a/clients/window.c b/clients/window.c
index b82a93e..f44bf64 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -3787,6 +3787,15 @@
window_schedule_resize(widget->window, width, height);
}
+static int
+window_get_shadow_margin(struct window *window)
+{
+ if (window->frame)
+ return frame_get_shadow_margin(window->frame->frame);
+ else
+ return 0;
+}
+
static void
handle_surface_configure(void *data, struct xdg_surface *xdg_surface,
int32_t width, int32_t height,
@@ -3836,7 +3845,14 @@
}
if (width > 0 && height > 0) {
- window_schedule_resize(window, width, height);
+ /* The width / height params are for window geometry,
+ * but window_schedule_resize takes allocation. Add
+ * on the shadow margin to get the difference. */
+ int margin = window_get_shadow_margin(window);
+
+ window_schedule_resize(window,
+ width + margin * 2,
+ height + margin * 2);
} else {
window_schedule_resize(window,
window->saved_allocation.width,