aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-29 00:16:34 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-29 00:16:34 +0200
commit1360cbe9cd11c99a23847600c820a900897dd381 (patch)
treed19a5a151cb4813369e67742acc984a37665c719 /src
parent741c71adff886f590081501932ec1520058d7def (diff)
downloadkristall-1360cbe9cd11c99a23847600c820a900897dd381.tar.gz
Makes Ctrl-LMB on a link open into a new tab.
Diffstat (limited to 'src')
-rw-r--r--src/browsertab.cpp4
-rw-r--r--src/browsertab.hpp2
-rw-r--r--src/widgets/kristalltextbrowser.cpp10
-rw-r--r--src/widgets/kristalltextbrowser.hpp9
4 files changed, 18 insertions, 7 deletions
diff --git a/src/browsertab.cpp b/src/browsertab.cpp
index c979b4c..8c6fb37 100644
--- a/src/browsertab.cpp
+++ b/src/browsertab.cpp
@@ -678,7 +678,7 @@ void BrowserTab::on_fav_button_clicked()
toggleIsFavourite(this->ui->fav_button->isChecked());
}
-void BrowserTab::on_text_browser_anchorClicked(const QUrl &url)
+void BrowserTab::on_text_browser_anchorClicked(const QUrl &url, bool open_in_new_tab)
{
// Ctrl scheme is *always* the current tab, it's
// used for fake-buttons
@@ -749,7 +749,7 @@ void BrowserTab::on_text_browser_anchorClicked(const QUrl &url)
if (support == ProtocolSetup::Enabled)
{
- if(this->ui->text_browser->last_button == Qt::MiddleButton) {
+ if(open_in_new_tab) {
mainWindow->addNewTab(false, real_url);
} else {
this->navigateTo(real_url, PushImmediate);
diff --git a/src/browsertab.hpp b/src/browsertab.hpp
index 3d247d8..2905fcb 100644
--- a/src/browsertab.hpp
+++ b/src/browsertab.hpp
@@ -85,7 +85,7 @@ private slots:
void on_fav_button_clicked();
- void on_text_browser_anchorClicked(const QUrl &arg1);
+ void on_text_browser_anchorClicked(const QUrl &arg1, bool open_in_new_tab);
void on_text_browser_highlighted(const QUrl &arg1);
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