A dropped window can come back a few points wider than its column#414
Found while checking the #377 fix live on 10 November 2026. A tiled window dragged below the screen's bottom edge and released can come back to its column a few points wider than before, with its left edge moved left by the same amount.
Steps to reproduce
- Run Miri Developer with T3 Code (Nightly) tiled in a 1676 by 1394 column on the 27-inch display.
- Keep the Mac busy, for example with
yesprocesses, so the 1-minute load average is about 15. - Drag T3 Code by its title bar below the bottom edge of the 27-inch display and release.
- Repeat. It happened in 2 of 39 drops.
A tool posted the drag: it held the left button on the title bar, moved the window by AX in step with the pointer, and released.
A recorder read window frames every 5 ms (verify-miri runs 20261110-172758, drop 5, and 20261110-174326, drop 36).
Nobody has tried this with a drag by hand yet.
Expected result
The window slides back to its column at the column's width, 1676 points, as in the other 37 drops.
Actual result
In every drop, T3 Code's own width grew by 1 to 5 points while the tool moved it, and in most drops the engine wrote 1676 back after the release. In drops 5 and 36, the window jumped from the drop point to the top of its column in one frame, about 150 ms before the release, and kept the width it had at that moment:
| 1 | drop 5 before x=442 y=38 w=1676 h=1394 end x=440 y=38 w=1678 h=1394 (load 17.4) |
| 2 | drop 36 before x=876 y=38 w=1676 h=1394 end x=872 y=38 w=1680 h=1394 (load 14.8) |
The right edge stayed where it was. The engine's own frame for the window matched the new one, so the engine kept the new width as the column's width, and it stayed until the next resize. In the same 10 ms, the engine moved a neighbouring window in the strip by the same 2 or 4 points. So the engine seems to take the app's width change during a drag as a resize from the left edge, and to lay out the strip again while the button is still down. The cause is not confirmed. The window stayed reachable on its display.
Acceptance criteria
- An engine test shows that a window whose app changes its width by a few points during a drag returns to its column's width after the drop, fails before the fix, and passes after it (
make engine-test). - Live, with
verify-miriand the live-test lock: in 40 drops of T3 Code below the 27-inch display's bottom edge, with the load average above 10, every drop ends at the column's width from before the drop, read by the frame recorder.
Miri version or commit
main 5c0bfadc with engine 50f56bc (paneru#156, which #413 pins)
macOS version and Mac model
macOS 27.0.1 (26A434), MacBook Air M3 (Mac15,12)
Displays and arrangement
27-inch external above the built-in display, separate Spaces on