summaryrefslogtreecommitdiff
path: root/src/modlistbypriorityproxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modlistbypriorityproxy.cpp')
-rw-r--r--src/modlistbypriorityproxy.cpp40
1 files changed, 7 insertions, 33 deletions
diff --git a/src/modlistbypriorityproxy.cpp b/src/modlistbypriorityproxy.cpp
index 6f549d91..480a4105 100644
--- a/src/modlistbypriorityproxy.cpp
+++ b/src/modlistbypriorityproxy.cpp
@@ -170,19 +170,6 @@ bool ModListByPriorityProxy::hasChildren(const QModelIndex& parent) const
return item->children.size() > 0;
}
-bool ModListByPriorityProxy::setData(const QModelIndex& index, const QVariant& value, int role)
-{
- // only care about the "name" column
- if (index.column() == 0 && role == Qt::EditRole) {
- QString oldValue = data(index, role).toString();
- if (m_CollapsedItems.contains(oldValue)) {
- m_CollapsedItems.erase(oldValue);
- m_CollapsedItems.insert(value.toString());
- }
- }
- return QAbstractProxyModel::setData(index, value, role);
-}
-
bool ModListByPriorityProxy::canDropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) const
{
ModListDropInfo dropInfo(data, m_core);
@@ -192,7 +179,6 @@ bool ModListByPriorityProxy::canDropMimeData(const QMimeData* data, Qt::DropActi
}
if (dropInfo.isModDrop()) {
-
bool hasSeparator = false;
unsigned int firstRowIndex = -1;
@@ -229,24 +215,9 @@ bool ModListByPriorityProxy::canDropMimeData(const QMimeData* data, Qt::DropActi
}
}
- // top-level drop is disabled unless it's before the first separator
- if (!parent.isValid() && row >= 0) {
-
- // the row may be outside of the children list if we insert at the end
- if (row >= m_Root.children.size()) {
- return false;
- }
-
- // if the previous row is a collapsed separator, disable dropping
- if (row > 0 && m_Root.children[row - 1]->mod->isSeparator()) {
- // we cannot use the name of the mod directly because it does not exactly
- // match the display value (e.g. for separators)
- QString display = sourceModel()->index(m_Root.children[row - 1]->index, ModList::COL_NAME).data(Qt::DisplayRole).toString();
- if (m_CollapsedItems.contains(display)
- && (m_Root.children[row]->mod->isSeparator() || m_Root.children[row]->mod->isOverwrite())) {
- return false;
- }
- }
+ // the row may be outside of the children list if we insert at the end
+ if (!parent.isValid() && row >= m_Root.children.size()) {
+ return false;
}
return QAbstractProxyModel::canDropMimeData(data, action, row, column, parent);
@@ -264,6 +235,7 @@ bool ModListByPriorityProxy::dropMimeData(const QMimeData* data, Qt::DropAction
}
}
else {
+
if (row >= 0) {
if (!parent.isValid()) {
if (row < m_Root.children.size()) {
@@ -271,6 +243,7 @@ bool ModListByPriorityProxy::dropMimeData(const QMimeData* data, Qt::DropAction
if (row > 0
&& m_Root.children[row - 1]->mod->isSeparator()
&& !m_Root.children[row - 1]->children.empty()
+ && m_dropExpanded
&& m_dropPosition == ModListView::DropPosition::BelowItem) {
sourceRow = m_Root.children[row - 1]->children[0]->index;
}
@@ -316,7 +289,8 @@ QModelIndex ModListByPriorityProxy::index(int row, int column, const QModelIndex
return createIndex(row, column, parentItem->children[row].get());
}
-void ModListByPriorityProxy::onDropEnter(const QMimeData*, ModListView::DropPosition dropPosition)
+void ModListByPriorityProxy::onDropEnter(const QMimeData*, bool dropExpanded, ModListView::DropPosition dropPosition)
{
+ m_dropExpanded = dropExpanded;
m_dropPosition = dropPosition;
}