Skip to content

Commit 2837778

Browse files
committed
[layertree] Underline current layer
1 parent af5f1aa commit 2837778

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

src/gui/layertree/qgslayertreemodel.cpp

+20
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ QgsLayerTreeModel::QgsLayerTreeModel( QgsLayerTreeGroup* rootNode, QObject *pare
3232
: QAbstractItemModel( parent )
3333
, mRootNode( rootNode )
3434
, mFlags( ShowSymbology )
35+
, mCurrentNode( 0 )
3536
{
3637
Q_ASSERT( mRootNode );
3738

@@ -236,6 +237,8 @@ QVariant QgsLayerTreeModel::data( const QModelIndex &index, int role ) const
236237
f.setItalic( true );
237238
if ( QgsLayerTree::isLayer( node ) )
238239
f.setBold( true );
240+
if ( node == mCurrentNode )
241+
f.setUnderline( true );
239242
return f;
240243
}
241244
else if ( role == Qt::ToolTipRole )
@@ -382,6 +385,23 @@ void QgsLayerTreeModel::refreshLayerSymbology( QgsLayerTreeLayer* nodeLayer )
382385
addSymbologyToLayer( nodeLayer );
383386
}
384387

388+
void QgsLayerTreeModel::setCurrentNode( QgsLayerTreeNode* currentNode )
389+
{
390+
if ( mCurrentNode )
391+
{
392+
QModelIndex idx = node2index( mCurrentNode );
393+
emit dataChanged( idx, idx );
394+
}
395+
396+
mCurrentNode = currentNode;
397+
398+
if ( mCurrentNode )
399+
{
400+
QModelIndex idx = node2index( mCurrentNode );
401+
emit dataChanged( idx, idx );
402+
}
403+
}
404+
385405
void QgsLayerTreeModel::nodeWillAddChildren( QgsLayerTreeNode* node, int indexFrom, int indexTo )
386406
{
387407
Q_ASSERT( node );

src/gui/layertree/qgslayertreemodel.h

+5
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ class GUI_EXPORT QgsLayerTreeModel : public QAbstractItemModel
9292

9393
void refreshLayerSymbology( QgsLayerTreeLayer* nodeLayer );
9494

95+
QgsLayerTreeNode* currentNode() const { return mCurrentNode; }
96+
void setCurrentNode( QgsLayerTreeNode* currentNode );
97+
9598
signals:
9699

97100
protected slots:
@@ -122,6 +125,8 @@ class GUI_EXPORT QgsLayerTreeModel : public QAbstractItemModel
122125
Flags mFlags;
123126

124127
QMap<QgsLayerTreeLayer*, QList<QgsLayerTreeModelSymbologyNode*> > mSymbologyNodes;
128+
129+
QgsLayerTreeNode* mCurrentNode;
125130
};
126131

127132
Q_DECLARE_OPERATORS_FOR_FLAGS( QgsLayerTreeModel::Flags )

src/gui/layertree/qgslayertreeview.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,11 @@ void QgsLayerTreeView::onCurrentChanged( QModelIndex current, QModelIndex previo
142142
if ( layerPrevious == layerCurrent )
143143
return;
144144

145+
if ( layerCurrent )
146+
layerTreeModel()->setCurrentNode( layerTreeModel()->rootGroup()->findLayer( layerCurrent->id() ) );
147+
else
148+
layerTreeModel()->setCurrentNode( 0 );
149+
145150
emit currentLayerChanged( layerCurrent );
146151
}
147152

0 commit comments

Comments
 (0)