summary refs log tree commit diff
path: root/src/ui/TextLabel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/TextLabel.cpp')
-rw-r--r--src/ui/TextLabel.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/ui/TextLabel.cpp b/src/ui/TextLabel.cpp

index 85267674..8ea2bb54 100644 --- a/src/ui/TextLabel.cpp +++ b/src/ui/TextLabel.cpp
@@ -7,6 +7,17 @@ #include "Utils.h" +bool +ContextMenuFilter::eventFilter(QObject *obj, QEvent *event) +{ + if (event->type() == QEvent::MouseButtonPress) { + emit contextMenuIsOpening(); + return true; + } + + return QObject::eventFilter(obj, event); +} + TextLabel::TextLabel(QWidget *parent) : TextLabel(QString(), parent) {} @@ -39,6 +50,12 @@ TextLabel::TextLabel(const QString &text, QWidget *parent) setFixedHeight(0); connect(this, &TextLabel::linkActivated, this, &TextLabel::handleLinkActivation); + + auto filter = new ContextMenuFilter(this); + installEventFilter(filter); + connect(filter, &ContextMenuFilter::contextMenuIsOpening, this, [this]() { + contextMenuRequested_ = true; + }); } void @@ -46,6 +63,12 @@ TextLabel::focusOutEvent(QFocusEvent *e) { QTextBrowser::focusOutEvent(e); + // We keep the selection available for the context menu. + if (contextMenuRequested_) { + contextMenuRequested_ = false; + return; + } + QTextCursor cursor = textCursor(); cursor.clearSelection(); setTextCursor(cursor);