You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #2580 (b94d0d48) fixed a macOS first-open placement bug in 5 dialogs where setGeometry(geom) was called unconditionally inside setFramelessMode(bool), even when the dialog hadn't been shown yet. On macOS, restoring geometry during the hidden-construction phase captures the pre-show default position (top-left), which prevents Qt's normal placement logic (centering on parent, last position, etc.) from running.
The established fix is:
if (wasVisible) {
setGeometry(geom); // only on runtime toggle, when dialog IS already placed
}
PR #2580's scope was "Network Diagnostics, AetherDSP Settings, Memory Channels, SpotHub, and the newly updated popouts." Three more dialogs in the same code-shape were left for follow-up.
(slightly different shape — no setFramelessMode method, the toggle is inline — but same setGeometry(geom) after flag change without the wasVisible guard)
Fix
Wrap each setGeometry(geom) in if (wasVisible) { setGeometry(geom); }. Trivial, mechanical, ~6 lines added across 3 files.
Verification
Build clean
On macOS: open each dialog from a cold app launch. Pre-fix, expect top-left placement; post-fix, expect Qt's normal centering/last-position behavior.
Runtime frameless toggle (View → Use frameless windows) should still preserve geometry on already-visible dialogs.
Background
PR #2580 (
b94d0d48) fixed a macOS first-open placement bug in 5 dialogs wheresetGeometry(geom)was called unconditionally insidesetFramelessMode(bool), even when the dialog hadn't been shown yet. On macOS, restoring geometry during the hidden-construction phase captures the pre-show default position (top-left), which prevents Qt's normal placement logic (centering on parent, last position, etc.) from running.The established fix is:
PR #2580's scope was "Network Diagnostics, AetherDSP Settings, Memory Channels, SpotHub, and the newly updated popouts." Three more dialogs in the same code-shape were left for follow-up.
Sites needing the same fix
1.
src/gui/PropDashboardDialog.cpp—PropDashboardDialog::setFramelessMode()2.
src/gui/RadioSetupDialog.cpp—RadioSetupDialog::setFramelessMode()3.
src/gui/PanFloatingWindow.cpp— flag-change handler(slightly different shape — no
setFramelessModemethod, the toggle is inline — but samesetGeometry(geom)after flag change without thewasVisibleguard)Fix
Wrap each
setGeometry(geom)inif (wasVisible) { setGeometry(geom); }. Trivial, mechanical, ~6 lines added across 3 files.Verification
Scope and risk
Context
73, Jeremy KK7GWY & Claude (AI dev partner)