mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-08 00:05:09 -04:00
Keep the check on oldsettings to refresh rows but add an option to forceRefresh.
This commit is contained in:
parent
f56e0f51c1
commit
b3e96ff26a
@ -238,6 +238,7 @@ QgsSnappingLayerTreeModel::QgsSnappingLayerTreeModel( QgsProject *project, QgsMa
|
|||||||
, mProject( project )
|
, mProject( project )
|
||||||
, mCanvas( canvas )
|
, mCanvas( canvas )
|
||||||
, mIndividualLayerSettings( project->snappingConfig().individualLayerSettings() )
|
, mIndividualLayerSettings( project->snappingConfig().individualLayerSettings() )
|
||||||
|
, mEnableMinMaxColumn( project->snappingConfig().limitToScale() )
|
||||||
|
|
||||||
{
|
{
|
||||||
connect( project, &QgsProject::snappingConfigChanged, this, &QgsSnappingLayerTreeModel::onSnappingSettingsChanged );
|
connect( project, &QgsProject::snappingConfigChanged, this, &QgsSnappingLayerTreeModel::onSnappingSettingsChanged );
|
||||||
@ -278,9 +279,9 @@ Qt::ItemFlags QgsSnappingLayerTreeModel::flags( const QModelIndex &idx ) const
|
|||||||
return Qt::NoItemFlags;
|
return Qt::NoItemFlags;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( idx.column() == MaxScaleColumn || idx.column() == MinScaleColumn )
|
else if ( idx.column() == MaxScaleColumn || idx.column() == MinScaleColumn )
|
||||||
{
|
{
|
||||||
if( mProject->snappingConfig().limitToScale() )
|
if ( mEnableMinMaxColumn )
|
||||||
{
|
{
|
||||||
return Qt::ItemIsEnabled | Qt::ItemIsEditable;
|
return Qt::ItemIsEnabled | Qt::ItemIsEditable;
|
||||||
}
|
}
|
||||||
@ -344,6 +345,7 @@ void QgsSnappingLayerTreeModel::setFilterText( const QString &filterText )
|
|||||||
void QgsSnappingLayerTreeModel::onSnappingSettingsChanged()
|
void QgsSnappingLayerTreeModel::onSnappingSettingsChanged()
|
||||||
{
|
{
|
||||||
const QHash<QgsVectorLayer *, QgsSnappingConfig::IndividualLayerSettings> oldSettings = mIndividualLayerSettings;
|
const QHash<QgsVectorLayer *, QgsSnappingConfig::IndividualLayerSettings> oldSettings = mIndividualLayerSettings;
|
||||||
|
bool wasMinMaxEnabled = mEnableMinMaxColumn;
|
||||||
|
|
||||||
for ( auto it = oldSettings.constBegin(); it != oldSettings.constEnd(); ++it )
|
for ( auto it = oldSettings.constBegin(); it != oldSettings.constEnd(); ++it )
|
||||||
{
|
{
|
||||||
@ -367,17 +369,18 @@ void QgsSnappingLayerTreeModel::onSnappingSettingsChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hasRowchanged( mLayerTreeModel->rootGroup(), oldSettings );
|
mEnableMinMaxColumn = mProject->snappingConfig().limitToScale();
|
||||||
|
hasRowchanged( mLayerTreeModel->rootGroup(), oldSettings, wasMinMaxEnabled != mEnableMinMaxColumn );
|
||||||
}
|
}
|
||||||
|
|
||||||
void QgsSnappingLayerTreeModel::hasRowchanged( QgsLayerTreeNode *node, const QHash<QgsVectorLayer *, QgsSnappingConfig::IndividualLayerSettings> &oldSettings )
|
void QgsSnappingLayerTreeModel::hasRowchanged( QgsLayerTreeNode *node, const QHash<QgsVectorLayer *, QgsSnappingConfig::IndividualLayerSettings> &oldSettings, bool forceRefresh )
|
||||||
{
|
{
|
||||||
if ( node->nodeType() == QgsLayerTreeNode::NodeGroup )
|
if ( node->nodeType() == QgsLayerTreeNode::NodeGroup )
|
||||||
{
|
{
|
||||||
const auto constChildren = node->children();
|
const auto constChildren = node->children();
|
||||||
for ( QgsLayerTreeNode *child : constChildren )
|
for ( QgsLayerTreeNode *child : constChildren )
|
||||||
{
|
{
|
||||||
hasRowchanged( child, oldSettings );
|
hasRowchanged( child, oldSettings, forceRefresh );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -388,7 +391,7 @@ void QgsSnappingLayerTreeModel::hasRowchanged( QgsLayerTreeNode *node, const QHa
|
|||||||
{
|
{
|
||||||
emit dataChanged( QModelIndex(), idx );
|
emit dataChanged( QModelIndex(), idx );
|
||||||
}
|
}
|
||||||
else
|
if ( oldSettings.value( vl ) != mProject->snappingConfig().individualLayerSettings().value( vl ) || forceRefresh )
|
||||||
{
|
{
|
||||||
mIndividualLayerSettings.insert( vl, mProject->snappingConfig().individualLayerSettings().value( vl ) );
|
mIndividualLayerSettings.insert( vl, mProject->snappingConfig().individualLayerSettings().value( vl ) );
|
||||||
emit dataChanged( idx, index( idx.row(), columnCount( idx ) - 1 ) );
|
emit dataChanged( idx, index( idx.row(), columnCount( idx ) - 1 ) );
|
||||||
|
@ -95,8 +95,9 @@ class APP_EXPORT QgsSnappingLayerTreeModel : public QSortFilterProxyModel
|
|||||||
QString mFilterText;
|
QString mFilterText;
|
||||||
QHash<QgsVectorLayer *, QgsSnappingConfig::IndividualLayerSettings> mIndividualLayerSettings;
|
QHash<QgsVectorLayer *, QgsSnappingConfig::IndividualLayerSettings> mIndividualLayerSettings;
|
||||||
QgsLayerTreeModel *mLayerTreeModel = nullptr;
|
QgsLayerTreeModel *mLayerTreeModel = nullptr;
|
||||||
|
bool mEnableMinMaxColumn = true;
|
||||||
|
|
||||||
void hasRowchanged( QgsLayerTreeNode *node, const QHash<QgsVectorLayer *, QgsSnappingConfig::IndividualLayerSettings> &oldSettings );
|
void hasRowchanged( QgsLayerTreeNode *node, const QHash<QgsVectorLayer *, QgsSnappingConfig::IndividualLayerSettings> &oldSettings, bool forceRefresh );
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // QGSSNAPPINGLAYERTREEVIEW_H
|
#endif // QGSSNAPPINGLAYERTREEVIEW_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user