@@ -201,12 +201,15 @@ QgsSnappingWidget::QgsSnappingWidget( QgsProject* project, QgsMapCanvas* canvas,
201
201
mLayerTreeView = new QTreeView ();
202
202
QgsSnappingLayerTreeModel* model = new QgsSnappingLayerTreeModel ( mProject , this );
203
203
model->setLayerTreeModel ( new QgsLayerTreeModel ( QgsProject::instance ()->layerTreeRoot (), model ) );
204
+
205
+ connect ( model, &QgsSnappingLayerTreeModel::rowsInserted, this , &QgsSnappingWidget::onSnappingTreeLayersChanged );
206
+ connect ( model, &QgsSnappingLayerTreeModel::modelReset, this , &QgsSnappingWidget::onSnappingTreeLayersChanged );
207
+ connect ( model, &QgsSnappingLayerTreeModel::rowsRemoved, this , &QgsSnappingWidget::onSnappingTreeLayersChanged );
208
+
204
209
// model->setFlags( 0 );
205
210
mLayerTreeView ->setModel ( model );
206
211
mLayerTreeView ->resizeColumnToContents ( 0 );
207
212
mLayerTreeView ->header ()->show ();
208
- mLayerTreeView ->header ()->setSectionResizeMode ( QHeaderView::ResizeToContents );
209
- mLayerTreeView ->header ()->setSectionResizeMode ( QHeaderView::Interactive );
210
213
mLayerTreeView ->setSelectionMode ( QAbstractItemView::NoSelection );
211
214
212
215
// item delegates
@@ -230,9 +233,17 @@ QgsSnappingWidget::QgsSnappingWidget( QgsProject* project, QgsMapCanvas* canvas,
230
233
connect ( project, &QgsProject::topologicalEditingChanged, this , &QgsSnappingWidget::projectTopologicalEditingChanged );
231
234
connect ( mCanvas , SIGNAL ( mapUnitsChanged () ), this , SLOT ( updateToleranceDecimals () ) );
232
235
236
+
237
+ // Slightly modify the config so the settings changed code doesn't early exit
238
+ mConfig = project->snappingConfig ();
239
+ mConfig .setEnabled ( !mConfig .enabled () );
240
+ projectSnapSettingsChanged ();
241
+
233
242
// modeChanged determines if widget are visible or not based on mode
234
243
modeChanged ();
235
244
updateToleranceDecimals ();
245
+
246
+ restoreGeometry ( QSettings ().value ( " /Windows/SnappingWidget/geometry" ).toByteArray () );
236
247
}
237
248
238
249
QgsSnappingWidget::~QgsSnappingWidget ()
@@ -252,7 +263,7 @@ void QgsSnappingWidget::projectSnapSettingsChanged()
252
263
253
264
mEnabledAction ->setChecked ( config.enabled () );
254
265
255
- if ( config.mode () == QgsSnappingConfig::AllLayers && mModeButton ->defaultAction () != mActiveLayerAction )
266
+ if ( config.mode () == QgsSnappingConfig::AllLayers && mModeButton ->defaultAction () != mAllLayersAction )
256
267
{
257
268
mModeButton ->setDefaultAction ( mAllLayersAction );
258
269
modeChanged ();
@@ -351,6 +362,12 @@ void QgsSnappingWidget::enableIntersectionSnapping( bool enabled )
351
362
mProject ->setSnappingConfig ( mConfig );
352
363
}
353
364
365
+ void QgsSnappingWidget::onSnappingTreeLayersChanged ()
366
+ {
367
+ mLayerTreeView ->resizeColumnToContents ( 0 );
368
+ QTimer::singleShot ( 0 , mLayerTreeView , &QTreeView::expandAll );
369
+ }
370
+
354
371
void QgsSnappingWidget::modeButtonTriggered ( QAction* action )
355
372
{
356
373
if ( action != mModeButton ->defaultAction () )
0 commit comments