Skip to content

Commit 6b0bf49

Browse files
committed
[snapping] fix default snapping type settings
1 parent 60ad5c6 commit 6b0bf49

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

src/app/qgsoptions.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -852,10 +852,10 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WindowFlags fl )
852852

853853
//default snap mode
854854
mSnappingEnabledDefault->setChecked( mSettings->value( QStringLiteral( "/qgis/digitizing/default_snap_enabled" ), false ).toBool() );
855-
mDefaultSnapModeComboBox->insertItem( 0, tr( "To vertex" ), "to vertex" );
856-
mDefaultSnapModeComboBox->insertItem( 1, tr( "To segment" ), "to segment" );
857-
mDefaultSnapModeComboBox->insertItem( 2, tr( "To vertex and segment" ), "to vertex and segment" );
858-
QString defaultSnapString = mSettings->value( QStringLiteral( "/qgis/digitizing/default_snap_mode" ), "to vertex" ).toString();
855+
mDefaultSnapModeComboBox->insertItem( 0, tr( "To vertex" ), QgsSnappingConfig::Vertex );
856+
mDefaultSnapModeComboBox->insertItem( 1, tr( "To segment" ), QgsSnappingConfig::Segment );
857+
mDefaultSnapModeComboBox->insertItem( 2, tr( "To vertex and segment" ), QgsSnappingConfig::VertexAndSegment );
858+
int defaultSnapString = mSettings->value( QStringLiteral( "/qgis/digitizing/default_snap_type" ), QgsSnappingConfig::Vertex ).toInt();
859859
mDefaultSnapModeComboBox->setCurrentIndex( mDefaultSnapModeComboBox->findData( defaultSnapString ) );
860860
mDefaultSnappingToleranceSpinBox->setValue( mSettings->value( QStringLiteral( "/qgis/digitizing/default_snapping_tolerance" ), 0 ).toDouble() );
861861
mSearchRadiusVertexEditSpinBox->setValue( mSettings->value( QStringLiteral( "/qgis/digitizing/search_radius_vertex_edit" ), 10 ).toDouble() );
@@ -1360,8 +1360,8 @@ void QgsOptions::saveOptions()
13601360

13611361
//default snap mode
13621362
mSettings->setValue( QStringLiteral( "/qgis/digitizing/default_snap_enabled" ), mSnappingEnabledDefault->isChecked() );
1363-
QString defaultSnapModeString = mDefaultSnapModeComboBox->currentData().toString();
1364-
mSettings->setValue( QStringLiteral( "/qgis/digitizing/default_snap_mode" ), defaultSnapModeString );
1363+
int defaultSnapModeString = mDefaultSnapModeComboBox->currentData().toInt();
1364+
mSettings->setValue( QStringLiteral( "/qgis/digitizing/default_snap_type" ), defaultSnapModeString );
13651365
mSettings->setValue( QStringLiteral( "/qgis/digitizing/default_snapping_tolerance" ), mDefaultSnappingToleranceSpinBox->value() );
13661366
mSettings->setValue( QStringLiteral( "/qgis/digitizing/search_radius_vertex_edit" ), mSearchRadiusVertexEditSpinBox->value() );
13671367
mSettings->setValue( QStringLiteral( "/qgis/digitizing/default_snapping_tolerance_unit" ),

src/gui/qgsmapcanvassnapper.cpp

+23-1
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,32 @@ int QgsMapCanvasSnapper::snapToBackgroundLayers( const QgsPoint& point, QList<Qg
169169
QSettings settings;
170170
QString snappingMode = QgsProject::instance()->readEntry( QStringLiteral( "Digitizing" ), QStringLiteral( "/SnappingMode" ), QStringLiteral( "current_layer" ), &snappingDefinedInProject );
171171
QString defaultSnapToleranceUnit = snappingDefinedInProject ? QgsProject::instance()->readEntry( QStringLiteral( "Digitizing" ), QStringLiteral( "/DefaultSnapToleranceUnit" ) ) : settings.value( QStringLiteral( "/qgis/digitizing/default_snapping_tolerance_unit" ), "0" ).toString();
172-
QString defaultSnapType = snappingDefinedInProject ? QgsProject::instance()->readEntry( QStringLiteral( "Digitizing" ), QStringLiteral( "/DefaultSnapType" ) ) : settings.value( QStringLiteral( "/qgis/digitizing/default_snap_mode" ), "to vertex" ).toString();
173172
QString defaultSnapTolerance = snappingDefinedInProject ? QString::number( QgsProject::instance()->readDoubleEntry( QStringLiteral( "Digitizing" ), QStringLiteral( "/DefaultSnapTolerance" ) ) ) : settings.value( QStringLiteral( "/qgis/digitizing/default_snapping_tolerance" ), "0" ).toString();
174173
bool defaultSnapEnabled = settings.value( QStringLiteral( "/qgis/digitizing/default_snap_enabled" ), false ).toBool();
175174

175+
QString defaultSnapType;
176+
if ( snappingDefinedInProject )
177+
{
178+
defaultSnapType = QgsProject::instance()->readEntry( QStringLiteral( "Digitizing" ), QStringLiteral( "/DefaultSnapType" ) );
179+
}
180+
else
181+
{
182+
int dst;
183+
dst = settings.value( QStringLiteral( "/qgis/digitizing/default_snap_mode" ), QgsSnappingConfig::Vertex ).toInt();
184+
switch ( dst )
185+
{
186+
case QgsSnappingConfig::Segment:
187+
defaultSnapType = QStringLiteral( "to segment" );
188+
break;
189+
case QgsSnappingConfig::VertexAndSegment:
190+
defaultSnapType = QStringLiteral( "to vertex and segment" );
191+
break;
192+
default:
193+
defaultSnapType = QStringLiteral( "to vertex" );
194+
break;
195+
}
196+
}
197+
176198
if ( !snappingDefinedInProject && defaultSnapEnabled == false )
177199
{
178200
return 0;

0 commit comments

Comments
 (0)