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 | |
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>
-rw-r--r-- | ui/qt/utils/wireshark_mime_data.cpp | 13 | ||||
-rw-r--r-- | ui/qt/utils/wireshark_mime_data.h | 14 | ||||
-rw-r--r-- | ui/qt/widgets/drag_drop_toolbar.cpp | 23 |
3 files changed, 40 insertions, 10 deletions
diff --git a/ui/qt/utils/wireshark_mime_data.cpp b/ui/qt/utils/wireshark_mime_data.cpp index 7844ee3fd2..690e1911f4 100644 --- a/ui/qt/utils/wireshark_mime_data.cpp +++ b/ui/qt/utils/wireshark_mime_data.cpp @@ -25,8 +25,7 @@ DisplayFilterMimeData::DisplayFilterMimeData(QString description, QString filter QMimeData(), description_(description), filter_(filter) -{ -} +{} QString DisplayFilterMimeData::description() const { @@ -38,6 +37,16 @@ QString DisplayFilterMimeData::filter() const return filter_; } +ToolbarEntryMimeData::ToolbarEntryMimeData(int pos) : + QMimeData(), + pos_(pos) +{} + +int ToolbarEntryMimeData::position() const +{ + return pos_; +} + /* * Editor modelines * diff --git a/ui/qt/utils/wireshark_mime_data.h b/ui/qt/utils/wireshark_mime_data.h index d2b4c79e82..da7417c41a 100644 --- a/ui/qt/utils/wireshark_mime_data.h +++ b/ui/qt/utils/wireshark_mime_data.h @@ -40,6 +40,20 @@ private: }; +class ToolbarEntryMimeData: public QMimeData { + Q_OBJECT +public: + + ToolbarEntryMimeData(int pos); + + int position() const; + +private: + + int pos_; + +}; + #endif /* UI_QT_UTILS_WIRESHARK_MIME_DATA_H_ */ /* 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) ) |