Consolidate button/checkbox creation #382
Open
+49
−20
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Before this PR, there are three possibilities for a Button's
checkedstate:[Yes]| About |This only leaves space for a checkmark.
|🗹 Word Wrap...The button only shows the provided checked state, without internal toggle logic.
Separately, there is a
checkbox()function that partly overlaps with the button logic:[☐ Match Case]This is not available via
ButtonStyle[🗹 Match Case]The checkbox automatically toggles the given
boolparameter if activated.Note that the 'unchecked' variants of the button and checkbox are different, meaning there are four total states/styles.
Change
I have consolidated (to some degree) the checkmark-drawing code.
checked: Option<bool>to anenum Checkmarkthat now consolidates the four possible states/styles. (Absent, AlignOnly, Checked, Unchecked)checkbox()now uses thebutton()+ButtonStyle, where previously most of its code was duplicated.Word Wraptoggle is now a proper checkbox.Edit: I had also converted the OVR (overtype) indicator, but reverted it on request.
Sorry if this should have been multiple PRs, the chronological order of the changes was quite chaotic. If any of this is controversial, e.g. the
OVRcheckbox, I can revert it.