summaryrefslogtreecommitdiffstats
path: root/mappingtreemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mappingtreemodel.cpp')
-rw-r--r--mappingtreemodel.cpp27
1 files changed, 17 insertions, 10 deletions
diff --git a/mappingtreemodel.cpp b/mappingtreemodel.cpp
index 35b6acd..b2ca982 100644
--- a/mappingtreemodel.cpp
+++ b/mappingtreemodel.cpp
@@ -102,8 +102,7 @@ QVariant MappingTreeModel::data(const QModelIndex &index, int role) const{
return item->data(Added);
}
if(role == Qt::ForegroundRole){
- int id = item->data(Id).toInt();
- if(mSelectedMappings.contains(id)){
+ if(mSelectedMappings.contains(item)){
return QColor(Qt::blue);
}
}
@@ -284,17 +283,25 @@ MappingData MappingTreeModel::mappingDataFromId(int mappingId) const{
}
void MappingTreeModel::setSelectedMappings(const QList<int> &mappingIds){
- //FIXME: Brute forcing looses focus which is needed for windowTitle!
- mSelectedMappings = mappingIds;
- /*foreach(int id, mappingIds){
+ //we can't change the list we're iterating over... that would wreak havoc
+ QList<SmTreeItem*> iterateList = mSelectedMappings;
+ foreach(SmTreeItem *item, iterateList){
+ mSelectedMappings.removeAll(item);
+ QModelIndex idxStart = createIndex(item->parent()->row(), 0, item);
+ QModelIndex idxEnd = createIndex(item->parent()->row(), NumFields - 1, item);
+ emit dataChanged(idxStart, idxEnd);
+ }
+ mSelectedMappings.clear();
+ foreach(int id, mappingIds){
QModelIndex idx = findRecursive(id, Id);
if(idx.isValid()){
- emit dataChanged(idx, idx);
+ SmTreeItem *item = static_cast<SmTreeItem*>(idx.internalPointer());
+ mSelectedMappings << item;
+ QModelIndex idxStart = createIndex(item->parent()->row(), 0, item);
+ QModelIndex idxEnd = createIndex(item->parent()->row(), NumFields - 1, item);
+ emit dataChanged(idxStart, idxEnd);
}
- }*/
- beginResetModel();
- endResetModel();
- emit needExpansion();
+ }
}
QStringList MappingTreeModel::paths() const{