diff options
author | Petr Mrázek <peterix@gmail.com> | 2017-04-22 06:11:26 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2017-04-22 06:11:26 +0200 |
commit | 30863a88abbbac05aff914326557882a2f09f4e4 (patch) | |
tree | 262d91987a1e67f3ac1f8fa138b7ac7f9264d469 /application/groupview/GroupView.cpp | |
parent | 77a1d39f6b623ede3e8ce9245459e0f864a1d176 (diff) | |
download | MultiMC-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.cpp | 49 |
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) |