From 3ccce27dd5d61bbe393f7a56f4a2f189e43e9b24 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Thu, 21 Apr 2022 08:25:28 +0200 Subject: [PATCH] resolve relative URLs when navigating in nwe --- .../desktop/com.github.rssguard.appdata.xml | 2 +- .../qtextbrowser/textbrowserviewer.cpp | 20 ++++++++----------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml index 1efe3be33..412bb29f7 100644 --- a/resources/desktop/com.github.rssguard.appdata.xml +++ b/resources/desktop/com.github.rssguard.appdata.xml @@ -26,7 +26,7 @@ https://github.com/sponsors/martinrotter - + none diff --git a/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp b/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp index abf516185..578367fc2 100644 --- a/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp +++ b/src/librssguard/gui/webviewers/qtextbrowser/textbrowserviewer.cpp @@ -364,11 +364,11 @@ void TextBrowserViewer::reloadWithImages() { } } - auto scrolled = verticalScrollBar()->value(); + auto scrolled = verticalScrollBarPosition(); setHtmlPrivate(html(), m_currentUrl); - verticalScrollBar()->setValue(scrolled); + setVerticalScrollBarPosition(scrolled); } void TextBrowserViewer::openLinkInExternalBrowser() { @@ -397,22 +397,18 @@ void TextBrowserViewer::downloadLink() { void TextBrowserViewer::onAnchorClicked(const QUrl& url) { if (!url.isEmpty()) { + const QUrl resolved_url = (m_currentUrl.isValid() && url.isRelative()) ? m_currentUrl.resolved(url) : url; + bool open_externally_now = qApp->settings()->value(GROUP(Browser), SETTING(Browser::OpenLinksInExternalBrowserRightAway)).toBool(); if (open_externally_now) { - qApp->web()->openUrlInExternalBrowser(url.toString()); + qApp->web()->openUrlInExternalBrowser(resolved_url.toString()); } else { - setUrl(url); + setUrl(resolved_url); } } - else { - MsgBox::show(qApp->mainFormWidget(), - QMessageBox::Warning, - tr("Incorrect link"), - tr("Selected hyperlink is invalid.")); - } } void TextBrowserViewer::setHtml(const QString& html, const QUrl& base_url) { @@ -456,12 +452,12 @@ QVariant TextBrowserDocument::loadResource(int type, const QUrl& name) { m_resourcesForHtml.append(name); } - return QTextDocument::loadResource(type, name); + return {}; } else if (m_loadedResources.contains(name)) { return QImage::fromData(m_loadedResources.value(name)); } else { - return QTextDocument::loadResource(type, name); + return {}; } }