From 0fd52ecf390c8715d9cd3d94b38493130d87c894 Mon Sep 17 00:00:00 2001 From: Larry Shaffer Date: Sat, 13 Apr 2013 19:12:18 -0600 Subject: [PATCH] Set QgsCollapsibleGroupBox's collapse-on-uncheck to happen only when clicked by user - This keeps checkable group boxes from being programmatically collapsed when initializing a dialog --- python/gui/qgscollapsiblegroupbox.sip | 1 + src/gui/qgscollapsiblegroupbox.cpp | 11 ++++++++++- src/gui/qgscollapsiblegroupbox.h | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/python/gui/qgscollapsiblegroupbox.sip b/python/gui/qgscollapsiblegroupbox.sip index c7680e199022..1e4ce971be1e 100644 --- a/python/gui/qgscollapsiblegroupbox.sip +++ b/python/gui/qgscollapsiblegroupbox.sip @@ -35,6 +35,7 @@ class QgsCollapsibleGroupBoxBasic : QGroupBox public slots: void checkToggled( bool ckd ); + void checkClicked( bool ckd ); void toggleCollapsed(); protected: diff --git a/src/gui/qgscollapsiblegroupbox.cpp b/src/gui/qgscollapsiblegroupbox.cpp index 29ebb9a83f9c..8b23481d6e7f 100644 --- a/src/gui/qgscollapsiblegroupbox.cpp +++ b/src/gui/qgscollapsiblegroupbox.cpp @@ -82,6 +82,7 @@ void QgsCollapsibleGroupBoxBasic::init() connect( mCollapseButton, SIGNAL( clicked() ), this, SLOT( toggleCollapsed() ) ); connect( this, SIGNAL( toggled( bool ) ), this, SLOT( checkToggled( bool ) ) ); + connect( this, SIGNAL( clicked( bool ) ), this, SLOT( checkClicked( bool ) ) ); } void QgsCollapsibleGroupBoxBasic::showEvent( QShowEvent * event ) @@ -213,8 +214,16 @@ void QgsCollapsibleGroupBoxBasic::clearModifiers() void QgsCollapsibleGroupBoxBasic::checkToggled( bool chkd ) { + Q_UNUSED( chkd ); mCollapseButton->setEnabled( true ); // always keep enabled - // expand/collapse when toggled +} + +void QgsCollapsibleGroupBoxBasic::checkClicked( bool chkd ) +{ + // expand/collapse when checkbox toggled by user click. + // don't do this on toggle signal, otherwise group boxes will default to collapsed + // in option dialog constructors, reducing discovery of options by new users and + // overriding user's auto-saved collapsed/expanded state for the group box if ( chkd && isCollapsed() ) setCollapsed( false ); else if ( ! chkd && ! isCollapsed() ) diff --git a/src/gui/qgscollapsiblegroupbox.h b/src/gui/qgscollapsiblegroupbox.h index 0174c8fb1ea0..6043b208133c 100644 --- a/src/gui/qgscollapsiblegroupbox.h +++ b/src/gui/qgscollapsiblegroupbox.h @@ -96,6 +96,7 @@ class GUI_EXPORT QgsCollapsibleGroupBoxBasic : public QGroupBox public slots: void checkToggled( bool ckd ); + void checkClicked( bool ckd ); void toggleCollapsed(); protected: