aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-27 00:57:11 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-27 00:57:11 +0200
commit8a1961707348c85b6564a18a4c0c3e1d8e34b65c (patch)
tree59766da86b4e26268cee433907044c19a371e6bb /src
parentad15a056672f049cf8302fc7a0a94b71f42db356 (diff)
downloadkristall-8a1961707348c85b6564a18a4c0c3e1d8e34b65c.tar.gz
Fixes typo, adds middle-click to open link in new tab.
Diffstat (limited to 'src')
-rw-r--r--src/browsertab.cpp11
-rw-r--r--src/browsertab.ui7
-rw-r--r--src/dialogs/certificatemanagementdialog.ui2
-rw-r--r--src/kristall.pro2
-rw-r--r--src/widgets/kristalltextbrowser.cpp28
-rw-r--r--src/widgets/kristalltextbrowser.hpp20
6 files changed, 64 insertions, 6 deletions
diff --git a/src/browsertab.cpp b/src/browsertab.cpp
index ae7fd20..0f0d8b2 100644
--- a/src/browsertab.cpp
+++ b/src/browsertab.cpp
@@ -642,9 +642,8 @@ void BrowserTab::on_fav_button_clicked()
void BrowserTab::on_text_browser_anchorClicked(const QUrl &url)
{
- static int click_count = 0;
- qDebug() << (++click_count) << url;
-
+ // Ctrl scheme is *always* the current tab, it's
+ // used for fake-buttons
if(url.scheme() == "kristall+ctrl")
{
if(this->is_internal_location) {
@@ -712,7 +711,11 @@ void BrowserTab::on_text_browser_anchorClicked(const QUrl &url)
if (support == ProtocolSetup::Enabled)
{
- this->navigateTo(real_url, PushImmediate);
+ if(this->ui->text_browser->last_button == Qt::MiddleButton) {
+ mainWindow->addNewTab(false, real_url);
+ } else {
+ this->navigateTo(real_url, PushImmediate);
+ }
}
else
{
diff --git a/src/browsertab.ui b/src/browsertab.ui
index f96db06..5a3aef5 100644
--- a/src/browsertab.ui
+++ b/src/browsertab.ui
@@ -156,7 +156,7 @@
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
- <widget class="QTextBrowser" name="text_browser">
+ <widget class="KristallTextBrowser" name="text_browser">
<property name="styleSheet">
<string notr="true"/>
</property>
@@ -218,6 +218,11 @@ p, li { white-space: pre-wrap; }
<extends>QLineEdit</extends>
<header>widgets/searchbar.hpp</header>
</customwidget>
+ <customwidget>
+ <class>KristallTextBrowser</class>
+ <extends>QTextBrowser</extends>
+ <header>widgets/kristalltextbrowser.hpp</header>
+ </customwidget>
</customwidgets>
<resources>
<include location="icons.qrc"/>
diff --git a/src/dialogs/certificatemanagementdialog.ui b/src/dialogs/certificatemanagementdialog.ui
index db5c241..8fe3f8b 100644
--- a/src/dialogs/certificatemanagementdialog.ui
+++ b/src/dialogs/certificatemanagementdialog.ui
@@ -49,7 +49,7 @@
<item>
<widget class="QToolButton" name="create_cert_button">
<property name="toolTip">
- <string>Craete new certificate</string>
+ <string>Create new certificate</string>
</property>
<property name="text">
<string>Create...</string>
diff --git a/src/kristall.pro b/src/kristall.pro
index e50db0e..fc2253f 100644
--- a/src/kristall.pro
+++ b/src/kristall.pro
@@ -71,6 +71,7 @@ SOURCES += \
renderers/textstyleinstance.cpp \
widgets/browsertabbar.cpp \
widgets/browsertabwidget.cpp \
+ widgets/kristalltextbrowser.cpp \
widgets/mediaplayer.cpp \
mimeparser.cpp \
protocolhandler.cpp \
@@ -113,6 +114,7 @@ HEADERS += \
renderers/textstyleinstance.hpp \
widgets/browsertabbar.hpp \
widgets/browsertabwidget.hpp \
+ widgets/kristalltextbrowser.hpp \
widgets/mediaplayer.hpp \
mimeparser.hpp \
protocolhandler.hpp \
diff --git a/src/widgets/kristalltextbrowser.cpp b/src/widgets/kristalltextbrowser.cpp
new file mode 100644
index 0000000..0843905
--- /dev/null
+++ b/src/widgets/kristalltextbrowser.cpp
@@ -0,0 +1,28 @@
+#include "kristalltextbrowser.hpp"
+
+#include <QMouseEvent>
+
+KristallTextBrowser::KristallTextBrowser(QWidget *parent) :
+ QTextBrowser(parent)
+{
+
+}
+
+void KristallTextBrowser::mouseReleaseEvent(QMouseEvent *event)
+{
+ this->last_button = event->button();
+ if(event->button() == Qt::MiddleButton) {
+ // Fake a middle-click event here
+ QMouseEvent fake_event {
+ event->type(),
+ event->localPos(),
+ Qt::LeftButton,
+ event->buttons(),
+ event->modifiers()
+ };
+
+ QTextBrowser::mouseReleaseEvent(&fake_event);
+ } else {
+ QTextBrowser::mouseReleaseEvent(event);
+ }
+}
diff --git a/src/widgets/kristalltextbrowser.hpp b/src/widgets/kristalltextbrowser.hpp
new file mode 100644
index 0000000..b3de492
--- /dev/null
+++ b/src/widgets/kristalltextbrowser.hpp
@@ -0,0 +1,20 @@
+#ifndef KRISTALLTEXTBROWSER_HPP
+#define KRISTALLTEXTBROWSER_HPP
+
+#include <QTextBrowser>
+
+class KristallTextBrowser : public QTextBrowser
+{
+ Q_OBJECT
+public:
+ KristallTextBrowser(QWidget * parent);
+
+
+ void mouseReleaseEvent(QMouseEvent * event) override;
+
+
+public:
+ Qt::MouseButton last_button;
+};
+
+#endif // KRISTALLTEXTBROWSER_HPP