diff options
author | Arno <am@disconnect.de> | 2012-03-03 11:05:11 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2012-03-03 11:05:11 +0100 |
commit | e3fe65d3e8ca88dbd76d9c026cf9f8690a972902 (patch) | |
tree | 237da584056efc75093d222b33934f8bec7445a0 | |
parent | 42890664aef1588a92fe9cf816766aae06e3aedb (diff) | |
download | SheMov-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.
-rw-r--r-- | mappingtreemodel.cpp | 27 | ||||
-rw-r--r-- | mappingtreemodel.h | 2 |
2 files changed, 18 insertions, 11 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{ diff --git a/mappingtreemodel.h b/mappingtreemodel.h index 5e9140a..411a0b2 100644 --- a/mappingtreemodel.h +++ b/mappingtreemodel.h @@ -81,7 +81,7 @@ class MappingTreeModel : public SmTreeModel { QSqlQuery *mDeleteMappingParentQ; QList<mappingType> mMappingTypes; QList<MappingData> mValidMappings; - QList<int> mSelectedMappings; + QList<SmTreeItem*> mSelectedMappings; const QString mForbidden; int mType; }; |