feat: textbox object interaction#3721
Conversation
|
The ecma-spec MCP tools are blocked by the permission system in this session — I tried several times and each call is denied before it can run, so I couldn't execute live spec lookups. I reviewed the OOXML usage against the ECMA-376 schema from knowledge instead; flagging that so the verdict's basis is clear. Status: PASS The two handler changes only touch DrawingML/VML elements and attributes that exist in the spec, and they use them correctly.
No non-existent elements/attributes, no missing-required-attribute regressions (existing One caveat worth noting: |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 19d0376a43
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
Main task: SD-3395.
Sub-tasks (phases): SD-3405, SD-3406.
Textbox object interaction — selection, resize, and move (Phase 2 and 3).
Summary
Adds object-level interaction for floating DrawingML textboxes represented as
shapeContainernodes: border selection, resize handles, and drag-to-move.Selection
NodeSelectionon the textbox instead of placing a caret in its text content.
superdoc-textbox-selectedring; clicking outsideclears it.
Resize
TextboxResizeOverlayrenders four corner handles for selected textboxes.width/heighton theshapeContainer.marginOffsetso the opposite cornerremains fixed.
wp:extentandwps:spPr > a:xfrm > a:extin EMU.The
a:extupdate now targets the shape geometry path directly instead ofrelying on DFS first-match.
Move
marginOffseton theshapeContainer.transform: translate(…)provides live drag feedback.header/footer relayout.
wp:positionH/V > wp:posOffsetin EMU.