XdgToplevel: handle configure timeout gracefully

Currently configure timeouts hit the "client is buggy and initiated size
change while tiled or fullscreen" code path even if the client is not in
fact buggy. This causes state to get out of sync between river and the
client, and is highly visible as the borders drawn by river no longer
align with the buffer dimensions committed by the client.

This commit fixes this by tracking acks/commits in response to
configures even after a timeout and properly integrating them with the
transaction system.
This commit is contained in:
Isaac Freund
2024-02-13 14:50:58 +01:00
parent f0b0606e9f
commit a531311ac6
3 changed files with 56 additions and 25 deletions

View File

@ -620,7 +620,7 @@ fn commitTransaction(root: *Self) void {
view.tree.node.reparent(root.hidden.tree);
view.popup_tree.node.reparent(root.hidden.tree);
view.updateCurrent();
view.commitTransaction();
}
}
@ -657,7 +657,7 @@ fn commitTransaction(root: *Self) void {
}
}
view.updateCurrent();
view.commitTransaction();
const enabled = view.current.tags & output.current.tags != 0;
view.tree.node.setEnabled(enabled);