Commit both corner-resize dimensions in one host transaction

This commit is contained in:
2026-11-12 12:27:04 +01:00
parent dfa2dd1508
commit b9d59e162f
5 changed files with 220 additions and 35 deletions
+14
View File
@@ -51,6 +51,20 @@ Verified on 2026-11-12: **65 tests** (58 Maven, seven IntelliJ), zero failures/e
Physical OS drag-and-drop delivery is **not qualified by this automated result**. Synthetic mouse events cannot start JavaFX's native dragboard; a desktop Robot attempt did not result in a document move, including after bringing the test process to the foreground. The suite therefore tests the actual Kit relocation command separately from resize-handle events. A human drag/drop check in both hosts remains part of stage-2 platform qualification.
## Corner-resize correction and manual review
Human standalone review confirmed independent dragging of both Components, one-click Undo/Redo, save and Source/Design preservation, and separate width/height edge resizing. Corner resizing exposed a dropped height update: Kit emits a separate synchronous job for each dimension, and the first asynchronous host write caused the second notification to be ignored. The shared UI now collects those notifications until the next FX event turn and submits the final geometry as one source-preserving undo transaction. Source edits, document actions and close synchronization flush any queued canvas edit; projection reloads invalidate stale callbacks.
The regression checks the selected Component's own width and height (the previous whole-document height check could match its ancestor), the reloaded canvas height, and exact source through one Undo and Redo. It runs through the shared live host scenarios. A small standalone reproducer can also run after the Maven build without Build and Refresh or a target worker:
```sh
python3 scripts/check-corner-resize.py --target-java-home "$TARGET_JAVA_HOME"
```
The focused regression, Maven tests, IntelliJ adapter tests/plugin build, both connected standalone layouts and both registered IntelliJ layouts passed with the correction. One earlier IDE run failed the later save-preservation assertion after the corner checks passed; this did not reproduce on the next complete run. The save assertion now reports expected and actual source for investigation if it recurs.
The corner fix still needs the user's physical mouse retest. IntelliJ physical drag/drop review remains pending. The automated resize gesture is evidence for the transaction fix, not a substitute for these manual checks.
## Remaining boundaries
This stage preserves arbitrary source, but does not make arbitrary structure visually editable. Insert/delete/reparent, binding-aware renames and subtree copy/paste require later structural transactions. Application wildcard imports, `fx:include`, scripts and unrepresentable roots retain source fallback. Arbitrary target properties use declared FXML text editing until shared discovery supplies typed metadata. Anonymous identities are local to a projection revision, not the persistent occurrence identities needed for repeated/Table Components. Target node lookup still uses the initial CSS-ID route; separate CSS IDs and repeated/internal scopes need stage 3's occurrence identity work.