diff --git a/src/librssguard/gui/litehtml/litehtmlviewer.cpp b/src/librssguard/gui/litehtml/litehtmlviewer.cpp
index ba0e0a998..a277e1e58 100755
--- a/src/librssguard/gui/litehtml/litehtmlviewer.cpp
+++ b/src/librssguard/gui/litehtml/litehtmlviewer.cpp
@@ -35,6 +35,8 @@ LiteHtmlViewer::LiteHtmlViewer(QWidget* parent) : QLiteHtmlWidget(parent), m_dow
}
void LiteHtmlViewer::bindToBrowser(WebBrowser* browser) {
+ installEventFilter(browser);
+
browser->m_actionBack = new QAction(this);
browser->m_actionForward = new QAction(this);
browser->m_actionReload = new QAction(this);
@@ -319,21 +321,6 @@ void LiteHtmlViewer::showContextMenu(const QPoint& pos, const QUrl& url) {
m_contextMenu->popup(mapToGlobal(pos));
}
-void LiteHtmlViewer::wheelEvent(QWheelEvent* event) {
- if ((event->modifiers() & Qt::KeyboardModifier::ControlModifier) > 0) {
- if (event->angleDelta().y() > 0 && canZoomIn()) {
- zoomIn();
- emit zoomFactorChanged();
- }
- else if (event->angleDelta().y() < 0 && canZoomOut()) {
- zoomOut();
- emit zoomFactorChanged();
- }
- }
-
- QLiteHtmlWidget::wheelEvent(event);
-}
-
BlockingResult LiteHtmlViewer::blockedWithAdblock(const QUrl& url) {
AdblockRequestInfo block_request(url);
diff --git a/src/librssguard/gui/litehtml/litehtmlviewer.h b/src/librssguard/gui/litehtml/litehtmlviewer.h
index 19a7f87a9..ad62568ab 100755
--- a/src/librssguard/gui/litehtml/litehtmlviewer.h
+++ b/src/librssguard/gui/litehtml/litehtmlviewer.h
@@ -51,7 +51,6 @@ class LiteHtmlViewer : public QLiteHtmlWidget, public WebViewer {
protected:
virtual void keyPressEvent(QKeyEvent* event);
- virtual void wheelEvent(QWheelEvent* event);
private:
BlockingResult blockedWithAdblock(const QUrl& url);
diff --git a/src/librssguard/gui/messagepreviewer.cpp b/src/librssguard/gui/messagepreviewer.cpp
index ddc0d12d3..a5fa07e59 100644
--- a/src/librssguard/gui/messagepreviewer.cpp
+++ b/src/librssguard/gui/messagepreviewer.cpp
@@ -115,7 +115,7 @@ void MessagePreviewer::loadMessage(const Message& message, RootItem* root) {
m_txtMessage->loadUrl(m_message.m_url);
}
else {
- m_txtMessage->loadMessage(message, m_root);
+ m_txtMessage->loadMessages({ message }, m_root);
}
}
}
diff --git a/src/librssguard/gui/webbrowser.cpp b/src/librssguard/gui/webbrowser.cpp
index 8bead6bd5..4f7310816 100644
--- a/src/librssguard/gui/webbrowser.cpp
+++ b/src/librssguard/gui/webbrowser.cpp
@@ -122,28 +122,6 @@ void WebBrowser::onZoomFactorChanged() {
qApp->settings()->setValue(GROUP(Messages), Messages::Zoom, m_webView->zoomFactor());
}
-void WebBrowser::increaseZoom() {
- if (m_webView->canZoomIn()) {
- m_webView->zoomIn();
-
- qApp->settings()->setValue(GROUP(Messages), Messages::Zoom, m_webView->zoomFactor());
- }
-}
-
-void WebBrowser::decreaseZoom() {
- if (m_webView->canZoomOut()) {
- m_webView->zoomOut();
-
- qApp->settings()->setValue(GROUP(Messages), Messages::Zoom, m_webView->zoomFactor());
- }
-}
-
-void WebBrowser::resetZoom() {
- m_webView->setZoomFactor(1.0f);
-
- qApp->settings()->setValue(GROUP(Messages), Messages::Zoom, m_webView->zoomFactor());
-}
-
void WebBrowser::clear(bool also_hide) {
m_webView->clear();
m_messages.clear();
@@ -170,10 +148,6 @@ void WebBrowser::loadMessages(const QList& messages, RootItem* root) {
}
}
-void WebBrowser::loadMessage(const Message& message, RootItem* root) {
- loadMessages({ message }, root);
-}
-
void WebBrowser::readabilePage() {
m_actionReadabilePage->setEnabled(false);
qApp->web()->readability()->makeHtmlReadable(m_webView->html(), m_webView->url().toString());
@@ -182,15 +156,58 @@ void WebBrowser::readabilePage() {
bool WebBrowser::eventFilter(QObject* watched, QEvent* event) {
Q_UNUSED(watched)
- if (event->type() == QEvent::KeyPress) {
+ if (event->type() == QEvent::Type::Wheel) {
+ QWheelEvent* wh_event = static_cast(event);
+
+ // Zoom with mouse.
+ if ((wh_event->modifiers() & Qt::KeyboardModifier::ControlModifier) > 0) {
+ if (wh_event->angleDelta().y() > 0 && m_webView->canZoomIn()) {
+ m_webView->zoomIn();
+ onZoomFactorChanged();
+ return true;
+ }
+ else if (wh_event->angleDelta().y() < 0 && m_webView->canZoomOut()) {
+ m_webView->zoomOut();
+ onZoomFactorChanged();
+ return true;
+ }
+ }
+ }
+ else if (event->type() == QEvent::KeyPress) {
QKeyEvent* key_event = static_cast(event);
+ // Find text.
if (key_event->matches(QKeySequence::StandardKey::Find)) {
m_searchWidget->clear();
m_searchWidget->show();
m_searchWidget->setFocus();
return true;
}
+
+ // Hide visible search box.
+ if (key_event->key() == Qt::Key::Key_Escape && m_searchWidget->isVisible()) {
+ m_searchWidget->hide();
+ return true;
+ }
+
+ // Zoom with keyboard.
+ if ((key_event->modifiers() & Qt::KeyboardModifier::ControlModifier) > 0) {
+ if (key_event->key() == Qt::Key::Key_Plus && m_webView->canZoomIn()) {
+ m_webView->zoomIn();
+ onZoomFactorChanged();
+ return true;
+ }
+ else if (key_event->key() == Qt::Key::Key_Minus && m_webView->canZoomOut()) {
+ m_webView->zoomOut();
+ onZoomFactorChanged();
+ return true;
+ }
+ else if (key_event->key() == Qt::Key::Key_0) {
+ m_webView->setZoomFactor(1.0f);
+ onZoomFactorChanged();
+ return true;
+ }
+ }
}
return false;
diff --git a/src/librssguard/gui/webbrowser.h b/src/librssguard/gui/webbrowser.h
index 0eb70bb6c..b6e402846 100644
--- a/src/librssguard/gui/webbrowser.h
+++ b/src/librssguard/gui/webbrowser.h
@@ -42,15 +42,11 @@ class WebBrowser : public TabContent {
public slots:
void reloadFontSettings();
- void increaseZoom();
- void decreaseZoom();
- void resetZoom();
void clear(bool also_hide);
void loadUrl(const QString& url);
void loadUrl(const QUrl& url);
void loadMessages(const QList& messages, RootItem* root);
- void loadMessage(const Message& message, RootItem* root);
void setNavigationBarVisible(bool visible);
protected:
diff --git a/src/librssguard/gui/webengine/webengineviewer.cpp b/src/librssguard/gui/webengine/webengineviewer.cpp
index 454a931b7..4022400ee 100644
--- a/src/librssguard/gui/webengine/webengineviewer.cpp
+++ b/src/librssguard/gui/webengine/webengineviewer.cpp
@@ -29,7 +29,7 @@
#include
#include
-WebEngineViewer::WebEngineViewer(QWidget* parent) : QWebEngineView(parent), m_root(nullptr) {
+WebEngineViewer::WebEngineViewer(QWidget* parent) : QWebEngineView(parent), m_browser(nullptr), m_root(nullptr) {
WebEnginePage* page = new WebEnginePage(this);
setPage(page);
@@ -40,8 +40,8 @@ bool WebEngineViewer::event(QEvent* event) {
QChildEvent* child_ev = static_cast(event);
QWidget* w = qobject_cast(child_ev->child());
- if (w != nullptr) {
- w->installEventFilter(this);
+ if (w != nullptr && m_browser != nullptr) {
+ w->installEventFilter(m_browser);
}
}
@@ -227,49 +227,6 @@ QWebEngineView* WebEngineViewer::createWindow(QWebEnginePage::WebWindowType type
}
}
-bool WebEngineViewer::eventFilter(QObject* object, QEvent* event) {
- Q_UNUSED(object)
-
- if (event->type() == QEvent::Type::Wheel) {
- QWheelEvent* wh_event = static_cast(event);
-
- if ((wh_event->modifiers() & Qt::KeyboardModifier::ControlModifier) > 0) {
- if (wh_event->angleDelta().y() > 0 && canZoomIn()) {
- zoomIn();
- emit zoomFactorChanged();
-
- return true;
- }
- else if (wh_event->angleDelta().y() < 0 && canZoomOut()) {
- zoomOut();
- emit zoomFactorChanged();
-
- return true;
- }
- }
- }
- else if (event->type() == QEvent::Type::KeyPress) {
- QKeyEvent* key_event = static_cast(event);
-
- if ((key_event->modifiers() & Qt::KeyboardModifier::ControlModifier) > 0) {
- if (key_event->key() == Qt::Key::Key_Plus) {
- zoomIn();
- return true;
- }
- else if (key_event->key() == Qt::Key::Key_Minus) {
- zoomOut();
- return true;
- }
- else if (key_event->key() == Qt::Key::Key_0) {
- setZoomFactor(1.0f);
- return true;
- }
- }
- }
-
- return false;
-}
-
void WebEngineViewer::openUrlWithExternalTool(ExternalTool tool, const QString& target_url) {
tool.run(target_url);
}
@@ -279,6 +236,8 @@ RootItem* WebEngineViewer::root() const {
}
void WebEngineViewer::bindToBrowser(WebBrowser* browser) {
+ m_browser = browser;
+
browser->m_actionBack = pageAction(QWebEnginePage::WebAction::Back);
browser->m_actionForward = pageAction(QWebEnginePage::WebAction::Forward);
browser->m_actionReload = pageAction(QWebEnginePage::WebAction::Reload);
diff --git a/src/librssguard/gui/webengine/webengineviewer.h b/src/librssguard/gui/webengine/webengineviewer.h
index 9007f9b4b..d4bab908b 100644
--- a/src/librssguard/gui/webengine/webengineviewer.h
+++ b/src/librssguard/gui/webengine/webengineviewer.h
@@ -12,6 +12,7 @@
#include "network-web/webengine/webenginepage.h"
class RootItem;
+class WebBrowser;
class WebEngineViewer : public QWebEngineView, public WebViewer {
Q_OBJECT
@@ -47,7 +48,6 @@ class WebEngineViewer : public QWebEngineView, public WebViewer {
virtual QWebEngineView* createWindow(QWebEnginePage::WebWindowType type);
virtual void contextMenuEvent(QContextMenuEvent* event);
virtual bool event(QEvent* event);
- virtual bool eventFilter(QObject* object, QEvent* event);
private slots:
void displayMessage();
@@ -57,6 +57,7 @@ class WebEngineViewer : public QWebEngineView, public WebViewer {
WebEnginePage* page() const;
private:
+ WebBrowser* m_browser;
RootItem* m_root;
QString m_messageBaseUrl;
QString m_messageContents;