Preserve superseding resize configures
1fd76d4b4a74e18a1ebdd87cfaf1ce7aabb665ac
Change a tiled layout from size A to B and back to A before the client handles B: swm could skip the final configure because A matched the client's current state, even though B was still in flight. Only suppress matching size requests when no resize is pending, so the latest layout always supersedes an older configure.
1 parent
6d7f2ee7
swm.c
+3 -1
| 1172 | 1172 | wlr_xwayland_surface_configure( |
|
| 1173 | 1173 | c->surface.xwayland, c->geom.x + c->bw, c->geom.y + c->bw, width, height |
|
| 1174 | 1174 | ); |
|
| 1175 | 1175 | return 0; |
|
| 1176 | 1176 | } |
|
| 1177 | - | if ((int32_t)width == c->surface.xdg->toplevel->current.width && |
|
| 1177 | + | /* A matching current size does not cancel a different configure which is |
|
| 1178 | + | * still in flight; schedule the requested size again in that case. */ |
|
| 1179 | + | if (!c->resize && (int32_t)width == c->surface.xdg->toplevel->current.width && |
|
| 1178 | 1180 | (int32_t)height == c->surface.xdg->toplevel->current.height) |
|
| 1179 | 1181 | return 0; |
|
| 1180 | 1182 | return wlr_xdg_toplevel_set_size(c->surface.xdg->toplevel, (int32_t)width, (int32_t)height); |
|
| 1181 | 1183 | } |
|
| 1182 | 1184 |