mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-12 22:02:33 +00:00
A check box field with kids whose on states are A and B could only ever tick A. With A ticked, clicking B cleared the field, so B's tick flashed and vanished, and with nothing ticked, clicking B ticked A. The click sent a field-wide Check(!on), and write_value always turned on the first kid's on state, even for a value naming B. §12.7.5.2.3 makes the field's /V the on state of the kid that is on (/AS deciding where they differ), and Table 230 lets kids be checked independently. - A click on a kid that is off sends its on-state name: it (and any kid sharing that state) turns on and the others off. A click on a kid that is on clears the field. "On" is the kid's /AS (Field::widget_on). - write_value: a named state or /Opt export ticks the kids with that state. Check(true) keeps the kid that is on, else takes the first. - Field::check_box_value maps a stored value to the state it names. Reset to /DV, script value changes and FDF/XFDF import use it. - The display-only fallback ticks only the kids that are on. - form_fields lists a check box's options and the checked one when its kids have more than one on state. form_fill takes the name. Kids sharing an on state still tick together (EXAMPLE 2). Tests: forms unit, ui-egui end-to-end clicks, automation form_fill and xfdf import. Each fails with its fix reverted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0175FWj4xFhMhSH3UpMU8DSC