diff options
author | Roland Knall <rknall@gmail.com> | 2017-11-07 15:51:43 +0000 |
---|---|---|
committer | Roland Knall <rknall@gmail.com> | 2017-11-08 07:26:03 +0000 |
commit | 96735846beb4d067eac220c48f5d8c18f178e4c1 (patch) | |
tree | 9b12576b2ece6ab358084d8f191f1937bc83dca5 /ui/qt/widgets/drag_drop_toolbar.cpp | |
parent | 4d6454e18027a7265138e16ef95b52000825aa47 (diff) |
Qt: Clean Drag-n-Drop Mimetype for toolbar
Cleans up the mime type to use a class instead of a mimetype
string
Change-Id: I122ba9b39de86d8e263f2204715911a2b0ac75cd
Reviewed-on: https://code.wireshark.org/review/24286
Petri-Dish: Roland Knall <rknall@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Roland Knall <rknall@gmail.com>
Diffstat (limited to 'ui/qt/widgets/drag_drop_toolbar.cpp')
-rw-r--r-- | ui/qt/widgets/drag_drop_toolbar.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/ui/qt/widgets/drag_drop_toolbar.cpp b/ui/qt/widgets/drag_drop_toolbar.cpp index aa2f0f9aeb..526e2c48db 100644 --- a/ui/qt/widgets/drag_drop_toolbar.cpp +++ b/ui/qt/widgets/drag_drop_toolbar.cpp @@ -108,10 +108,7 @@ bool DragDropToolBar::eventFilter(QObject * obj, QEvent * event) > QApplication::startDragDistance()) { QDrag * drag = new QDrag(this); - QMimeData *mimeData = new QMimeData; - mimeData->setData("application/x-wireshark-toolbar-entry", - elem->property(drag_drop_toolbar_action_).toByteArray()); - drag->setMimeData(mimeData); + drag->setMimeData(new ToolbarEntryMimeData(elem->property(drag_drop_toolbar_action_).toInt())); #if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0) qreal dpr = window()->windowHandle()->devicePixelRatio(); @@ -134,7 +131,7 @@ bool DragDropToolBar::eventFilter(QObject * obj, QEvent * event) void DragDropToolBar::dragEnterEvent(QDragEnterEvent *event) { - if (event->mimeData()->hasFormat("application/x-wireshark-toolbar-entry")) + if (qobject_cast<const ToolbarEntryMimeData *>(event->mimeData())) { if (event->source() == this) { event->setDropAction(Qt::MoveAction); @@ -150,6 +147,14 @@ void DragDropToolBar::dragEnterEvent(QDragEnterEvent *event) } else { event->acceptProposedAction(); } + } else if (qobject_cast<const DisplayFilterMimeData *>(event->mimeData())) { + if ( event->source() != this ) + { + event->setDropAction(Qt::CopyAction); + event->accept(); + } else { + event->acceptProposedAction(); + } } else { event->ignore(); } @@ -157,7 +162,7 @@ void DragDropToolBar::dragEnterEvent(QDragEnterEvent *event) void DragDropToolBar::dragMoveEvent(QDragMoveEvent *event) { - if (event->mimeData()->hasFormat("application/x-wireshark-toolbar-entry")) + if (qobject_cast<const ToolbarEntryMimeData *>(event->mimeData())) { if (event->source() == this) { event->setDropAction(Qt::MoveAction); @@ -192,9 +197,11 @@ void DragDropToolBar::dragMoveEvent(QDragMoveEvent *event) void DragDropToolBar::dropEvent(QDropEvent *event) { /* Moving items around */ - if (event->mimeData()->hasFormat("application/x-wireshark-toolbar-entry")) + if (qobject_cast<const ToolbarEntryMimeData *>(event->mimeData())) { - int oldPos = event->mimeData()->data("application/x-wireshark-toolbar-entry").toInt(); + const ToolbarEntryMimeData * data = qobject_cast<const ToolbarEntryMimeData *>(event->mimeData()); + + int oldPos = data->position(); int newPos = -1; QAction * action = actionAt(event->pos()); if ( action && actions().at(oldPos) ) |