aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Knall <rknall@gmail.com>2017-11-07 15:51:43 +0000
committerRoland Knall <rknall@gmail.com>2017-11-08 07:26:03 +0000
commit96735846beb4d067eac220c48f5d8c18f178e4c1 (patch)
tree9b12576b2ece6ab358084d8f191f1937bc83dca5
parent4d6454e18027a7265138e16ef95b52000825aa47 (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.cpp13
-rw-r--r--ui/qt/utils/wireshark_mime_data.h14
-rw-r--r--ui/qt/widgets/drag_drop_toolbar.cpp23
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) )