Skip to content

Commit 19f83ae

Browse files
committed
Update layer transparency after 100ms delay
1 parent 301fd98 commit 19f83ae

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

src/gui/layertree/qgslayertreeembeddedwidgetsimpl.cpp

+20-1
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515

1616
#include "qgslayertreeembeddedwidgetsimpl.h"
1717

18+
#include <QHBoxLayout>
1819
#include <QLabel>
1920
#include <QSlider>
20-
#include <QHBoxLayout>
21+
#include <QTimer>
22+
2123
#include "qgsrasterlayer.h"
2224
#include "qgsrasterrenderer.h"
2325
#include "qgsvectorlayer.h"
@@ -37,6 +39,12 @@ QgsLayerTreeTransparencyWidget::QgsLayerTreeTransparencyWidget( QgsMapLayer* lay
3739
lay->addWidget( mSlider );
3840
setLayout( lay );
3941

42+
// timer for delayed transparency update - for more responsive GUI
43+
mTimer = new QTimer( this );
44+
mTimer->setSingleShot( true );
45+
mTimer->setInterval( 100 );
46+
connect( mTimer, SIGNAL( timeout() ), this, SLOT( updateTransparencyFromSlider() ) );
47+
4048
connect( mSlider, SIGNAL( valueChanged( int ) ), this, SLOT( sliderValueChanged( int ) ) );
4149

4250
// init from layer
@@ -60,6 +68,17 @@ QSize QgsLayerTreeTransparencyWidget::sizeHint() const
6068

6169
void QgsLayerTreeTransparencyWidget::sliderValueChanged( int value )
6270
{
71+
Q_UNUSED( value );
72+
73+
if ( mTimer->isActive() )
74+
return;
75+
mTimer->start();
76+
}
77+
78+
void QgsLayerTreeTransparencyWidget::updateTransparencyFromSlider()
79+
{
80+
int value = mSlider->value();
81+
6382
if ( mLayer->type() == QgsMapLayer::VectorLayer )
6483
{
6584
qobject_cast<QgsVectorLayer*>( mLayer )->setLayerTransparency( value );

src/gui/layertree/qgslayertreeembeddedwidgetsimpl.h

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222

2323
class QSlider;
24+
class QTimer;
2425
class QgsMapLayer;
2526

2627
/**
@@ -47,11 +48,13 @@ class QgsLayerTreeTransparencyWidget : public QWidget
4748

4849
public slots:
4950
void sliderValueChanged( int value );
51+
void updateTransparencyFromSlider();
5052
void layerTrChanged();
5153

5254
private:
5355
QgsMapLayer* mLayer;
5456
QSlider* mSlider;
57+
QTimer* mTimer;
5558
};
5659

5760
#endif // QGSLAYERTREEEMBEDDEDWIDGETSIMPL_H

0 commit comments

Comments
 (0)