diff options
author | Roland Knall <rknall@gmail.com> | 2017-11-12 11:41:09 +0100 |
---|---|---|
committer | Roland Knall <rknall@gmail.com> | 2017-11-12 22:17:29 +0000 |
commit | 58a44aef230c2d9ddcdca6c892d22e0bd836c9d5 (patch) | |
tree | bd12fd1212b6d62c5c5e6de207ca857c5b553ef3 /ui | |
parent | 7deb2b432b08a5bae7c138eae1a0b2a2a50a35b8 (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.cpp | 13 | ||||
-rw-r--r-- | ui/qt/utils/wireshark_mime_data.h | 6 | ||||
-rw-r--r-- | ui/qt/widgets/drag_drop_toolbar.cpp | 32 |
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())) { |