Skip to content

Commit

Permalink
Keep the check on oldsettings to refresh rows but add an option to fo…
Browse files Browse the repository at this point in the history
…rceRefresh.
  • Loading branch information
obrix committed Apr 7, 2020
1 parent f56e0f5 commit b3e96ff
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 7 deletions.
15 changes: 9 additions & 6 deletions src/app/qgssnappinglayertreemodel.cpp
Expand Up @@ -238,6 +238,7 @@ QgsSnappingLayerTreeModel::QgsSnappingLayerTreeModel( QgsProject *project, QgsMa
, mProject( project )
, mCanvas( canvas )
, mIndividualLayerSettings( project->snappingConfig().individualLayerSettings() )
, mEnableMinMaxColumn( project->snappingConfig().limitToScale() )

{
connect( project, &QgsProject::snappingConfigChanged, this, &QgsSnappingLayerTreeModel::onSnappingSettingsChanged );
Expand Down Expand Up @@ -278,9 +279,9 @@ Qt::ItemFlags QgsSnappingLayerTreeModel::flags( const QModelIndex &idx ) const
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;
}
Expand Down Expand Up @@ -344,6 +345,7 @@ void QgsSnappingLayerTreeModel::setFilterText( const QString &filterText )
void QgsSnappingLayerTreeModel::onSnappingSettingsChanged()
{
const QHash<QgsVectorLayer *, QgsSnappingConfig::IndividualLayerSettings> oldSettings = mIndividualLayerSettings;
bool wasMinMaxEnabled = mEnableMinMaxColumn;

for ( auto it = oldSettings.constBegin(); it != oldSettings.constEnd(); ++it )
{
Expand All @@ -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 )
{
const auto constChildren = node->children();
for ( QgsLayerTreeNode *child : constChildren )
{
hasRowchanged( child, oldSettings );
hasRowchanged( child, oldSettings, forceRefresh );
}
}
else
Expand All @@ -388,7 +391,7 @@ void QgsSnappingLayerTreeModel::hasRowchanged( QgsLayerTreeNode *node, const QHa
{
emit dataChanged( QModelIndex(), idx );
}
else
if ( oldSettings.value( vl ) != mProject->snappingConfig().individualLayerSettings().value( vl ) || forceRefresh )
{
mIndividualLayerSettings.insert( vl, mProject->snappingConfig().individualLayerSettings().value( vl ) );
emit dataChanged( idx, index( idx.row(), columnCount( idx ) - 1 ) );
Expand Down
3 changes: 2 additions & 1 deletion src/app/qgssnappinglayertreemodel.h
Expand Up @@ -95,8 +95,9 @@ class APP_EXPORT QgsSnappingLayerTreeModel : public QSortFilterProxyModel
QString mFilterText;
QHash<QgsVectorLayer *, QgsSnappingConfig::IndividualLayerSettings> mIndividualLayerSettings;
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

0 comments on commit b3e96ff

Please sign in to comment.