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
-
-
RollupContents
QWidget
@@ -923,10 +924,9 @@
1
- ValueDialZ
- QWidget
-
- 1
+ ButtonSwitch
+ QToolButton
+
LevelMeterSignalDB
@@ -934,6 +934,12 @@
1
+
+ ValueDialZ
+ QWidget
+
+ 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
-
- 1
+ ButtonSwitch
+ QToolButton
+
LevelMeterSignalDB
@@ -1031,9 +1036,10 @@
1
- ButtonSwitch
- QToolButton
-
+ ValueDialZ
+ QWidget
+
+ 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
-
- 1
+ ButtonSwitch
+ QToolButton
+
LevelMeterSignalDB
@@ -1073,9 +1078,10 @@
1
- ButtonSwitch
- QToolButton
-
+ ValueDialZ
+ QWidget
+
+ 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 @@
1
+
+ ButtonSwitch
+ QToolButton
+
+
+
+ LevelMeterSignalDB
+ QWidget
+
+ 1
+
GLSpectrum
QWidget
@@ -832,17 +849,6 @@
1
-
- LevelMeterSignalDB
- QWidget
-
- 1
-
-
- ButtonSwitch
- QToolButton
-
-
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 @@
1
-
- ValueDialZ
- QWidget
-
- 1
-
LevelMeterSignalDB
QWidget
1
+
+ ValueDialZ
+ QWidget
+
+ 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
+
+ 1
+
ValueDialZ
QWidget
@@ -459,12 +471,6 @@
1
-
- RollupContents
- QWidget
-
- 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