Fix #2679 (recovered after Claude Code exited before committing)#2742
Merged
Conversation
Contributor
Author
There was a problem hiding this comment.
Clean application of the PersistentDialog migration recipe from #2672:
- Base class swap with the geometry key
"ProfileImportExportDialogGeometry"— new key, no prior persisted geometry to migrate. - Content moved onto
bodyWidget(), manualFramelessResizer::installandFramelessWindowTitleBarconstruction removed (now base-owned). closeEventcorrectly chains toPersistentDialog::closeEvent(event)so geometry still flushes on close, and the busy-transfer guard runs first.MainWindow::setFramelessWindowloses its explicit-cast branch — frameless propagation now flows throughm_persistentDialogs, exactly as the issue described.showOrRaisePersistentapplies the currentFramelessWindowsetting on construction, replacing the inlineAppSettings-drivensetFramelessModethat the old constructor did.
One thing worth flagging — scope vs. issue linkage: issue #2679 covers four dialog migrations (ProfileImportExportDialog, RadioSetupDialog, PropDashboardDialog, TxBandDialog) plus a wasFresh comment polish. This PR does only the first. Fixes #2679 in the PR body will auto-close the umbrella when merged, leaving the other three migrations orphaned. Suggest changing to Refs #2679 (or Part of #2679) so the issue stays open until the remaining dialogs land.
Thanks for the migration — looks good otherwise.
This was referenced May 16, 2026
aethersdr-agent Bot
added a commit
that referenced
this pull request
May 16, 2026
…2768). Principle I. Phase A — extract the 119-line inline construction at MainWindow.cpp:6548 into src/gui/TxBandDialog.{cpp,h} as a real class, parameterized on RadioModel*. The active TX-profile is snapshotted into the window title at construction (WA_DeleteOnClose means the dialog is reconstructed on every open, so the title stays current without a profileChanged signal). Phase B — inherit from PersistentDialog so the geometry persists across launches under AppSettings key TxBandDialogGeometry, and the frameless title-bar / FramelessResizer plumbing comes from the base class. The lazy-construct site in MainWindow becomes a one-liner showOrRaisePersistent call, and the m_txBandDialog branch in setFramelessWindow() is removed because the m_persistentDialogs registry handles propagation. FlexLib semantics preserved verbatim — every transmit bandset / interlock bandset command (rfpower, tunepower, inhibit, hwalc_enabled, acc_tx_enabled, rca_txreq_enable, acc_txreq_enable, tx{1,2,3}_enabled) is sent exactly as the inline code did. Principle I: FlexLib is the protocol authority, and these are the canonical setter forms in transmit-bandset / interlock-bandset parsers — do not paraphrase. Follow-up to #2742 (ProfileImportExportDialog migration) and second of three under the #2679 umbrella (PropDashboardDialog #2767 first, RadioSetupDialog to follow). Blast radius: risk_score=0.363, 5 high-risk affected (top: AetherSDR::MainWindow::MainWindow, AetherSDR::AppSettings::instance, AetherSDR::MainWindow::buildMenuBar). All high-risk hits are structural bridges (MainWindow ctor, buildMenuBar, AppSettings) reached only through the existing setFramelessWindow + showOrRaisePersistent pattern that PR #2742 already validated; no new structural edges introduced. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
aethersdr-agent Bot
added a commit
that referenced
this pull request
May 16, 2026
Mechanical migration matching PR #2742's recipe (1/3 of the umbrella PersistentDialog work tracked in #2679): - PropDashboardDialog.h now inherits from PersistentDialog; drops the manual m_titleBar/m_bodyLayout members and the setFramelessMode decl (provided by the base class). - Constructor delegates to PersistentDialog("HF Propagation Dashboard", "PropDashboardDialogGeometry", parent) and installs content into bodyWidget() instead of a hand-rolled body widget. - Drops the standalone setFramelessMode() impl and the inline FramelessResizer::install(this) bootstrap. - MainWindow::showPropDashboard() collapses to a single showOrRaisePersistent(m_propDashboardDialog, m_propForecast) call. - Removed the qobject_cast<PropDashboardDialog*> branch from setFramelessWindow(): the m_persistentDialogs registry already auto-propagates frameless toggles to every PersistentDialog-derived child. - Retyped m_propDashboardDialog from QPointer<QDialog> to QPointer<PropDashboardDialog>. The user-facing window title is preserved verbatim ("HF Propagation Dashboard") — Principle III: on-screen labels are inviolable for the user, so the abbreviation in the recipe was not adopted. closeEvent recipe step is a no-op for this dialog (no override exists; base class handles geometry-flush on close). Geometry persists under AppSettings key PropDashboardDialogGeometry. No behavior change to refresh logic, charts, panels, or the NetworkAccessManager fetch path. Blast radius: risk_score=0.163, 2 high-risk affected (top: MainWindow::MainWindow, MainWindow::buildMenuBar). Both are reached through the usual MainWindow include of PropDashboardDialog.h; all PropDashboardDialog references in src/ are accounted for and updated. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
5 tasks
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
Fixes #2679
What was changed
Fix #2679 (recovered after Claude Code exited before committing)
Files modified
src/gui/MainWindow.cppsrc/gui/ProfileImportExportDialog.cppsrc/gui/ProfileImportExportDialog.hGenerated by AetherClaude (automated agent for AetherSDR)