From ed279812f6ff638ce76de7a9b0b0252c49f59def Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Tue, 8 Nov 2022 09:43:58 +0000 Subject: [PATCH] Set window width to account for miniumum width required for visible rollups. --- .../channelrx/chanalyzer/chanalyzergui.cpp | 3 +- plugins/channelrx/demodais/aisdemodgui.cpp | 16 ++--------- plugins/channelrx/demodais/aisdemodgui.ui | 26 ++++++++++------- plugins/channelrx/demodapt/aptdemodgui.cpp | 3 +- plugins/channelrx/demodbfm/bfmdemodgui.cpp | 3 +- plugins/channelrx/demodbfm/bfmdemodgui.ui | 6 ++-- .../demodchirpchat/chirpchatdemodgui.cpp | 3 +- plugins/channelrx/demoddab/dabdemodgui.cpp | 3 +- .../channelrx/demodfreedv/freedvdemodgui.cpp | 3 +- .../channelrx/demodpacket/packetdemodgui.cpp | 3 +- .../channelrx/demodpager/pagerdemodgui.cpp | 16 ++--------- plugins/channelrx/demodpager/pagerdemodgui.ui | 22 +++++++++------ .../demodradiosonde/radiosondedemodgui.cpp | 16 ++--------- .../demodradiosonde/radiosondedemodgui.ui | 22 +++++++++------ plugins/channelrx/demodssb/ssbdemodgui.cpp | 12 +++----- .../channelrx/demodvormc/vordemodmcgui.cpp | 3 +- plugins/channelrx/filesink/filesinkgui.cpp | 3 +- .../channelrx/freqtracker/freqtrackergui.ui | 28 +++++++++++-------- plugins/channelrx/localsink/localsinkgui.ui | 10 +++++-- .../channelrx/noisefigure/noisefiguregui.cpp | 3 +- .../radioastronomy/radioastronomygui.cpp | 3 +- .../channelrx/radioclock/radioclockgui.cpp | 16 ++--------- plugins/channelrx/radioclock/radioclockgui.ui | 20 ++++++++----- .../remotetcpsink/remotetcpsinkgui.ui | 20 ++++++++----- .../sigmffilesink/sigmffilesinkgui.cpp | 3 +- plugins/channelrx/udpsink/udpsinkgui.cpp | 3 +- .../mod802.15.4/ieee_802_15_4_modgui.cpp | 3 +- plugins/channeltx/modais/aismodgui.cpp | 3 +- plugins/channeltx/modfreedv/freedvmodgui.cpp | 3 +- plugins/channeltx/modpacket/packetmodgui.cpp | 3 +- plugins/channeltx/modssb/ssbmodgui.cpp | 3 +- plugins/channeltx/udpsource/udpsourcegui.cpp | 3 +- plugins/feature/ais/aisgui.cpp | 3 +- .../feature/antennatools/antennatoolsgui.cpp | 3 +- .../demodanalyzer/demodanalyzergui.cpp | 3 +- plugins/feature/radiosonde/radiosondegui.cpp | 3 +- .../satellitetracker/satellitetrackergui.cpp | 3 +- .../feature/startracker/startrackergui.cpp | 3 +- .../feature/vorlocalizer/vorlocalizergui.cpp | 3 +- sdrgui/channel/channelgui.h | 1 + sdrgui/feature/featuregui.h | 1 + sdrgui/gui/rollupcontents.cpp | 4 ++- 42 files changed, 167 insertions(+), 147 deletions(-) diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.cpp b/plugins/channelrx/chanalyzer/chanalyzergui.cpp index e32fc95e9..8591cd8ee 100644 --- a/plugins/channelrx/chanalyzer/chanalyzergui.cpp +++ b/plugins/channelrx/chanalyzer/chanalyzergui.cpp @@ -467,7 +467,8 @@ void ChannelAnalyzerGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/demodais/aisdemodgui.cpp b/plugins/channelrx/demodais/aisdemodgui.cpp index 0d78263fa..6af436bd7 100644 --- a/plugins/channelrx/demodais/aisdemodgui.cpp +++ b/plugins/channelrx/demodais/aisdemodgui.cpp @@ -369,19 +369,6 @@ void AISDemodGUI::filter() void AISDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) { - if (widget == ui->scopeContainer) - { - if (rollDown) - { - // Make wide enough for scope controls - setMinimumWidth(716); - } - else - { - setMinimumWidth(352); - } - } - RollupContents *rollupContents = getRollupContents(); if (rollupContents->hasExpandableWidgets()) { @@ -391,7 +378,8 @@ void AISDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/demodais/aisdemodgui.ui b/plugins/channelrx/demodais/aisdemodgui.ui index dce05b852..4fbfb0ab5 100644 --- a/plugins/channelrx/demodais/aisdemodgui.ui +++ b/plugins/channelrx/demodais/aisdemodgui.ui @@ -721,10 +721,16 @@ 20 400 - 351 + 716 341 + + + 714 + 0 + + Waveforms @@ -911,11 +917,6 @@ - - ButtonSwitch - QToolButton -
gui/buttonswitch.h
-
RollupContents QWidget @@ -923,10 +924,9 @@ 1 - ValueDialZ - QWidget -
gui/valuedialz.h
- 1 + ButtonSwitch + QToolButton +
gui/buttonswitch.h
LevelMeterSignalDB @@ -934,6 +934,12 @@
gui/levelmeter.h
1
+ + ValueDialZ + QWidget +
gui/valuedialz.h
+ 1 +
GLScope QWidget diff --git a/plugins/channelrx/demodapt/aptdemodgui.cpp b/plugins/channelrx/demodapt/aptdemodgui.cpp index ea5b395b5..e805a6161 100644 --- a/plugins/channelrx/demodapt/aptdemodgui.cpp +++ b/plugins/channelrx/demodapt/aptdemodgui.cpp @@ -556,7 +556,8 @@ void APTDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/demodbfm/bfmdemodgui.cpp b/plugins/channelrx/demodbfm/bfmdemodgui.cpp index f301ee0df..8d74020d3 100644 --- a/plugins/channelrx/demodbfm/bfmdemodgui.cpp +++ b/plugins/channelrx/demodbfm/bfmdemodgui.cpp @@ -325,7 +325,8 @@ void BFMDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/demodbfm/bfmdemodgui.ui b/plugins/channelrx/demodbfm/bfmdemodgui.ui index c4ade4633..602bbf7c7 100644 --- a/plugins/channelrx/demodbfm/bfmdemodgui.ui +++ b/plugins/channelrx/demodbfm/bfmdemodgui.ui @@ -18,7 +18,7 @@ - 642 + 450 0 @@ -48,7 +48,7 @@ - 640 + 450 0 @@ -553,7 +553,7 @@ - 640 + 760 0 diff --git a/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp b/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp index 0521ef30e..f0d6c1d70 100644 --- a/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp +++ b/plugins/channelrx/demodchirpchat/chirpchatdemodgui.cpp @@ -338,7 +338,8 @@ void ChirpChatDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/demoddab/dabdemodgui.cpp b/plugins/channelrx/demoddab/dabdemodgui.cpp index d52f9ebbc..31d97967e 100644 --- a/plugins/channelrx/demoddab/dabdemodgui.cpp +++ b/plugins/channelrx/demoddab/dabdemodgui.cpp @@ -401,7 +401,8 @@ void DABDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/demodfreedv/freedvdemodgui.cpp b/plugins/channelrx/demodfreedv/freedvdemodgui.cpp index 4d11d62bf..2168b0a16 100644 --- a/plugins/channelrx/demodfreedv/freedvdemodgui.cpp +++ b/plugins/channelrx/demodfreedv/freedvdemodgui.cpp @@ -257,7 +257,8 @@ void FreeDVDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/demodpacket/packetdemodgui.cpp b/plugins/channelrx/demodpacket/packetdemodgui.cpp index 45fc8e6d5..363a80f40 100644 --- a/plugins/channelrx/demodpacket/packetdemodgui.cpp +++ b/plugins/channelrx/demodpacket/packetdemodgui.cpp @@ -383,7 +383,8 @@ void PacketDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/demodpager/pagerdemodgui.cpp b/plugins/channelrx/demodpager/pagerdemodgui.cpp index 4e63805ac..2de372763 100644 --- a/plugins/channelrx/demodpager/pagerdemodgui.cpp +++ b/plugins/channelrx/demodpager/pagerdemodgui.cpp @@ -418,19 +418,6 @@ void PagerDemodGUI::filter() void PagerDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) { - if (widget == ui->scopeContainer) - { - if (rollDown) - { - // Make wide enough for scope controls - setMinimumWidth(716); - } - else - { - setMinimumWidth(352); - } - } - RollupContents *rollupContents = getRollupContents(); if (rollupContents->hasExpandableWidgets()) { @@ -440,7 +427,8 @@ void PagerDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/demodpager/pagerdemodgui.ui b/plugins/channelrx/demodpager/pagerdemodgui.ui index be681d34a..240b42678 100644 --- a/plugins/channelrx/demodpager/pagerdemodgui.ui +++ b/plugins/channelrx/demodpager/pagerdemodgui.ui @@ -816,10 +816,16 @@ 20 400 - 351 + 714 341 + + + 714 + 0 + + Waveforms @@ -1019,10 +1025,9 @@ 1 - ValueDialZ - QWidget -
gui/valuedialz.h
- 1 + ButtonSwitch + QToolButton +
gui/buttonswitch.h
LevelMeterSignalDB @@ -1031,9 +1036,10 @@ 1 - ButtonSwitch - QToolButton -
gui/buttonswitch.h
+ ValueDialZ + QWidget +
gui/valuedialz.h
+ 1
GLScope diff --git a/plugins/channelrx/demodradiosonde/radiosondedemodgui.cpp b/plugins/channelrx/demodradiosonde/radiosondedemodgui.cpp index ec051fbcc..2e6d07b2a 100644 --- a/plugins/channelrx/demodradiosonde/radiosondedemodgui.cpp +++ b/plugins/channelrx/demodradiosonde/radiosondedemodgui.cpp @@ -475,19 +475,6 @@ void RadiosondeDemodGUI::filter() void RadiosondeDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) { - if (widget == ui->scopeContainer) - { - if (rollDown) - { - // Make wide enough for scope controls - setMinimumWidth(716); - } - else - { - setMinimumWidth(352); - } - } - RollupContents *rollupContents = getRollupContents(); if (rollupContents->hasExpandableWidgets()) { @@ -497,7 +484,8 @@ void RadiosondeDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/demodradiosonde/radiosondedemodgui.ui b/plugins/channelrx/demodradiosonde/radiosondedemodgui.ui index 3edf4d26c..734af6324 100644 --- a/plugins/channelrx/demodradiosonde/radiosondedemodgui.ui +++ b/plugins/channelrx/demodradiosonde/radiosondedemodgui.ui @@ -855,10 +855,16 @@ 20 400 - 351 + 714 341 + + + 714 + 0 + + Waveforms @@ -1061,10 +1067,9 @@ 1 - ValueDialZ - QWidget -
gui/valuedialz.h
- 1 + ButtonSwitch + QToolButton +
gui/buttonswitch.h
LevelMeterSignalDB @@ -1073,9 +1078,10 @@ 1 - ButtonSwitch - QToolButton -
gui/buttonswitch.h
+ ValueDialZ + QWidget +
gui/valuedialz.h
+ 1
GLScope diff --git a/plugins/channelrx/demodssb/ssbdemodgui.cpp b/plugins/channelrx/demodssb/ssbdemodgui.cpp index 62a5e2388..7266f594a 100644 --- a/plugins/channelrx/demodssb/ssbdemodgui.cpp +++ b/plugins/channelrx/demodssb/ssbdemodgui.cpp @@ -316,19 +316,15 @@ void SSBDemodGUI::onWidgetRolled(QWidget* widget, bool rollDown) RollupContents *rollupContents = getRollupContents(); - if (rollupContents->hasExpandableWidgets()) - { - qDebug("SSBDemodGUI::onWidgetRolled: set vertical policy expanding"); + if (rollupContents->hasExpandableWidgets()) { setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Expanding); - } - else - { - qDebug("SSBDemodGUI::onWidgetRolled: set vertical policy fixed"); + } else { setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed); } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/demodvormc/vordemodmcgui.cpp b/plugins/channelrx/demodvormc/vordemodmcgui.cpp index c86912709..00bf6521c 100644 --- a/plugins/channelrx/demodvormc/vordemodmcgui.cpp +++ b/plugins/channelrx/demodvormc/vordemodmcgui.cpp @@ -1116,7 +1116,8 @@ void VORDemodMCGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/filesink/filesinkgui.cpp b/plugins/channelrx/filesink/filesinkgui.cpp index fb5d7fb2d..da1234624 100644 --- a/plugins/channelrx/filesink/filesinkgui.cpp +++ b/plugins/channelrx/filesink/filesinkgui.cpp @@ -364,7 +364,8 @@ void FileSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/freqtracker/freqtrackergui.ui b/plugins/channelrx/freqtracker/freqtrackergui.ui index cc5d7a76f..d9cfe8c5b 100644 --- a/plugins/channelrx/freqtracker/freqtrackergui.ui +++ b/plugins/channelrx/freqtracker/freqtrackergui.ui @@ -40,6 +40,12 @@ 151 + + + 300 + 0 + + Settings @@ -814,6 +820,17 @@
gui/rollupcontents.h
1
+ + ButtonSwitch + QToolButton +
gui/buttonswitch.h
+
+ + LevelMeterSignalDB + QWidget +
gui/levelmeter.h
+ 1 +
GLSpectrum QWidget @@ -832,17 +849,6 @@
gui/valuedialz.h
1
- - LevelMeterSignalDB - QWidget -
gui/levelmeter.h
- 1 -
- - ButtonSwitch - QToolButton -
gui/buttonswitch.h
-
diff --git a/plugins/channelrx/localsink/localsinkgui.ui b/plugins/channelrx/localsink/localsinkgui.ui index 8ebd37b1b..114225121 100644 --- a/plugins/channelrx/localsink/localsinkgui.ui +++ b/plugins/channelrx/localsink/localsinkgui.ui @@ -11,7 +11,7 @@ - + 0 0 @@ -42,10 +42,16 @@ 10 10 - 301 + 302 91 + + + 302 + 0 + + Settings diff --git a/plugins/channelrx/noisefigure/noisefiguregui.cpp b/plugins/channelrx/noisefigure/noisefiguregui.cpp index 703f69ebc..70d308f1b 100644 --- a/plugins/channelrx/noisefigure/noisefiguregui.cpp +++ b/plugins/channelrx/noisefigure/noisefiguregui.cpp @@ -546,7 +546,8 @@ void NoiseFigureGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/radioastronomy/radioastronomygui.cpp b/plugins/channelrx/radioastronomy/radioastronomygui.cpp index 331feff1b..4a4e13182 100644 --- a/plugins/channelrx/radioastronomy/radioastronomygui.cpp +++ b/plugins/channelrx/radioastronomy/radioastronomygui.cpp @@ -1915,7 +1915,8 @@ void RadioAstronomyGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/radioclock/radioclockgui.cpp b/plugins/channelrx/radioclock/radioclockgui.cpp index f5cd73d6b..7637b725a 100644 --- a/plugins/channelrx/radioclock/radioclockgui.cpp +++ b/plugins/channelrx/radioclock/radioclockgui.cpp @@ -209,19 +209,6 @@ void RadioClockGUI::on_timezone_currentIndexChanged(int index) void RadioClockGUI::onWidgetRolled(QWidget* widget, bool rollDown) { - if (widget == ui->scopeContainer) - { - if (rollDown) - { - // Make wide enough for scope controls - setMinimumWidth(716); - } - else - { - setMinimumWidth(352); - } - } - RollupContents *rollupContents = getRollupContents(); if (rollupContents->hasExpandableWidgets()) { @@ -231,7 +218,8 @@ void RadioClockGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/radioclock/radioclockgui.ui b/plugins/channelrx/radioclock/radioclockgui.ui index 4f3d6cd2d..ab7bf35ba 100644 --- a/plugins/channelrx/radioclock/radioclockgui.ui +++ b/plugins/channelrx/radioclock/radioclockgui.ui @@ -591,10 +591,16 @@ 20 250 - 351 + 714 341 + + + 714 + 0 + + Waveforms @@ -643,18 +649,18 @@
gui/rollupcontents.h
1 - - ValueDialZ - QWidget -
gui/valuedialz.h
- 1 -
LevelMeterSignalDB QWidget
gui/levelmeter.h
1
+ + ValueDialZ + QWidget +
gui/valuedialz.h
+ 1 +
GLScope QWidget diff --git a/plugins/channelrx/remotetcpsink/remotetcpsinkgui.ui b/plugins/channelrx/remotetcpsink/remotetcpsinkgui.ui index 000417805..ef5eb6c01 100644 --- a/plugins/channelrx/remotetcpsink/remotetcpsinkgui.ui +++ b/plugins/channelrx/remotetcpsink/remotetcpsinkgui.ui @@ -24,7 +24,7 @@ - 360 + 560 16777215 @@ -45,6 +45,12 @@ 141 + + + 334 + 0 + + Settings @@ -447,6 +453,12 @@ + + RollupContents + QWidget +
gui/rollupcontents.h
+ 1 +
ValueDialZ QWidget @@ -459,12 +471,6 @@
gui/valuedial.h
1
- - RollupContents - QWidget -
gui/rollupcontents.h
- 1 -
diff --git a/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp b/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp index 25e7a6a63..1e1f78387 100644 --- a/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp +++ b/plugins/channelrx/sigmffilesink/sigmffilesinkgui.cpp @@ -356,7 +356,8 @@ void SigMFFileSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channelrx/udpsink/udpsinkgui.cpp b/plugins/channelrx/udpsink/udpsinkgui.cpp index 3043c2a1c..bc8d7590c 100644 --- a/plugins/channelrx/udpsink/udpsinkgui.cpp +++ b/plugins/channelrx/udpsink/udpsinkgui.cpp @@ -609,7 +609,8 @@ void UDPSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.cpp b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.cpp index ae3dddd83..38ff4fa9c 100644 --- a/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.cpp +++ b/plugins/channeltx/mod802.15.4/ieee_802_15_4_modgui.cpp @@ -329,7 +329,8 @@ void IEEE_802_15_4_ModGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channeltx/modais/aismodgui.cpp b/plugins/channeltx/modais/aismodgui.cpp index 6514ee8ba..89e819d37 100644 --- a/plugins/channeltx/modais/aismodgui.cpp +++ b/plugins/channeltx/modais/aismodgui.cpp @@ -352,7 +352,8 @@ void AISModGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channeltx/modfreedv/freedvmodgui.cpp b/plugins/channeltx/modfreedv/freedvmodgui.cpp index 58325a00a..154a4b153 100644 --- a/plugins/channeltx/modfreedv/freedvmodgui.cpp +++ b/plugins/channeltx/modfreedv/freedvmodgui.cpp @@ -304,7 +304,8 @@ void FreeDVModGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channeltx/modpacket/packetmodgui.cpp b/plugins/channeltx/modpacket/packetmodgui.cpp index 74d0b793b..067842d42 100644 --- a/plugins/channeltx/modpacket/packetmodgui.cpp +++ b/plugins/channeltx/modpacket/packetmodgui.cpp @@ -389,7 +389,8 @@ void PacketModGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channeltx/modssb/ssbmodgui.cpp b/plugins/channeltx/modssb/ssbmodgui.cpp index 7a3749b09..b384822da 100644 --- a/plugins/channeltx/modssb/ssbmodgui.cpp +++ b/plugins/channeltx/modssb/ssbmodgui.cpp @@ -368,7 +368,8 @@ void SSBModGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/channeltx/udpsource/udpsourcegui.cpp b/plugins/channeltx/udpsource/udpsourcegui.cpp index 0dd9c2533..bcf5d3428 100644 --- a/plugins/channeltx/udpsource/udpsourcegui.cpp +++ b/plugins/channeltx/udpsource/udpsourcegui.cpp @@ -491,7 +491,8 @@ void UDPSourceGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/feature/ais/aisgui.cpp b/plugins/feature/ais/aisgui.cpp index eaa6749c6..0a4bb5976 100644 --- a/plugins/feature/ais/aisgui.cpp +++ b/plugins/feature/ais/aisgui.cpp @@ -176,7 +176,8 @@ void AISGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/feature/antennatools/antennatoolsgui.cpp b/plugins/feature/antennatools/antennatoolsgui.cpp index 1b2141062..901c2b9c1 100644 --- a/plugins/feature/antennatools/antennatoolsgui.cpp +++ b/plugins/feature/antennatools/antennatoolsgui.cpp @@ -120,7 +120,8 @@ void AntennaToolsGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/feature/demodanalyzer/demodanalyzergui.cpp b/plugins/feature/demodanalyzer/demodanalyzergui.cpp index fd6d39bcf..85f3d4b9c 100644 --- a/plugins/feature/demodanalyzer/demodanalyzergui.cpp +++ b/plugins/feature/demodanalyzer/demodanalyzergui.cpp @@ -135,7 +135,8 @@ void DemodAnalyzerGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/feature/radiosonde/radiosondegui.cpp b/plugins/feature/radiosonde/radiosondegui.cpp index c4b1af7a6..529725c0e 100644 --- a/plugins/feature/radiosonde/radiosondegui.cpp +++ b/plugins/feature/radiosonde/radiosondegui.cpp @@ -127,7 +127,8 @@ void RadiosondeGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/feature/satellitetracker/satellitetrackergui.cpp b/plugins/feature/satellitetracker/satellitetrackergui.cpp index 99aa526d1..fbdd203eb 100644 --- a/plugins/feature/satellitetracker/satellitetrackergui.cpp +++ b/plugins/feature/satellitetracker/satellitetrackergui.cpp @@ -239,7 +239,8 @@ void SatelliteTrackerGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/feature/startracker/startrackergui.cpp b/plugins/feature/startracker/startrackergui.cpp index b7ee738b4..2675453f2 100644 --- a/plugins/feature/startracker/startrackergui.cpp +++ b/plugins/feature/startracker/startrackergui.cpp @@ -234,7 +234,8 @@ void StarTrackerGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/plugins/feature/vorlocalizer/vorlocalizergui.cpp b/plugins/feature/vorlocalizer/vorlocalizergui.cpp index b1af65edd..88ee67cd9 100644 --- a/plugins/feature/vorlocalizer/vorlocalizergui.cpp +++ b/plugins/feature/vorlocalizer/vorlocalizergui.cpp @@ -807,7 +807,8 @@ void VORLocalizerGUI::onWidgetRolled(QWidget* widget, bool rollDown) } int h = rollupContents->height() + getAdditionalHeight(); - resize(width(), h); + int w = std::max(width(), rollupContents->minimumWidth() + gripSize() * 2); + resize(w, h); rollupContents->saveState(m_rollupState); applySettings(); diff --git a/sdrgui/channel/channelgui.h b/sdrgui/channel/channelgui.h index 22486f400..494d5a143 100644 --- a/sdrgui/channel/channelgui.h +++ b/sdrgui/channel/channelgui.h @@ -97,6 +97,7 @@ protected: void updateIndexLabel(); int getAdditionalHeight() const { return 22 + 22; } // height of top and bottom bars void setHighlighted(bool highlighted); + int gripSize() { return m_resizer.m_gripSize; } // size in pixels of resize grip around the window DeviceType m_deviceType; int m_deviceSetIndex; diff --git a/sdrgui/feature/featuregui.h b/sdrgui/feature/featuregui.h index 0491d7ad8..61ce3a0ff 100644 --- a/sdrgui/feature/featuregui.h +++ b/sdrgui/feature/featuregui.h @@ -74,6 +74,7 @@ protected: void mouseMoveEvent(QMouseEvent* event) override; void resetContextMenuType() { m_contextMenuType = ContextMenuNone; } int getAdditionalHeight() const { return 22 + 22; } // height of top and bottom bars + int gripSize() { return m_resizer.m_gripSize; } // size in pixels of resize grip around the window Feature *m_feature; int m_featureIndex; diff --git a/sdrgui/gui/rollupcontents.cpp b/sdrgui/gui/rollupcontents.cpp index f40c0183d..aca334a84 100644 --- a/sdrgui/gui/rollupcontents.cpp +++ b/sdrgui/gui/rollupcontents.cpp @@ -95,11 +95,11 @@ bool RollupContents::hasExpandableWidgets() return false; } - int RollupContents::arrangeRollups() { QFontMetrics fm(font()); int pos; + int minWidth = 0; // First calculate minimum height needed, to determine how much extra space // we have that can be split between expanding widgets @@ -123,12 +123,14 @@ int RollupContents::arrangeRollups() } else { h = r->minimumSizeHint().height(); } + minWidth = std::max(minWidth, r->minimumSize().width()); pos += h + 5; } } } setMinimumHeight(pos); + setMinimumWidth(minWidth); // Split extra space equally between widgets // If there's a remainder, we give it to the first widget