Skip to content

gui: pin wxSlider min height on preferences tabs - #826

Merged
mrjimenez merged 1 commit into
amule-project:masterfrom
got3nks:fix/slider-min-height
Jun 2, 2026
Merged

gui: pin wxSlider min height on preferences tabs#826
mrjimenez merged 1 commit into
amule-project:masterfrom
got3nks:fix/slider-min-height

Conversation

@got3nks

@got3nks got3nks commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Summary

8 wxSlider widgets across the preferences tabs were constructed with wxSize(N, -1) (height = "let GTK pick"). Under GTK3, a rapid re-allocation pass — e.g. when the cursor leaves the dialog and re-layout fires — can briefly hand the slider a height smaller than the thumb's intrinsic extents, which yields:

Gtk-WARNING: Negative content height -15 (allocation 9, extents 12x12) while allocating gadget (node scale, owner GtkScale)
Gtk-WARNING: Negative content height -4 (allocation 0, extents 2x2) while allocating gadget (node trough, owner GtkScale)

Reported in #815. The widgets render fine once layout settles — this is GTK complaining about transient sizer math, not a functional bug — but it floods stderr while debugging.

Pin each preferences slider to a 24 px floor (above the thumb's natural ~12 px extents, matches GtkScale's default natural height under stock themes). Mac/Win unaffected (GTK-only warning); cosmetic on Linux, just cleans up stderr noise.

Test plan

  • macOS: compiles + slider widgets render unchanged
  • Linux: confirm Gtk-WARNING no longer fires when opening preferences and moving cursor in/out of the dialog

GTK3 sometimes squeezes a wxSlider below its intrinsic thumb extents
during a rapid re-allocation pass (e.g. when the cursor leaves the
preferences dialog), producing cosmetic Gtk-WARNING output:

  Gtk-WARNING: Negative content height -15 (allocation 9, extents 12x12)
  while allocating gadget (node scale, owner GtkScale)

Reported in amule-project#815. The widgets render correctly once layout settles -
this is GTK complaining about transient size math, not a functional bug.

Pin each preferences slider to a 24 px minimum height so GTK has a
floor above the thumb's natural extents and stops emitting the warning.
@got3nks got3nks mentioned this pull request Jun 2, 2026
@mrjimenez
mrjimenez merged commit 90397ea into amule-project:master Jun 2, 2026
7 checks passed
@got3nks got3nks mentioned this pull request Jun 3, 2026
mrjimenez pushed a commit that referenced this pull request Jun 3, 2026
…ence GTK warnings

Stoatwblr reported in #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 #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 #832
@got3nks
got3nks deleted the fix/slider-min-height branch June 3, 2026 14:16
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
amule-project#824 hardcoded "ms" on the grounds that an SI symbol reads the same in
every language. That is wrong: ru and uk write it "мс", and it is
localised in zh and ja as well, so the one hardcoded unit in the UI was
also the one users of those locales could not read in their own script.

Translated like every other unit the interface shows. The number stays
out of the catalog entry, matching how CastSecondsToHM() keeps it out of
_("secs") and _("mins") -- a translator sees "ms" on its own rather than
a format string.

Catalogs regenerated; "ms" is the only new string.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants