summaryrefslogtreecommitdiffstats
path: root/mappingtreemodel.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2012-03-03 11:05:11 +0100
committerArno <am@disconnect.de>2012-03-03 11:05:11 +0100
commite3fe65d3e8ca88dbd76d9c026cf9f8690a972902 (patch)
tree237da584056efc75093d222b33934f8bec7445a0 /mappingtreemodel.cpp
parent42890664aef1588a92fe9cf816766aae06e3aedb (diff)
downloadSheMov-e3fe65d3e8ca88dbd76d9c026cf9f8690a972902.tar.gz
SheMov-e3fe65d3e8ca88dbd76d9c026cf9f8690a972902.tar.bz2
SheMov-e3fe65d3e8ca88dbd76d9c026cf9f8690a972902.zip
Fix brute forcing of colors
Don't brute force coloring MappingTree by calling (begin| it keeps the focus.
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{