summaryrefslogtreecommitdiffstats
path: root/ui/qt/widgets/clickable_label.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /ui/qt/widgets/clickable_label.cpp
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ui/qt/widgets/clickable_label.cpp')
-rw-r--r--ui/qt/widgets/clickable_label.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/ui/qt/widgets/clickable_label.cpp b/ui/qt/widgets/clickable_label.cpp
new file mode 100644
index 0000000..731281c
--- /dev/null
+++ b/ui/qt/widgets/clickable_label.cpp
@@ -0,0 +1,55 @@
+/* clickable_label.cpp
+ *
+ * Taken from https://wiki.qt.io/Clickable_QLabel and adapted for usage
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include <ui/qt/widgets/clickable_label.h>
+
+#include <QMouseEvent>
+
+ClickableLabel::ClickableLabel(QWidget* parent)
+ : QLabel(parent)
+{
+ setMinimumWidth(0);
+ setText(QString());
+
+ setStyleSheet(QString(
+ "QLabel {"
+ " margin-left: 0.5em;"
+ " }"
+ ));
+}
+
+void ClickableLabel::mouseReleaseEvent(QMouseEvent * event)
+{
+ /* It has to be ensured, that if the user clicks on the label and then moves away out of
+ * the scope of the widget, the event does not fire. Otherwise this behavior differs from
+ * the way, the toolbar buttons work for instance */
+ if (event->pos().x() < 0 || event->pos().x() > size().width())
+ return;
+ if (event->pos().y() < 0 || event->pos().y() > size().height())
+ return;
+
+ emit clicked();
+}
+
+void ClickableLabel::mousePressEvent(QMouseEvent *event)
+{
+ if (event->button() == Qt::LeftButton)
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0 ,0)
+ emit clickedAt(event->globalPosition().toPoint(), Qt::LeftButton);
+#else
+ emit clickedAt(event->globalPos(), Qt::LeftButton);
+#endif
+}
+
+void ClickableLabel::contextMenuEvent(QContextMenuEvent *event)
+{
+ emit clickedAt(QPoint(event->globalPos()), Qt::RightButton);
+}