aboutsummaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorRoland Knall <rknall@gmail.com>2017-11-12 11:41:09 +0100
committerRoland Knall <rknall@gmail.com>2017-11-12 22:17:29 +0000
commit58a44aef230c2d9ddcdca6c892d22e0bd836c9d5 (patch)
treebd12fd1212b6d62c5c5e6de207ca857c5b553ef3 /ui
parent7deb2b432b08a5bae7c138eae1a0b2a2a50a35b8 (diff)
Qt: ToolbarMimeData and display
Implement the mime data for the toolbar in the same fashion as it has been done for the drag-drop of the field filter. Change-Id: I2b1ac7f82b637c999f458700c9ab24a9e4dcbcb8 Reviewed-on: https://code.wireshark.org/review/24378 Petri-Dish: Roland Knall <rknall@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Roland Knall <rknall@gmail.com>
Diffstat (limited to 'ui')
-rw-r--r--ui/qt/utils/wireshark_mime_data.cpp13
-rw-r--r--ui/qt/utils/wireshark_mime_data.h6
-rw-r--r--ui/qt/widgets/drag_drop_toolbar.cpp32
3 files changed, 34 insertions, 17 deletions
diff --git a/ui/qt/utils/wireshark_mime_data.cpp b/ui/qt/utils/wireshark_mime_data.cpp
index 24b4111d94..ee39c7972a 100644
--- a/ui/qt/utils/wireshark_mime_data.cpp
+++ b/ui/qt/utils/wireshark_mime_data.cpp
@@ -48,11 +48,22 @@ QString DisplayFilterMimeData::labelText() const
return QString("%1\n%2").arg(description_, filter_);
}
-ToolbarEntryMimeData::ToolbarEntryMimeData(int pos) :
+ToolbarEntryMimeData::ToolbarEntryMimeData(QString element, int pos) :
QMimeData(),
+ element_(element),
pos_(pos)
{}
+QString ToolbarEntryMimeData::element() const
+{
+ return element_;
+}
+
+QString ToolbarEntryMimeData::labelText() const
+{
+ return QString("%1").arg(element_);
+}
+
int ToolbarEntryMimeData::position() const
{
return pos_;
diff --git a/ui/qt/utils/wireshark_mime_data.h b/ui/qt/utils/wireshark_mime_data.h
index 82b70bc88b..a3936aad8b 100644
--- a/ui/qt/utils/wireshark_mime_data.h
+++ b/ui/qt/utils/wireshark_mime_data.h
@@ -48,12 +48,16 @@ class ToolbarEntryMimeData: public QMimeData {
Q_OBJECT
public:
- ToolbarEntryMimeData(int pos);
+ ToolbarEntryMimeData(QString element, int pos);
int position() const;
+ QString element() const;
+
+ QString labelText() const;
private:
+ QString element_;
int pos_;
};
diff --git a/ui/qt/widgets/drag_drop_toolbar.cpp b/ui/qt/widgets/drag_drop_toolbar.cpp
index 526e2c48db..abad03c686 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/widgets/drag_label.h>
#include <ui/qt/utils/wireshark_mime_data.h>
#include <QAction>
@@ -107,17 +108,20 @@ bool DragDropToolBar::eventFilter(QObject * obj, QEvent * event)
if ( ( ev->buttons() & Qt::LeftButton ) && (ev->pos() - dragStartPosition).manhattanLength()
> QApplication::startDragDistance())
{
+ ToolbarEntryMimeData * temd =
+ new ToolbarEntryMimeData(((QToolButton *)elem)->text(), elem->property(drag_drop_toolbar_action_).toInt());
+ DragLabel * lbl = new DragLabel(temd->labelText(), this);
QDrag * drag = new QDrag(this);
- drag->setMimeData(new ToolbarEntryMimeData(elem->property(drag_drop_toolbar_action_).toInt()));
+ drag->setMimeData(temd);
#if QT_VERSION >= QT_VERSION_CHECK(5, 1, 0)
qreal dpr = window()->windowHandle()->devicePixelRatio();
- QPixmap pixmap(elem->size() * dpr);
+ QPixmap pixmap(lbl->size() * dpr);
pixmap.setDevicePixelRatio(dpr);
#else
- QPixmap pixmap(elem->size());
+ QPixmap pixmap(lbl->size());
#endif
- elem->render(&pixmap);
+ lbl->render(&pixmap);
drag->setPixmap(pixmap);
drag->exec(Qt::CopyAction | Qt::MoveAction);
@@ -131,6 +135,9 @@ bool DragDropToolBar::eventFilter(QObject * obj, QEvent * event)
void DragDropToolBar::dragEnterEvent(QDragEnterEvent *event)
{
+ if ( ! event )
+ return;
+
if (qobject_cast<const ToolbarEntryMimeData *>(event->mimeData()))
{
if (event->source() == this) {
@@ -162,6 +169,9 @@ void DragDropToolBar::dragEnterEvent(QDragEnterEvent *event)
void DragDropToolBar::dragMoveEvent(QDragMoveEvent *event)
{
+ if ( ! event )
+ return;
+
if (qobject_cast<const ToolbarEntryMimeData *>(event->mimeData()))
{
if (event->source() == this) {
@@ -169,17 +179,6 @@ void DragDropToolBar::dragMoveEvent(QDragMoveEvent *event)
event->accept();
} else {
event->acceptProposedAction();
- QAction * action = actionAt(event->pos());
- if ( action )
- {
- foreach(QAction * act, actions())
- {
- if ( widgetForAction(act) )
- widgetForAction(act)->setStyleSheet("QWidget { border: none; };");
- }
-
- widgetForAction(action)->setStyleSheet("QWidget { border: 2px dotted grey; };");
- }
}
} else if (qobject_cast<const DisplayFilterMimeData *>(event->mimeData())) {
if ( event->source() != this )
@@ -196,6 +195,9 @@ void DragDropToolBar::dragMoveEvent(QDragMoveEvent *event)
void DragDropToolBar::dropEvent(QDropEvent *event)
{
+ if ( ! event )
+ return;
+
/* Moving items around */
if (qobject_cast<const ToolbarEntryMimeData *>(event->mimeData()))
{