Skip to content

Commit

Permalink
Update layer transparency after 100ms delay
Browse files Browse the repository at this point in the history
  • Loading branch information
wonder-sk committed Jun 3, 2016
1 parent 301fd98 commit 19f83ae
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
21 changes: 20 additions & 1 deletion src/gui/layertree/qgslayertreeembeddedwidgetsimpl.cpp
Expand Up @@ -15,9 +15,11 @@

#include "qgslayertreeembeddedwidgetsimpl.h"

#include <QHBoxLayout>
#include <QLabel>
#include <QSlider>
#include <QHBoxLayout>
#include <QTimer>

#include "qgsrasterlayer.h"
#include "qgsrasterrenderer.h"
#include "qgsvectorlayer.h"
Expand All @@ -37,6 +39,12 @@ QgsLayerTreeTransparencyWidget::QgsLayerTreeTransparencyWidget( QgsMapLayer* lay
lay->addWidget( mSlider );
setLayout( lay );

// timer for delayed transparency update - for more responsive GUI
mTimer = new QTimer( this );
mTimer->setSingleShot( true );
mTimer->setInterval( 100 );
connect( mTimer, SIGNAL( timeout() ), this, SLOT( updateTransparencyFromSlider() ) );

connect( mSlider, SIGNAL( valueChanged( int ) ), this, SLOT( sliderValueChanged( int ) ) );

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

void QgsLayerTreeTransparencyWidget::sliderValueChanged( int value )
{
Q_UNUSED( value );

if ( mTimer->isActive() )
return;
mTimer->start();
}

void QgsLayerTreeTransparencyWidget::updateTransparencyFromSlider()
{
int value = mSlider->value();

if ( mLayer->type() == QgsMapLayer::VectorLayer )
{
qobject_cast<QgsVectorLayer*>( mLayer )->setLayerTransparency( value );
Expand Down
3 changes: 3 additions & 0 deletions src/gui/layertree/qgslayertreeembeddedwidgetsimpl.h
Expand Up @@ -21,6 +21,7 @@


class QSlider;
class QTimer;
class QgsMapLayer;

/**
Expand All @@ -47,11 +48,13 @@ class QgsLayerTreeTransparencyWidget : public QWidget

public slots:
void sliderValueChanged( int value );
void updateTransparencyFromSlider();
void layerTrChanged();

private:
QgsMapLayer* mLayer;
QSlider* mSlider;
QTimer* mTimer;
};

#endif // QGSLAYERTREEEMBEDDEDWIDGETSIMPL_H

0 comments on commit 19f83ae

Please sign in to comment.