From e3fe65d3e8ca88dbd76d9c026cf9f8690a972902 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 3 Mar 2012 11:05:11 +0100 Subject: Fix brute forcing of colors Don't brute force coloring MappingTree by calling (begin| it keeps the focus. --- mappingtreemodel.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'mappingtreemodel.cpp') 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 &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 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(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{ -- cgit v1.2.3-70-g09d2