| 604 | } |
| 605 | |
| 606 | void InstanceView::dropEvent(QDropEvent *event) |
| 607 | { |
| 608 | executeDelayedItemsLayout(); |
| 609 | |
| 610 | m_lastDragPosition = QPoint(); |
| 611 | |
| 612 | stopAutoScroll(); |
| 613 | setState(NoState); |
| 614 | |
| 615 | auto mimedata = event->mimeData(); |
| 616 | |
| 617 | if (event->source() == this) |
| 618 | { |
| 619 | if(event->possibleActions() & Qt::MoveAction) |
| 620 | { |
| 621 | QPair<VisualGroup *, VisualGroup::HitResults> dropPos = rowDropPos(event->pos()); |
| 622 | const VisualGroup *group = dropPos.first; |
| 623 | auto hitresult = dropPos.second; |
| 624 | |
| 625 | if (hitresult == VisualGroup::HitResult::NoHit) |
| 626 | { |
| 627 | viewport()->update(); |
| 628 | return; |
| 629 | } |
| 630 | auto instanceId = QString::fromUtf8(mimedata->data("application/x-instanceid")); |
| 631 | auto instanceList = APPLICATION->instances().get(); |
| 632 | instanceList->setInstanceGroup(instanceId, group->text); |
| 633 | event->setDropAction(Qt::MoveAction); |
| 634 | event->accept(); |
| 635 | |
| 636 | updateGeometries(); |
| 637 | viewport()->update(); |
| 638 | } |
| 639 | return; |
| 640 | } |
| 641 | |
| 642 | // check if the action is supported |
| 643 | if (!mimedata) |
| 644 | { |
| 645 | return; |
| 646 | } |
| 647 | |
| 648 | // files dropped from outside? |
| 649 | if (mimedata->hasUrls()) |
| 650 | { |
| 651 | auto urls = mimedata->urls(); |
| 652 | event->accept(); |
| 653 | emit droppedURLs(urls); |
| 654 | } |
| 655 | } |
| 656 | |
| 657 | void InstanceView::startDrag(Qt::DropActions supportedActions) |
| 658 | { |