From 45e163ecba4ed4a092eeff23fe7a1d00cafce9a0 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Tue, 26 May 2020 09:58:07 +0200 Subject: [PATCH] Fix network manager destructor exception. --- src/librssguard/gui/settings/settingsbrowsermail.cpp | 3 ++- src/librssguard/gui/webviewer.cpp | 2 ++ src/librssguard/miscellaneous/application.cpp | 2 +- src/librssguard/network-web/downloadmanager.cpp | 5 ++--- src/librssguard/network-web/downloadmanager.h | 10 ++++++++-- .../network-web/silentnetworkaccessmanager.cpp | 6 ------ .../network-web/silentnetworkaccessmanager.h | 3 --- src/librssguard/services/standard/rssparser.cpp | 3 +++ 8 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/librssguard/gui/settings/settingsbrowsermail.cpp b/src/librssguard/gui/settings/settingsbrowsermail.cpp index 568190e48..738ad5bdf 100644 --- a/src/librssguard/gui/settings/settingsbrowsermail.cpp +++ b/src/librssguard/gui/settings/settingsbrowsermail.cpp @@ -228,7 +228,8 @@ void SettingsBrowserMail::saveSettings() { qApp->web()->updateProxy(); // Reload settings for all network access managers. - SilentNetworkAccessManager::instance()->loadSettings(); + qApp->downloadManager()->networkManager()->loadSettings(); + onEndSaveSettings(); } diff --git a/src/librssguard/gui/webviewer.cpp b/src/librssguard/gui/webviewer.cpp index ef76e1e74..ac3478ad4 100644 --- a/src/librssguard/gui/webviewer.cpp +++ b/src/librssguard/gui/webviewer.cpp @@ -144,6 +144,8 @@ void WebViewer::loadMessages(const QList& messages, RootItem* root) { setEnabled(false); displayMessage(); setEnabled(previously_enabled); + + page()->runJavaScript(QSL("window.scrollTo(0, 0);")); } void WebViewer::clear() { diff --git a/src/librssguard/miscellaneous/application.cpp b/src/librssguard/miscellaneous/application.cpp index a4330bf34..ad9066e56 100755 --- a/src/librssguard/miscellaneous/application.cpp +++ b/src/librssguard/miscellaneous/application.cpp @@ -69,7 +69,7 @@ Application::Application(const QString& id, int& argc, char** argv) connect(this, &Application::saveStateRequest, this, &Application::onSaveState); #if defined(USE_WEBENGINE) - QWebEngineUrlScheme url_scheme(APP_LOW_NAME); + QWebEngineUrlScheme url_scheme(QByteArray(APP_LOW_NAME)); url_scheme.setDefaultPort(QWebEngineUrlScheme::SpecialPort::PortUnspecified); url_scheme.setSyntax(QWebEngineUrlScheme::Syntax::Host); diff --git a/src/librssguard/network-web/downloadmanager.cpp b/src/librssguard/network-web/downloadmanager.cpp index c45d7ab65..84e24dfbc 100644 --- a/src/librssguard/network-web/downloadmanager.cpp +++ b/src/librssguard/network-web/downloadmanager.cpp @@ -421,7 +421,7 @@ void DownloadItem::updateInfoAndUrlLabel() { DownloadManager::DownloadManager(QWidget* parent) : TabContent(parent), m_ui(new Ui::DownloadManager), m_autoSaver(new AutoSaver(this)), m_model(new DownloadModel(this)), - m_networkManager(SilentNetworkAccessManager::instance()), m_iconProvider(nullptr), m_removePolicy(Never) { + m_networkManager(new SilentNetworkAccessManager(this)), m_iconProvider(nullptr), m_removePolicy(Never) { m_ui->setupUi(this); m_ui->m_viewDownloads->setShowGrid(false); m_ui->m_viewDownloads->verticalHeader()->hide(); @@ -524,7 +524,7 @@ void DownloadManager::addItem(DownloadItem* item) { updateRow(item); } -QNetworkAccessManager* DownloadManager::networkManager() const { +SilentNetworkAccessManager* DownloadManager::networkManager() const { return m_networkManager; } @@ -785,7 +785,6 @@ Qt::ItemFlags DownloadModel::flags(const QModelIndex& index) const { QMimeData* DownloadModel::mimeData(const QModelIndexList& indexes) const { auto* mimeData = new QMimeData(); - QList urls; foreach (const QModelIndex& index, indexes) { diff --git a/src/librssguard/network-web/downloadmanager.h b/src/librssguard/network-web/downloadmanager.h index 28def92cb..827eb615d 100644 --- a/src/librssguard/network-web/downloadmanager.h +++ b/src/librssguard/network-web/downloadmanager.h @@ -14,8 +14,11 @@ #include class AutoSaver; + class DownloadModel; + class QFileIconProvider; + class QMimeData; class DownloadItem : public QWidget { @@ -78,9 +81,12 @@ class DownloadItem : public QWidget { }; #if defined(USE_WEBENGINE) + class WebBrowser; #endif +class SilentNetworkAccessManager; + class DownloadManager : public TabContent { Q_OBJECT Q_PROPERTY(RemovePolicy removePolicy READ removePolicy WRITE setRemovePolicy NOTIFY removePolicyChanged) @@ -105,7 +111,7 @@ class DownloadManager : public TabContent { } #endif - QNetworkAccessManager* networkManager() const; + SilentNetworkAccessManager* networkManager() const; int totalDownloads() const; int activeDownloads() const; @@ -146,7 +152,7 @@ class DownloadManager : public TabContent { QScopedPointer m_ui; AutoSaver* m_autoSaver; DownloadModel* m_model; - QNetworkAccessManager* m_networkManager; + SilentNetworkAccessManager* m_networkManager; QScopedPointer m_iconProvider; QList m_downloads; diff --git a/src/librssguard/network-web/silentnetworkaccessmanager.cpp b/src/librssguard/network-web/silentnetworkaccessmanager.cpp index cd8f79233..a135e2bef 100644 --- a/src/librssguard/network-web/silentnetworkaccessmanager.cpp +++ b/src/librssguard/network-web/silentnetworkaccessmanager.cpp @@ -7,8 +7,6 @@ #include #include -Q_GLOBAL_STATIC(SilentNetworkAccessManager, qz_silent_acmanager) - SilentNetworkAccessManager::SilentNetworkAccessManager(QObject* parent) : BaseNetworkAccessManager(parent) { connect(this, &SilentNetworkAccessManager::authenticationRequired, @@ -19,10 +17,6 @@ SilentNetworkAccessManager::~SilentNetworkAccessManager() { qDebug("Destroying SilentNetworkAccessManager instance."); } -SilentNetworkAccessManager* SilentNetworkAccessManager::instance() { - return qz_silent_acmanager(); -} - void SilentNetworkAccessManager::onAuthenticationRequired(QNetworkReply* reply, QAuthenticator* authenticator) { if (reply->property("protected").toBool()) { // This feed contains authentication information, it is good. diff --git a/src/librssguard/network-web/silentnetworkaccessmanager.h b/src/librssguard/network-web/silentnetworkaccessmanager.h index ba51c47a5..1837d7100 100644 --- a/src/librssguard/network-web/silentnetworkaccessmanager.h +++ b/src/librssguard/network-web/silentnetworkaccessmanager.h @@ -18,9 +18,6 @@ class SilentNetworkAccessManager : public BaseNetworkAccessManager { explicit SilentNetworkAccessManager(QObject* parent = nullptr); virtual ~SilentNetworkAccessManager(); - // Returns pointer to global silent network manager - static SilentNetworkAccessManager* instance(); - public slots: // This cannot do any GUI stuff. diff --git a/src/librssguard/services/standard/rssparser.cpp b/src/librssguard/services/standard/rssparser.cpp index 3bda19113..95ea1eaed 100644 --- a/src/librssguard/services/standard/rssparser.cpp +++ b/src/librssguard/services/standard/rssparser.cpp @@ -60,6 +60,9 @@ Message RssParser::extractMessage(const QDomElement& msg_element, QDateTime curr new_message.m_enclosures.append(Enclosure(elem_enclosure, elem_enclosure_type)); qDebug("Found enclosure '%s' for the message.", qPrintable(elem_enclosure)); } + else { + new_message.m_enclosures.append(mrssGetEnclosures(msg_element)); + } // Deal with link and author. new_message.m_url = msg_element.namedItem(QSL("link")).toElement().text();