Skip to content

Commit 77241dd

Browse files
committed
honor flat property when set in designer or code before showEvent() (patch by Larry)
1 parent c33e6ff commit 77241dd

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

src/gui/qgscollapsiblegroupbox.cpp

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ QIcon QgsCollapsibleGroupBox::mCollapseIcon;
2929
QIcon QgsCollapsibleGroupBox::mExpandIcon;
3030

3131
QgsCollapsibleGroupBox::QgsCollapsibleGroupBox( QWidget *parent )
32-
: QGroupBox( parent ), mCollapsed( false ), mSaveState( true )
32+
: QGroupBox( parent )
3333
{
3434
init();
3535
}
3636

3737
QgsCollapsibleGroupBox::QgsCollapsibleGroupBox( const QString &title,
3838
QWidget *parent )
39-
: QGroupBox( title, parent ), mCollapsed( false ), mSaveState( true )
39+
: QGroupBox( title, parent )
4040
{
4141
init();
4242
}
@@ -48,6 +48,12 @@ QgsCollapsibleGroupBox::~QgsCollapsibleGroupBox()
4848

4949
void QgsCollapsibleGroupBox::init()
5050
{
51+
// variables
52+
mCollapsed = false;
53+
mSaveState = true;
54+
mInitFlat = false;
55+
mShown = false;
56+
5157
// init icons
5258
if ( mCollapseIcon.isNull() )
5359
{
@@ -70,11 +76,22 @@ void QgsCollapsibleGroupBox::init()
7076

7177
void QgsCollapsibleGroupBox::showEvent( QShowEvent * event )
7278
{
79+
// initialise widget on first show event only
80+
if ( mShown )
81+
{
82+
event->accept();
83+
return;
84+
}
85+
mShown = true;
86+
87+
// check if groupbox was set to flat in Designer or in code
88+
mInitFlat = isFlat();
89+
7390
loadState();
7491

7592
updateStyle();
7693

77-
// expand if needed - any calls to setCollapsed() before only set mCollapsed
94+
// expand if needed - any calls to setCollapsed() before only set mCollapsed, but have UI effect
7895
if ( mCollapsed )
7996
{
8097
setCollapsed( mCollapsed );
@@ -85,6 +102,7 @@ void QgsCollapsibleGroupBox::showEvent( QShowEvent * event )
85102
still emit signal for connections using expanded state */
86103
emit collapsedStateChanged( this );
87104
}
105+
88106
event->accept();
89107
}
90108

@@ -249,9 +267,12 @@ void QgsCollapsibleGroupBox::setCollapsed( bool collapse )
249267
return;
250268

251269
// for consistent look/spacing across platforms when collapsed
252-
setFlat( collapse );
270+
if ( ! mInitFlat ) // skip if initially set to flat in Designer
271+
setFlat( collapse );
272+
253273
// avoid flicker in X11
254274
QApplication::processEvents();
275+
255276
// set maximum height to hide contents - does this work in all envs?
256277
// setMaximumHeight( collapse ? 25 : 16777215 );
257278
setMaximumHeight( collapse ? titleRect().bottom() + 6 : 16777215 );

src/gui/qgscollapsiblegroupbox.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ class GUI_EXPORT QgsCollapsibleGroupBox : public QGroupBox
6262

6363
bool mCollapsed;
6464
bool mSaveState;
65+
bool mInitFlat;
66+
bool mShown;
6567
QToolButton* mCollapseButton;
6668

6769
static QIcon mCollapseIcon;

0 commit comments

Comments
 (0)