summaryrefslogtreecommitdiff
path: root/src/modlist.cpp
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-12-28 15:20:37 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-02 15:38:15 +0100
commit9d8c64dccbdb5144c6496cbd9ef4eb636f6b4ace (patch)
tree695c1bcbc442e648b844ff04655e655b786e2148 /src/modlist.cpp
parent9db6a9d7931edbb08e74cd1e110794f47d46df3e (diff)
Do not set Qt::ItemIsDropEnabled all the time.
Diffstat (limited to 'src/modlist.cpp')
-rw-r--r--src/modlist.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/modlist.cpp b/src/modlist.cpp
index a058e71c..79dbf815 100644
--- a/src/modlist.cpp
+++ b/src/modlist.cpp
@@ -664,7 +664,6 @@ QVariant ModList::headerData(int section, Qt::Orientation orientation,
return QAbstractItemModel::headerData(section, orientation, role);
}
-
Qt::ItemFlags ModList::flags(const QModelIndex &modelIndex) const
{
Qt::ItemFlags result = QAbstractItemModel::flags(modelIndex);
@@ -688,10 +687,15 @@ Qt::ItemFlags ModList::flags(const QModelIndex &modelIndex) const
result |= Qt::ItemIsEditable;
}
}
+ if (modInfo->isSeparator() || m_DropOnMod) {
+ result |= Qt::ItemIsDropEnabled;
+ }
+ }
+ else if (!m_DropOnMod) {
+ result |= Qt::ItemIsDropEnabled;
}
- // drop check is handled by canDropMimeData
- return result | Qt::ItemIsDropEnabled;
+ return result;
}
@@ -1241,6 +1245,11 @@ bool ModList::dropArchive(const QMimeData* mimeData, int row, const QModelIndex&
return false;
}
+void ModList::onDragEnter(const QMimeData* mimeData)
+{
+ m_DropOnMod = mimeData->hasUrls();
+}
+
bool ModList::canDropMimeData(const QMimeData* mimeData, Qt::DropAction action, int row, int column, const QModelIndex& parent) const
{
if (action == Qt::IgnoreAction) {
@@ -1261,8 +1270,7 @@ bool ModList::canDropMimeData(const QMimeData* mimeData, Qt::DropAction action,
else if (mimeData->hasText()) {
// drop on item
if (row == -1 && parent.isValid()) {
- ModInfo::Ptr modInfo = ModInfo::getByIndex(parent.row());
- return modInfo->isSeparator();
+ return true;
}
else if (hasIndex(row, column, parent)) {
ModInfo::Ptr modInfo = ModInfo::getByIndex(row);