summaryrefslogtreecommitdiffstats
path: root/application/groupview
diff options
context:
space:
mode:
Diffstat (limited to 'application/groupview')
-rw-r--r--application/groupview/GroupView.cpp49
-rw-r--r--application/groupview/GroupView.h3
2 files changed, 35 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)
diff --git a/application/groupview/GroupView.h b/application/groupview/GroupView.h
index e0ff1cd9..37c37f2f 100644
--- a/application/groupview/GroupView.h
+++ b/application/groupview/GroupView.h
@@ -62,6 +62,9 @@ protected slots:
void modelReset();
void rowsRemoved();
+signals:
+ void droppedURLs(QList<QUrl> urls);
+
protected:
virtual bool isIndexHidden(const QModelIndex &index) const override;
void mousePressEvent(QMouseEvent *event) override;