Keep a dialog with no buttons measurable - #158
Merged
Merged
Conversation
`Dialog.buttonsSection()` placed the buttons into a row spaced with `Look.buttonsSpacing`, and such a row reports an intrinsic width of minus that spacing when it has no children. A dialog that opted into neither the Submit nor the Cancel button therefore failed the measure pass whenever its `width` was left unspecified. The section is now skipped altogether in that case, leaving the spacing of the dialogs that do display their buttons intact. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
armiol
approved these changes
Aug 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #156.
Dialog.buttonsSection()placed the buttons into a row measured withIntrinsicSize.Maxand spaced withLook.buttonsSpacing. Such a row reports anintrinsic width of
sum(children) + spacing * (children - 1), which with nochildren is minus the spacing, and the negative width fails the measure pass. A
dialog that opted into neither the Submit nor the Cancel button therefore crashed
whenever its
widthwas left asDp.Unspecified, since that is what makes thewindow measure the content intrinsically.
The buttons section is now skipped altogether when the dialog has opted into
neither button, so nothing is measured in that case. Dialogs that do display one
or both buttons keep their current spacing and layout.
Tests
DialogSizingSpecgains two cases, backed by a minimalTestDialogfixture:measure a dialog that displays no buttons— reproduces the crash; it failswithout the fix.
keep the spacing between the buttons that a dialog displays— pins thespacing of a two-button and a single-button section against the same sections
measured with zero spacing.