summaryrefslogtreecommitdiff
path: root/src/modlist.cpp
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-12-28 17:15:22 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-02 15:38:15 +0100
commitb340c564cfd151540bf5b03f3f878153b8f120ee (patch)
treeafb2265f9f93c79564622e02d2bd8b8073956dda /src/modlist.cpp
parent9d8c64dccbdb5144c6496cbd9ef4eb636f6b4ace (diff)
Fix keyboard move selection.
Diffstat (limited to 'src/modlist.cpp')
-rw-r--r--src/modlist.cpp29
1 files changed, 14 insertions, 15 deletions
diff --git a/src/modlist.cpp b/src/modlist.cpp
index 79dbf815..a6286007 100644
--- a/src/modlist.cpp
+++ b/src/modlist.cpp
@@ -336,7 +336,7 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const
} else {
return modInfo->nexusId();
}
- } else if (role == Qt::UserRole + 1) {
+ } else if (role == IndexRole) {
return modIndex;
} else if (role == Qt::UserRole + 2) {
switch (column) {
@@ -592,8 +592,7 @@ bool ModList::setData(const QModelIndex &index, const QVariant &value, int role)
}
if (ok) {
m_Profile->setModPriority(modID, newPriority);
-
- emit modorder_changed();
+ emit modPrioritiesChanged({ modID });
result = true;
} else {
result = false;
@@ -765,7 +764,7 @@ void ModList::changeModPriority(std::vector<int> sourceIndices, int newPriority)
emit layoutChanged();
- emit modorder_changed();
+ emit modPrioritiesChanged(sourceIndices);
}
@@ -777,8 +776,7 @@ void ModList::changeModPriority(int sourceIndex, int newPriority)
m_Profile->setModPriority(sourceIndex, newPriority);
emit layoutChanged();
-
- emit modorder_changed();
+ emit modPrioritiesChanged({ sourceIndex });
}
void ModList::setOverwriteMarkers(const std::set<unsigned int> &overwrite, const std::set<unsigned int> &overwritten)
@@ -1525,17 +1523,18 @@ bool ModList::moveSelection(QAbstractItemView *itemView, int direction)
rows.swapItemsAt(i, rows.size() - i - 1);
}
}
+ std::vector<int> allIndex;
for (QModelIndex idx : rows) {
- if (filterModel != nullptr) {
- idx = filterModel->mapToSource(idx);
- }
- int newPriority = m_Profile->getModPriority(idx.row()) + offset;
+ auto index = idx.data(IndexRole).toInt();
+ allIndex.push_back(index);
+ int newPriority = m_Profile->getModPriority(index) + offset;
if ((newPriority >= 0) && (newPriority < static_cast<int>(m_Profile->numRegularMods()))) {
- m_Profile->setModPriority(idx.row(), newPriority);
- notifyChange(idx.row());
+ m_Profile->setModPriority(index, newPriority);
+ notifyChange(index);
}
}
- emit modorder_changed();
+
+ emit modPrioritiesChanged(allIndex);
return true;
}
@@ -1547,7 +1546,7 @@ bool ModList::deleteSelection(QAbstractItemView *itemView)
if (rows.count() > 1) {
emit removeSelectedMods();
} else if (rows.count() == 1) {
- removeRow(rows[0].data(Qt::UserRole + 1).toInt(), QModelIndex());
+ removeRow(rows[0].data(IndexRole).toInt(), QModelIndex());
}
return true;
}
@@ -1562,7 +1561,7 @@ bool ModList::toggleSelection(QAbstractItemView *itemView)
QList<unsigned int> modsToDisable;
QModelIndexList dirtyMods;
for (QModelIndex idx : selectionModel->selectedRows()) {
- int modId = idx.data(Qt::UserRole + 1).toInt();
+ int modId = idx.data(IndexRole).toInt();
if (m_Profile->modEnabled(modId)) {
modsToDisable.append(modId);
dirtyMods.append(idx);