refactor(gui): migrate 7 dialogs to PersistentDialog base class (#2672). Principle III.#2676
Merged
ten9876 merged 1 commit intoMay 15, 2026
Conversation
…. Principle III.
Lands the six follow-up migrations the issue tracked plus the
PanLayoutDialog modal special case. Net: −1102 / +98 lines.
Dialogs migrated:
PanLayoutDialog modal fixed-size, no persist key
MultiFlexDialog modal, gains FooDialogGeometry
MidiMappingDialog non-modal, FramelessWindowTitleBar swap
MemoryDialog non-modal, showEvent kept for search focus
AetherDspDialog hand-rolled chrome + drag handlers deleted
NetworkDiagnosticsDialog hand-rolled chrome + 8-axis resize deleted
DxClusterDialog tabbed dialog, signal wiring guarded by
wasFresh-pattern
Each migration replaces:
* setFramelessMode() / closeEvent / moveEvent / resizeEvent overrides
* FramelessResizer::install + manual setFramelessMode(AppSettings…)
in the ctor
* Hand-rolled m_titleBar / m_outerLayout / m_bodyLayout members
* (AetherDsp / NetworkDiag) the entire ~70-line hand-rolled title
bar widget tree plus FramelessMoveHelper eventFilter cases
…with a single base-class ctor call carrying the title and
"FooDialogGeometry" key. All six previously-non-persistent dialogs
gain geometry persistence (correction posted to the issue: NONE of
them currently persisted geometry, despite the table claiming four
did — the `geometry()` calls in setFramelessMode were in-process
preservation across frameless toggle, not disk-backed restore).
MainWindow changes:
* QPointer<QDialog> members re-typed to concrete dialog classes so
showOrRaisePersistent template binds correctly
* 6 qobject_cast branches in setFramelessWindow deleted —
m_persistentDialogs registry now auto-propagates the frameless
toggle on every PersistentDialog-derived instance
* NEW ensureAetherDspDialog() helper consolidates 7 duplicated
AetherDspDialog construct sites — each had been re-pasting the
same ~17 signal connections wiring NR2/NR4/DFNR/MNR parameter
changes back to AudioEngine. Now a single call site.
Verified locally on Linux: open each dialog → resize → close →
restart → reopen — geometry restores per dialog. Toggle View →
Frameless Window → chrome flips on all of them without losing
geometry.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Lands the six follow-up migrations the issue tracked plus the
PanLayoutDialog modal special case. Net: −1102 / +98 lines.
Dialogs migrated:
PanLayoutDialog modal fixed-size, no persist key
MultiFlexDialog modal, gains FooDialogGeometry
MidiMappingDialog non-modal, FramelessWindowTitleBar swap
MemoryDialog non-modal, showEvent kept for search focus
AetherDspDialog hand-rolled chrome + drag handlers deleted
NetworkDiagnosticsDialog hand-rolled chrome + 8-axis resize deleted
DxClusterDialog tabbed dialog, signal wiring guarded by
wasFresh-pattern
Each migration replaces:
in the ctor
bar widget tree plus FramelessMoveHelper eventFilter cases
…with a single base-class ctor call carrying the title and
"FooDialogGeometry" key. All six previously-non-persistent dialogs
gain geometry persistence (correction posted to the issue: NONE of
them currently persisted geometry, despite the table claiming four
did — the
geometry()calls in setFramelessMode were in-processpreservation across frameless toggle, not disk-backed restore).
MainWindow changes:
showOrRaisePersistent template binds correctly
m_persistentDialogs registry now auto-propagates the frameless
toggle on every PersistentDialog-derived instance
AetherDspDialog construct sites — each had been re-pasting the
same ~17 signal connections wiring NR2/NR4/DFNR/MNR parameter
changes back to AudioEngine. Now a single call site.
Verified locally on Linux: open each dialog → resize → close →
restart → reopen — geometry restores per dialog. Toggle View →
Frameless Window → chrome flips on all of them without losing
geometry.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com