aboutsummaryrefslogtreecommitdiffstats
path: root/ui/qt/widgets/drag_drop_toolbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ui/qt/widgets/drag_drop_toolbar.cpp')
-rw-r--r--ui/qt/widgets/drag_drop_toolbar.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/ui/qt/widgets/drag_drop_toolbar.cpp b/ui/qt/widgets/drag_drop_toolbar.cpp
index 3ebfbcecc5..aa2f0f9aeb 100644
--- a/ui/qt/widgets/drag_drop_toolbar.cpp
+++ b/ui/qt/widgets/drag_drop_toolbar.cpp
@@ -20,6 +20,7 @@
*/
#include <ui/qt/widgets/drag_drop_toolbar.h>
+#include <ui/qt/utils/wireshark_mime_data.h>
#include <QAction>
#include <QApplication>
@@ -141,6 +142,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();
}
@@ -167,6 +176,14 @@ void DragDropToolBar::dragMoveEvent(QDragMoveEvent *event)
widgetForAction(action)->setStyleSheet("QWidget { border: 2px dotted grey; };");
}
}
+ } else if (qobject_cast<const DisplayFilterMimeData *>(event->mimeData())) {
+ if ( event->source() != this )
+ {
+ event->setDropAction(Qt::CopyAction);
+ event->accept();
+ } else {
+ event->acceptProposedAction();
+ }
} else {
event->ignore();
}
@@ -174,6 +191,7 @@ void DragDropToolBar::dragMoveEvent(QDragMoveEvent *event)
void DragDropToolBar::dropEvent(QDropEvent *event)
{
+ /* Moving items around */
if (event->mimeData()->hasFormat("application/x-wireshark-toolbar-entry"))
{
int oldPos = event->mimeData()->data("application/x-wireshark-toolbar-entry").toInt();
@@ -194,6 +212,20 @@ void DragDropToolBar::dropEvent(QDropEvent *event)
event->acceptProposedAction();
}
+ } else if (qobject_cast<const DisplayFilterMimeData *>(event->mimeData())) {
+ const DisplayFilterMimeData * data = qobject_cast<const DisplayFilterMimeData *>(event->mimeData());
+
+ if ( event->source() != this )
+ {
+ event->setDropAction(Qt::CopyAction);
+ event->accept();
+
+ emit newFilterDropped(data->description(), data->filter());
+
+ } else {
+ event->acceptProposedAction();
+ }
+
} else {
event->ignore();
}