fix for reddit
This commit is contained in:
parent
e153a1faca
commit
827190c1da
@ -20,7 +20,7 @@
|
|||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
TextBrowserViewer::TextBrowserViewer(QWidget* parent)
|
TextBrowserViewer::TextBrowserViewer(QWidget* parent)
|
||||||
: QTextBrowser(parent), m_resourcesEnabled(false), m_resourceDownloader(new Downloader(this)),
|
: QTextBrowser(parent), m_resourcesEnabled(false), m_resourceDownloader(new Downloader(this)), m_loadedResources({}),
|
||||||
m_placeholderImage(qApp->icons()->miscPixmap("image-placeholder")),
|
m_placeholderImage(qApp->icons()->miscPixmap("image-placeholder")),
|
||||||
m_placeholderImageError(qApp->icons()->miscPixmap("image-placeholder-error")), m_downloader(new Downloader(this)),
|
m_placeholderImageError(qApp->icons()->miscPixmap("image-placeholder-error")), m_downloader(new Downloader(this)),
|
||||||
m_document(new TextBrowserDocument(this)) {
|
m_document(new TextBrowserDocument(this)) {
|
||||||
@ -66,7 +66,7 @@ QVariant TextBrowserViewer::loadOneResource(int type, const QUrl& name) {
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
auto resolved_name = m_currentUrl.isValid() ? m_currentUrl.resolved(name) : name;
|
auto resolved_name = (m_currentUrl.isValid() && name.isRelative()) ? m_currentUrl.resolved(name) : name;
|
||||||
|
|
||||||
if (!m_resourcesEnabled || !m_loadedResources.contains(resolved_name)) {
|
if (!m_resourcesEnabled || !m_loadedResources.contains(resolved_name)) {
|
||||||
// Resources are not enabled.
|
// Resources are not enabled.
|
||||||
@ -441,10 +441,12 @@ void TextBrowserViewer::setHtml(const QString& html, const QUrl& base_url) {
|
|||||||
|
|
||||||
while (i.hasNext()) {
|
while (i.hasNext()) {
|
||||||
QRegularExpressionMatch match = i.next();
|
QRegularExpressionMatch match = i.next();
|
||||||
auto captured_url = base_url.isValid() ? base_url.resolved(QUrl(match.captured(1))) : QUrl(match.captured(1));
|
auto captured_url = QUrl(match.captured(1));
|
||||||
|
auto resolved_captured_url =
|
||||||
|
(base_url.isValid() && captured_url.isRelative()) ? base_url.resolved(captured_url) : captured_url;
|
||||||
|
|
||||||
if (!found_resources.contains(captured_url)) {
|
if (!found_resources.contains(resolved_captured_url)) {
|
||||||
found_resources.append(captured_url);
|
found_resources.append(resolved_captured_url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -462,6 +464,34 @@ void TextBrowserViewer::setHtml(const QString& html, const QUrl& base_url) {
|
|||||||
|
|
||||||
setHtmlPrivate(html, base_url);
|
setHtmlPrivate(html, base_url);
|
||||||
|
|
||||||
|
QTextCursor cr(m_document.data());
|
||||||
|
|
||||||
|
cr.movePosition(QTextCursor::MoveOperation::Start);
|
||||||
|
|
||||||
|
/*
|
||||||
|
// this can be used instead of regexps, just browse document and collect resource addresses directly
|
||||||
|
while (!cr.atEnd()) {
|
||||||
|
if (!cr.movePosition(QTextCursor::MoveOperation::NextBlock)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTextBlock::iterator it;
|
||||||
|
for (it = cr.block().begin(); !(it.atEnd()); ++it) {
|
||||||
|
QTextFragment currentFragment = it.fragment();
|
||||||
|
if (currentFragment.isValid()) {
|
||||||
|
auto aa = currentFragment.charFormat().anchorHref();
|
||||||
|
|
||||||
|
if (!aa.isEmpty()) {
|
||||||
|
auto xx = 5;
|
||||||
|
}
|
||||||
|
else if (currentFragment.charFormat().isImageFormat()) {
|
||||||
|
aa = currentFragment.charFormat().toImageFormat().name();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if (!m_neededResources.isEmpty()) {
|
if (!m_neededResources.isEmpty()) {
|
||||||
QTimer::singleShot(20, this, &TextBrowserViewer::reloadHtmlDelayed);
|
QTimer::singleShot(20, this, &TextBrowserViewer::reloadHtmlDelayed);
|
||||||
}
|
}
|
||||||
@ -511,7 +541,7 @@ void TextBrowserViewer::downloadNextNeededResource() {
|
|||||||
else {
|
else {
|
||||||
QUrl res = m_neededResources.takeFirst();
|
QUrl res = m_neededResources.takeFirst();
|
||||||
|
|
||||||
m_resourceDownloader.data()->manipulateData(res.toString(),
|
m_resourceDownloader.data()->manipulateData(qApp->web()->unescapeHtml(res.toString()),
|
||||||
QNetworkAccessManager::Operation::GetOperation,
|
QNetworkAccessManager::Operation::GetOperation,
|
||||||
{},
|
{},
|
||||||
5000);
|
5000);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user