summaryrefslogtreecommitdiffstats
path: root/application/groupview/GroupView.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2017-04-22 06:11:26 +0200
committerPetr Mrázek <peterix@gmail.com>2017-04-22 06:11:26 +0200
commit30863a88abbbac05aff914326557882a2f09f4e4 (patch)
tree262d91987a1e67f3ac1f8fa138b7ac7f9264d469 /application/groupview/GroupView.cpp
parent77a1d39f6b623ede3e8ce9245459e0f864a1d176 (diff)
downloadMultiMC-30863a88abbbac05aff914326557882a2f09f4e4.tar
MultiMC-30863a88abbbac05aff914326557882a2f09f4e4.tar.gz
MultiMC-30863a88abbbac05aff914326557882a2f09f4e4.tar.lz
MultiMC-30863a88abbbac05aff914326557882a2f09f4e4.tar.xz
MultiMC-30863a88abbbac05aff914326557882a2f09f4e4.zip
NOISSUE add pack import using drag&drop
Straight from the browser or the downloads folder.
Diffstat (limited to 'application/groupview/GroupView.cpp')
-rw-r--r--application/groupview/GroupView.cpp49
1 files changed, 32 insertions, 17 deletions
diff --git a/application/groupview/GroupView.cpp b/application/groupview/GroupView.cpp
index a6844102..1ce0568b 100644
--- a/application/groupview/GroupView.cpp
+++ b/application/groupview/GroupView.cpp
@@ -534,31 +534,46 @@ void GroupView::dropEvent(QDropEvent *event)
stopAutoScroll();
setState(NoState);
- if (event->source() != this || !(event->possibleActions() & Qt::MoveAction))
+ if (event->source() == this)
{
- return;
- }
+ if(event->possibleActions() & Qt::MoveAction)
+ {
+ QPair<VisualGroup *, int> dropPos = rowDropPos(event->pos() + offset());
+ const VisualGroup *category = dropPos.first;
+ const int row = dropPos.second;
- QPair<VisualGroup *, int> dropPos = rowDropPos(event->pos() + offset());
- const VisualGroup *category = dropPos.first;
- const int row = dropPos.second;
+ if (row == -1)
+ {
+ viewport()->update();
+ return;
+ }
- if (row == -1)
+ const QString categoryText = category->text;
+ if (model()->dropMimeData(event->mimeData(), Qt::MoveAction, row, 0, QModelIndex()))
+ {
+ model()->setData(model()->index(row, 0), categoryText,
+ GroupViewRoles::GroupRole);
+ event->setDropAction(Qt::MoveAction);
+ event->accept();
+ }
+ updateGeometries();
+ viewport()->update();
+ }
+ }
+ auto mimedata = event->mimeData();
+
+ // check if the action is supported
+ if (!mimedata)
{
- viewport()->update();
return;
}
- const QString categoryText = category->text;
- if (model()->dropMimeData(event->mimeData(), Qt::MoveAction, row, 0, QModelIndex()))
+ // files dropped from outside?
+ if (mimedata->hasUrls())
{
- model()->setData(model()->index(row, 0), categoryText,
- GroupViewRoles::GroupRole);
- event->setDropAction(Qt::MoveAction);
- event->accept();
+ auto urls = mimedata->urls();
+ emit droppedURLs(urls);
}
- updateGeometries();
- viewport()->update();
}
void GroupView::startDrag(Qt::DropActions supportedActions)
@@ -707,7 +722,7 @@ QList<QPair<QRect, QModelIndex>> GroupView::draggablePaintPairs(const QModelInde
bool GroupView::isDragEventAccepted(QDropEvent *event)
{
- return false;
+ return true;
}
QPair<VisualGroup *, int> GroupView::rowDropPos(const QPoint &pos)