fix(amule-gui): drop wxFlexGridSizer on the Advanced prefs tab to silence GTK warnings - #833
Merged
mrjimenez merged 1 commit intoJun 3, 2026
Conversation
…ence GTK warnings Stoatwblr reported in amule-project#832 that hovering on the Preferences -> Advanced tab in amulegui floods stderr with repeating GTK warnings — three GtkScale "Negative content height -15 (allocation 9, extents 12x12)" groups (one per slider) and one GtkCheckButton "for_size smaller than min-size (0 < 14)" / "Negative content height" pair. Cosmetic but constant, and after amule-project#826 this was the only remaining warning site he could reproduce in amulegui. Cause sits at the tab's root sizer. PreferencesaMuleTweaksTab is the only prefs tab built on a wxFlexGridSizer with AddGrowableRow(1) (every other tab — Statistics, GUI Tweaks, etc. — uses a plain wxBoxSizer). Inside a wxNotebook, GTK's hover re-layout pass on the tab strip sometimes queries child sizes against a parent that hasn't been realised yet; a flex grid then redistributes those sub-minimum vertical allocations across the growable row's static box, and the GtkScale trough (needs 12 px) plus the GtkCheckButton check node (needs 14 px) refuse the under-sized allocation with a g_warning. The matching scale constructors and the IDC_PREVENT_SLEEP checkbox don't fire on tabs whose root is a wxBoxSizer because the box never compresses below intrinsic. Switch to a plain wxBoxSizer(wxVERTICAL). The two children (the red WARNING block and the static-box of controls) stack at their natural heights — same visual result, no flex-grid compression on hover, no warnings. Closes amule-project#832
1 task
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jun 4, 2026
…ndex Adds 55+ merged PRs to the 3.0.0 changelog since the last update (amule-project#747, 2026-05-27). Narrative additions cover: - Packaging: expanded the top list to include the macOS per-arch .app bundles and the Windows NSIS installer alongside the existing AppImage / Flatpak / .dmg / .zip entries. New bullets for amule-project#785 (alc/alcc/cas/wxcas everywhere + Windows amuleweb), amule-project#794 (.dmg amuleweb path), amule-project#789 (<OS>-<arch> artifact naming), amule-project#780 / amule-project#796 (Windows DPI + comctl32 manifest), amule-project#784 (FHS share/amule paths). - Bug Fixes & Stability: post-amule-project#744 fixes including EC notification leak (amule-project#797), big-library scaling (amule-project#736, amule-project#840 superseding amule-project#728), amulegui ghost entries (amule-project#810, amule-project#819, amule-project#841, amule-project#824, amule-project#830, amule-project#760), PartFile early hash (amule-project#762), server protocol fixes (amule-project#835, amule-project#788, amule-project#721, amule-project#787), crypto stream UB (amule-project#779), UAF prevention (amule-project#756), Kad rotation (amule-project#795, amule-project#799/amule-project#805), GTK warning silencing (amule-project#833, amule-project#826/amule-project#836), and the clang-tidy worklist (amule-project#770, amule-project#772-amule-project#774). - Translations: late-cycle wave covering French/Turkish manpages (amule-project#753/amule-project#754/amule-project#776), Galician (amule-project#763), Slovenian (amule-project#771), pt-BR (amule-project#768/amule-project#775/amule-project#812), French (amule-project#811), plus man-page tooling for date+version drift (amule-project#802). - Contributors: added ngosang for UX feedback on the late-3.0 cycle (amule-project#817/amule-project#818/amule-project#821/amule-project#828/amule-project#844) and ongoing work on the user-facing manual at amule-org.github.io. - Merged PRs flat index: extended with amule-project#746-amule-project#845 + amule-project#841.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jun 4, 2026
…ndex Adds 55+ merged PRs to the 3.0.0 changelog since the last update (amule-project#747, 2026-05-27). Narrative additions cover: - Packaging: expanded the top list to include the macOS per-arch .app bundles and the Windows NSIS installer alongside the existing AppImage / Flatpak / .dmg / .zip entries. New bullets for amule-project#785 (alc/alcc/cas/wxcas everywhere + Windows amuleweb), amule-project#794 (.dmg amuleweb path), amule-project#789 (<OS>-<arch> artifact naming), amule-project#780 / amule-project#796 (Windows DPI + comctl32 manifest), amule-project#784 (FHS share/amule paths). - Bug Fixes & Stability: post-amule-project#744 fixes including EC notification leak (amule-project#797), big-library scaling (amule-project#736, amule-project#840 superseding amule-project#728), amulegui ghost entries (amule-project#810, amule-project#819, amule-project#841, amule-project#824, amule-project#830, amule-project#760), PartFile early hash (amule-project#762), server protocol fixes (amule-project#835, amule-project#788, amule-project#721, amule-project#787), crypto stream UB (amule-project#779), UAF prevention (amule-project#756), Kad rotation (amule-project#795, amule-project#799/amule-project#805), GTK warning silencing (amule-project#833, amule-project#826/amule-project#836), and the clang-tidy worklist (amule-project#770, amule-project#772-amule-project#774). - Translations: late-cycle wave covering French/Turkish manpages (amule-project#753/amule-project#754/amule-project#776), Galician (amule-project#763), Slovenian (amule-project#771), pt-BR (amule-project#768/amule-project#775/amule-project#812), French (amule-project#811), plus man-page tooling for date+version drift (amule-project#802). - Contributors: added ngosang for UX feedback on the late-3.0 cycle (amule-project#817/amule-project#818/amule-project#821/amule-project#828/amule-project#844) and ongoing work on the user-facing manual at amule-org.github.io. - Merged PRs flat index: extended with amule-project#746-amule-project#845 + amule-project#841.
mrjimenez
pushed a commit
that referenced
this pull request
Jun 4, 2026
Adds 55+ merged PRs to the 3.0.0 changelog since the last update (#747, 2026-05-27). Narrative additions cover: - Packaging: expanded the top list to include the macOS per-arch .app bundles and the Windows NSIS installer alongside the existing AppImage / Flatpak / .dmg / .zip entries. New bullets for #785 (alc/alcc/cas/wxcas everywhere + Windows amuleweb), #794 (.dmg amuleweb path), #789 (<OS>-<arch> artifact naming), #780 / #796 (Windows DPI + comctl32 manifest), #784 (FHS share/amule paths). - Bug Fixes & Stability: post-#744 fixes including EC notification leak (#797), big-library scaling (#736, #840 superseding #728), amulegui ghost entries (#810, #819, #841, #824, #830, #760), PartFile early hash (#762), server protocol fixes (#835, #788, #721, #787), crypto stream UB (#779), UAF prevention (#756), Kad rotation (#795, #799/#805), GTK warning silencing (#833, #826/#836), and the clang-tidy worklist (#770, #772-#774). - Translations: late-cycle wave covering French/Turkish manpages (#753/#754/#776), Galician (#763), Slovenian (#771), pt-BR (#768/#775/#812), French (#811), plus man-page tooling for date+version drift (#802). - Contributors: added ngosang for UX feedback on the late-3.0 cycle (#817/#818/#821/#828/#844) and ongoing work on the user-facing manual at amule-org.github.io. - Merged PRs flat index: extended with #746-#845 + #841.
mrjimenez
pushed a commit
to mrjimenez/amule
that referenced
this pull request
Aug 8, 2026
…#833) amulegui never came back from the Dock: MacReopenApp() is a wxApp virtual and only CamuleGuiApp overrode it, so a frame hidden with Show(false) -- what both the close-button HideOnClose path and the minimize-to-tray path leave behind -- stayed hidden. wxApp's default handler only de-iconizes, which is why the monolithic build needed the override in the first place. CamuleRemoteGuiApp had picked up MacOpenFiles and MacOpenURL from the same batch and missed this one. Rather than add a second copy of the restore, the restore itself moves onto the window as CamuleDlg::RestoreMainWindow() / HideToTray(), and every path goes through them: the tray icon (click, menu, DoShow, DoHide), minimize-to-tray, the duplicate-launch RAISE_DIALOG signal, and now both Dock-reopen handlers. There were four near-copies of "restore the window" and three of "hide it", disagreeing on the order of Iconize(false)/Show(true) and on whether the macOS accessory-mode flag was part of the operation -- CamuleGuiApp::MacReopenApp() was the one that omitted it, so re-launching from Finder while hidden to the tray brought the window back with no Dock icon. Unifying them also gives OnMinimize's restore branch the full sequence it never had: it was a bare Show(true), and now clears the iconized bit, restores the Dock icon and raises the window. Two more monolithic-only pieces of the same feature move to shared code. The tray-preference guards (no SNI backend on Linux, Wayland session, tray icon off) lived in CamuleApp::OnInit, so amulegui could run with MinToTray enabled under Wayland or against an invisible GtkStatusIcon -- both of which hide the window with nothing to bring it back. They are now CamuleAppCommon::SanitiseTrayPreferences(), called by CamuleApp::OnInit as before and by CamuleRemoteGuiApp::Startup(), which has to precede InitGui(): the CamuleDlg constructor reads UseTrayIcon() to decide whether to build the tray icon at all. And the libayatana-appindicator probe was gated on BUILD_MONOLITHIC, leaving a remote-GUI-only build on the legacy backend with no warning, while src/CMakeLists.txt already linked SNI into amulegui when the flag happened to be set. CamuleDlg::OnClose keeps its plain Show(false): on macOS the Dock icon is meant to survive the close button, and MacReopenApp is what brings the window back from it. Its comment claimed the opposite; corrected. Builds clean on macOS, Ubuntu ARM64 and Windows ARM64; clang-format and both clang-tidy tiers clean over the diff.
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.
Summary
Drops the
wxFlexGridSizeron the Preferences → Advanced tab in favour of a plainwxBoxSizer(wxVERTICAL), matching every other prefs tab. Eliminates the hover-time GTK warnings @Stoatwblr reported on #832.Why
PreferencesaMuleTweaksTabis the only prefs tab whose root sizer is a 1-columnwxFlexGridSizerwithAddGrowableRow(1). Inside awxNotebook, GTK's hover re-layout pass on the tab strip sometimes queries child sizes against a parent that hasn't been realised yet. A flex grid then redistributes those sub-minimum vertical allocations across the growable row's static box, and the inner widgets refuse the under-sized allocation with ag_warning:GtkScale(one per slider in the tab) —Negative content height -15 (allocation 9, extents 12x12)+ matchingtroughcomplaint, because the scale trough needs ≥12 px.GtkCheckButton(IDC_PREVENT_SLEEP) —for_size smaller than min-size (0 < 14)andNegative content height -3, because thechecknode needs ≥14 px.Tabs with a plain
wxBoxSizer(Statistics, GUI Tweaks, etc.) don't fire because the box never compresses children below their intrinsic size. Switching this tab to the same shape stops the warnings.Refs
Closes #832