Skip to content

Commit 7e34bd9

Browse files
committedFeb 14, 2014
Do not emit currentLayerChanged signal if the layer has not changed
1 parent edb0e5f commit 7e34bd9

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed
 

‎src/app/legend/qgslegend.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,9 @@ void QgsLegend::showItem( QString msg, QTreeWidgetItem *item )
181181

182182
void QgsLegend::handleCurrentItemChanged( QTreeWidgetItem* current, QTreeWidgetItem* previous )
183183
{
184-
Q_UNUSED( current );
185-
Q_UNUSED( previous );
184+
if ( legendLayerForItem( current ) == legendLayerForItem( previous ) )
185+
return; // do not re-emit signal when not necessary
186+
186187
QgsMapLayer *layer = currentLayer();
187188

188189
if ( mMapCanvas )
@@ -1214,7 +1215,12 @@ void QgsLegend::setLayerVisible( QgsMapLayer * layer, bool visible )
12141215

12151216
QgsLegendLayer* QgsLegend::currentLegendLayer()
12161217
{
1217-
QgsLegendItem* citem = dynamic_cast<QgsLegendItem *>( currentItem() );
1218+
return legendLayerForItem( currentItem() );
1219+
}
1220+
1221+
QgsLegendLayer* QgsLegend::legendLayerForItem( QTreeWidgetItem* item )
1222+
{
1223+
QgsLegendItem* citem = dynamic_cast<QgsLegendItem *>( item );
12181224

12191225
if ( citem )
12201226
{

‎src/app/legend/qgslegend.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,9 @@ class QgsLegend : public QTreeWidget
115115
//! Destructor
116116
~QgsLegend();
117117

118+
/** Returns QgsLegendLayer accosiated with given item */
119+
QgsLegendLayer* legendLayerForItem( QTreeWidgetItem* item );
120+
118121
/** Returns QgsLegendLayer associated with current layer */
119122
QgsLegendLayer* currentLegendLayer();
120123

0 commit comments

Comments
 (0)
Please sign in to comment.