Repository navigation
fix(services)!: name the message box's buttons a choice, not a set - #489
Merged
Merged
Conversation
siracozmen01
commented
Nov 5, 2026
siracozmen01
left a comment
Contributor
Author
There was a problem hiding this comment.
Review at 7d9ea5e: ready, with one point not verified. No findings. Read, not run.
- include/maul-window/services.h at the head has the type
mwinMessageChoice(line 106), the constantsmwin_choiceOk/OkCancel/YesNowith the same values 0, 1 and 2, the fieldchoice(130), and the inline defaultdef.choice = mwin_choiceOk(155). Nothing in the header still saysmwinMessageButtons,mwin_buttonsor.buttonsfor the box. - docs/user/services.md says "a choice of buttons" and names no old identifier.
- The 16 files change only the names. The backends (
message_box.c, posix, x11, web, win32, and the macOS and iOS.mfiles) readdef->choiceand compare withmwin_choice*. The values are unchanged, so no switch moves. - Type: the second read of #371 filed #483 as a rename for clarity, and it landed as
fix(input)!(#485). This one comes from the same read's questions, sofix(services)!follows that precedent. The first read's renames (#384 to #394) wererefactor!. In 0.x either one bumps the minor through!, andfixputs the entry under Bug Fixes, where it is visible, which suits a rename users must act on. - The BREAKING CHANGE footer names all three renames.
Not verified: leftovers outside the 16 files. I can only read the files the diff touches and the ones I fetch, not search the tree. A search over the whole repository at this head for mwinMessageButtons, mwin_buttonsOk, mwin_buttonsOkCancel, mwin_buttonsYesNo and \.buttons\b near a message box would settle it, including samples/, any bindings, java/ and docs/. The build covers C and the .m files the CI cells compile, but not docs, samples outside the build, or Java strings.
Merged
siracozmen01
pushed a commit
that referenced
this pull request
Nov 5, 2026
🤖 I have created a release *beep* *boop* --- ## [0.15.0](v0.14.0...v0.15.0) (2026-11-05) The iOS device check, that a window shows no flash against the launch screen before its first frame, is waived by the owner for this release, which ships on the iOS simulator suite: its iOS changes leave the launch and the first frame alone. ### Changed - **Breaking:** `mwinMessageButtons` is now `mwinMessageChoice`, its constants `mwin_buttonsOk`, `mwin_buttonsOkCancel` and `mwin_buttonsYesNo` are now `mwin_choiceOk`, `mwin_choiceOkCancel` and `mwin_choiceYesNo`, and `mwinMessageBoxDef.buttons` is now `mwinMessageBoxDef.choice`. The type is a choice of one, but its plural name read as a set of flags, as every other plural type in the API is ([#489](#489)). - **Breaking:** the test platform's `mwinGamepad_GetTestRumble` and `mwinGamepad_GetTestTriggerRumble` take `size_t* countOut` instead of `uint32_t* countOut`, as every other count the API reports is a `size_t` ([#490](#490)). - Maul Window builds against Maul Unicode 1.2.0, which gives the results 1.1.2 gave, so nothing a program gets from Maul Window changes. The installed CMake config and pkg-config file ask for Maul Unicode 1.2.0, and a build on a machine with only Maul Unicode 1.1.2 installed fetches 1.2.0 instead of using it ([#493](#493)). ### Fixed - On Windows, a generic HID gamepad with more than 64 buttons down at once, such as a stick or button box of 128 whose toggle switches stay down, reads its buttons. Before, the library asked Windows' parser for the buttons down with room for 64, the parser refused, and the report's buttons were dropped: each button kept the state of the last report that listed 64 or fewer, and a press or a release in between was lost ([#495](#495)).
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.
Problem
mwinMessageButtonsininclude/maul-window/services.his the only plural typedef in the API that is a choice rather than a set of flags. It is anint32_twithmwin_buttonsOk,mwin_buttonsOkCancelandmwin_buttonsYesNo, held bymwinMessageBoxDef.buttons. Every other plural (mwinModifiers,mwinMouseButtons,mwinGamepadButtons,mwinDragContents,mwinPenFlags) is auint32_tset of flags, sodef.buttons = mwin_buttonsOkreads as a set of buttons.Change
mwinMessageChoice.mwin_choiceOk,mwin_choiceOkCancelandmwin_choiceYesNo. They take the type's last word, asmwin_purpose*does formwinInputPurpose. That keeps them apart frommwinMessageKind'smwin_message*constants: both types areint32_t, so one passed for the other would compile.mwinMessageBoxDeffield becomeschoice.docs/user/services.mdnow says a message box has "a choice of buttons".mwin_choiceor wasmwinMessageChoicebefore.Verification
src/macos_message_box.m,src/ios_message_box.m,test/test_macos_dialog.m,test/test_ios_services.m) change only in the names, and clang-format has nothing to change in them. Their CI cells build and run them.tools/check.sh changedpasses, thekindsandmessage_boxsuites included.x11_message_boxpasses on the build's own Xvfb, andweb_servicespasses in headless Chrome on theweb-wasibuild.test_win32_message_box.exepasses under Wine. Only the Windows CI runner runs it on Windows itself.BREAKING CHANGE:
mwinMessageButtonsis nowmwinMessageChoice, its constantsmwin_buttonsOk,mwin_buttonsOkCancelandmwin_buttonsYesNoare nowmwin_choiceOk,mwin_choiceOkCancelandmwin_choiceYesNo, andmwinMessageBoxDef.buttonsis nowmwinMessageBoxDef.choice.Closes #487