aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/desktop/xdg_shell.c37
1 files changed, 18 insertions, 19 deletions
diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c
index 4d133a12..f02021e1 100644
--- a/sway/desktop/xdg_shell.c
+++ b/sway/desktop/xdg_shell.c
@@ -284,28 +284,27 @@ static void handle_commit(struct wl_listener *listener, void *data) {
struct sway_view *view = &xdg_shell_view->view;
struct wlr_xdg_surface *xdg_surface = view->wlr_xdg_surface;
+ struct wlr_box new_geo;
+ wlr_xdg_surface_get_geometry(xdg_surface, &new_geo);
+ bool new_size = new_geo.width != view->geometry.width ||
+ new_geo.height != view->geometry.height ||
+ new_geo.x != view->geometry.x ||
+ new_geo.y != view->geometry.y;
+
+ if (new_size) {
+ // The view has unexpectedly sent a new size
+ desktop_damage_view(view);
+ view_update_size(view, new_geo.width, new_geo.height);
+ memcpy(&view->geometry, &new_geo, sizeof(struct wlr_box));
+ desktop_damage_view(view);
+ transaction_commit_dirty();
+ }
+
if (view->container->node.instruction) {
- wlr_xdg_surface_get_geometry(xdg_surface, &view->geometry);
transaction_notify_view_ready_by_serial(view,
xdg_surface->configure_serial);
- } else {
- struct wlr_box new_geo;
- wlr_xdg_surface_get_geometry(xdg_surface, &new_geo);
-
- if ((new_geo.width != view->geometry.width ||
- new_geo.height != view->geometry.height ||
- new_geo.x != view->geometry.x ||
- new_geo.y != view->geometry.y)) {
- // The view has unexpectedly sent a new size
- desktop_damage_view(view);
- view_update_size(view, new_geo.width, new_geo.height);
- memcpy(&view->geometry, &new_geo, sizeof(struct wlr_box));
- desktop_damage_view(view);
- transaction_commit_dirty();
- transaction_notify_view_ready_immediately(view);
- } else {
- memcpy(&view->geometry, &new_geo, sizeof(struct wlr_box));
- }
+ } else if (new_size) {
+ transaction_notify_view_ready_immediately(view);
}
view_damage_from(view);