aboutsummaryrefslogtreecommitdiff
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/kristalltextbrowser.cpp10
-rw-r--r--src/widgets/kristalltextbrowser.hpp9
2 files changed, 15 insertions, 4 deletions
diff --git a/src/widgets/kristalltextbrowser.cpp b/src/widgets/kristalltextbrowser.cpp
index 0843905..c813b05 100644
--- a/src/widgets/kristalltextbrowser.cpp
+++ b/src/widgets/kristalltextbrowser.cpp
@@ -5,12 +5,11 @@
KristallTextBrowser::KristallTextBrowser(QWidget *parent) :
QTextBrowser(parent)
{
-
+ connect(this, &QTextBrowser::anchorClicked, this, &KristallTextBrowser::on_anchorClicked);
}
void KristallTextBrowser::mouseReleaseEvent(QMouseEvent *event)
{
- this->last_button = event->button();
if(event->button() == Qt::MiddleButton) {
// Fake a middle-click event here
QMouseEvent fake_event {
@@ -21,8 +20,15 @@ void KristallTextBrowser::mouseReleaseEvent(QMouseEvent *event)
event->modifiers()
};
+ this->signal_new_tab = true;
QTextBrowser::mouseReleaseEvent(&fake_event);
} else {
+ this->signal_new_tab = event->modifiers().testFlag(Qt::ControlModifier);
QTextBrowser::mouseReleaseEvent(event);
}
}
+
+void KristallTextBrowser::on_anchorClicked(const QUrl &url)
+{
+ emit this->anchorClicked(url, this->signal_new_tab);
+}
diff --git a/src/widgets/kristalltextbrowser.hpp b/src/widgets/kristalltextbrowser.hpp
index b3de492..def130a 100644
--- a/src/widgets/kristalltextbrowser.hpp
+++ b/src/widgets/kristalltextbrowser.hpp
@@ -12,9 +12,14 @@ public:
void mouseReleaseEvent(QMouseEvent * event) override;
+signals:
+ void anchorClicked(QUrl const &, bool open_in_new_tab);
-public:
- Qt::MouseButton last_button;
+private: // slots
+ void on_anchorClicked(QUrl const & url);
+
+private:
+ bool signal_new_tab = false;
};
#endif // KRISTALLTEXTBROWSER_HPP