Skip to content

feat: add form controls (C2)#38

Merged
Nebu1eto merged 5 commits into
mainfrom
dev/phase-c-form-controls
Feb 10, 2026
Merged

feat: add form controls (C2)#38
Nebu1eto merged 5 commits into
mainfrom
dev/phase-c-form-controls

Conversation

@Nebu1eto

Copy link
Copy Markdown
Owner

Re-raised from #35 after rebase onto main. Adds form controls support (buttons, checkboxes, drop-downs) via VML drawing parts.

Nebu1eto and others added 5 commits February 10, 2026 19:12
Add 7 form control types (Button, CheckBox, OptionButton, SpinButton,
ScrollBar, GroupBox, Label) using legacy VML drawing infrastructure.
Controls support cell linking, macro binding, value ranges, and 3D
shading. VML content is automatically merged when both comments and
form controls exist on the same sheet.

Includes Rust core module (44 tests), napi bindings (11 tests),
TypeScript wrapper, and English/Korean documentation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When opening a workbook from file, existing form controls were stored
only as raw VML bytes in sheet_vml, while sheet_form_controls remained
empty. This caused add_form_control to silently drop pre-existing
controls (by overwriting VML with only the new control) and
delete_form_control to always fail with out-of-bounds errors.

Add a hydrate_form_controls helper that lazily parses VML data into
sheet_form_controls before add/delete/get operations. This ensures
all three methods correctly see pre-existing controls from opened files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Nebu1eto
Nebu1eto merged commit aecbb9f into main Feb 10, 2026
3 checks passed
@Nebu1eto
Nebu1eto deleted the dev/phase-c-form-controls branch February 10, 2026 10:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant