Skip to content

Commit 317b310

Browse files
committed
[needs-docs] Clicking the memory layer indicator triggers a 'make permenant' action
1 parent 01876d1 commit 317b310

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/app/qgslayertreeviewmemoryindicator.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "qgslayertreemodel.h"
1919
#include "qgslayertreeview.h"
2020
#include "qgsvectorlayer.h"
21+
#include "qgisapp.h"
2122

2223
QgsLayerTreeViewMemoryIndicatorProvider::QgsLayerTreeViewMemoryIndicatorProvider( QgsLayerTreeView *view )
2324
: QObject( view )
@@ -122,11 +123,25 @@ void QgsLayerTreeViewMemoryIndicatorProvider::onDataSourceChanged()
122123
}
123124
}
124125

126+
void QgsLayerTreeViewMemoryIndicatorProvider::onIndicatorClicked( const QModelIndex &index )
127+
{
128+
QgsLayerTreeNode *node = mLayerTreeView->layerTreeModel()->index2node( index );
129+
if ( !QgsLayerTree::isLayer( node ) )
130+
return;
131+
132+
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( QgsLayerTree::toLayer( node )->layer() );
133+
if ( !vlayer )
134+
return;
135+
136+
QgisApp::instance()->makeMemoryLayerPermanent( vlayer );
137+
}
138+
125139
std::unique_ptr< QgsLayerTreeViewIndicator > QgsLayerTreeViewMemoryIndicatorProvider::newIndicator()
126140
{
127141
std::unique_ptr< QgsLayerTreeViewIndicator > indicator = qgis::make_unique< QgsLayerTreeViewIndicator >( this );
128142
indicator->setIcon( mIcon );
129143
indicator->setToolTip( tr( "<b>Temporary scratch layer only!</b><br>Contents will be discarded after closing this project" ) );
144+
connect( indicator.get(), &QgsLayerTreeViewIndicator::clicked, this, &QgsLayerTreeViewMemoryIndicatorProvider::onIndicatorClicked );
130145
mIndicators.insert( indicator.get() );
131146
return indicator;
132147
}

src/app/qgslayertreeviewmemoryindicator.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ class QgsLayerTreeViewMemoryIndicatorProvider : public QObject
4141
//! Adds/removes indicator of a layer
4242
void onDataSourceChanged();
4343

44+
void onIndicatorClicked( const QModelIndex &index );
45+
4446
private:
4547
std::unique_ptr< QgsLayerTreeViewIndicator > newIndicator();
4648
void addOrRemoveIndicator( QgsLayerTreeNode *node, QgsVectorLayer *vlayer );

0 commit comments

Comments
 (0)