From c713b02b1355b8b0a247d7b15e58900d15f5218b Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Thu, 7 Apr 2022 10:30:07 +0200 Subject: [PATCH] fix 679 --- .../qlitehtml/container_qpainter.cpp | 19 ++++++++++++++++--- src/librssguard/gui/dialogs/formmain.cpp | 4 +++- src/librssguard/gui/dialogs/formmain.ui | 2 +- src/librssguard/gui/systemtrayicon.cpp | 6 +++--- .../webviewers/litehtml/litehtmlviewer.cpp | 11 +++++++++-- 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/librssguard/3rd-party/qlitehtml/container_qpainter.cpp b/src/librssguard/3rd-party/qlitehtml/container_qpainter.cpp index ab11ce7a8..31647e0b9 100644 --- a/src/librssguard/3rd-party/qlitehtml/container_qpainter.cpp +++ b/src/librssguard/3rd-party/qlitehtml/container_qpainter.cpp @@ -619,9 +619,22 @@ void DocumentContainerPrivate::load_image(const litehtml::tchar_t *src, if (m_pixmaps.contains(url)) return; - QPixmap pixmap; - pixmap.loadFromData(m_dataCallback(url)); - m_pixmaps.insert(url, pixmap); + if (qtSrc.startsWith(QStringLiteral("data:image/"))) { + // We have Base64 image embedded directly in HTML. + const QStringList splitSrc = qtSrc.split(','); + + if (splitSrc.size() == 2) { + QPixmap pixmap; + + pixmap.loadFromData(QByteArray::fromBase64(splitSrc.at(1).toLocal8Bit())); + m_pixmaps.insert(url, pixmap); + } + } + else { + QPixmap pixmap; + pixmap.loadFromData(m_dataCallback(url)); + m_pixmaps.insert(url, pixmap); + } } void DocumentContainerPrivate::get_image_size(const litehtml::tchar_t *src, diff --git a/src/librssguard/gui/dialogs/formmain.cpp b/src/librssguard/gui/dialogs/formmain.cpp index 8c819ff5e..00a1285ec 100644 --- a/src/librssguard/gui/dialogs/formmain.cpp +++ b/src/librssguard/gui/dialogs/formmain.cpp @@ -251,6 +251,8 @@ void FormMain::prepareMenus() { m_trayMenu->addAction(m_ui->m_actionUpdateAllItems); m_trayMenu->addAction(m_ui->m_actionMarkAllItemsRead); m_trayMenu->addSeparator(); + + m_trayMenu->addAction(m_ui->m_actionSwitchMainWindow); m_trayMenu->addAction(m_ui->m_actionSettings); m_trayMenu->addAction(m_ui->m_actionQuit); @@ -501,7 +503,7 @@ void FormMain::updateFeedButtonsAvailability() { } void FormMain::switchVisibility(bool force_hide) { - if (force_hide || isVisible()) { + if (force_hide || (isVisible() && !isMinimized())) { if (SystemTrayIcon::isSystemTrayDesired() && SystemTrayIcon::isSystemTrayAreaAvailable()) { if (QApplication::activeModalWidget() != nullptr) { diff --git a/src/librssguard/gui/dialogs/formmain.ui b/src/librssguard/gui/dialogs/formmain.ui index 61f646c69..1165fe081 100644 --- a/src/librssguard/gui/dialogs/formmain.ui +++ b/src/librssguard/gui/dialogs/formmain.ui @@ -436,7 +436,7 @@ false - Minimize (or hide) main window + Switch main window visibility Hides main window if it is visible and shows it if it is hidden. diff --git a/src/librssguard/gui/systemtrayicon.cpp b/src/librssguard/gui/systemtrayicon.cpp index dd86db59a..b2be06235 100644 --- a/src/librssguard/gui/systemtrayicon.cpp +++ b/src/librssguard/gui/systemtrayicon.cpp @@ -50,9 +50,9 @@ SystemTrayIcon::~SystemTrayIcon() { void SystemTrayIcon::onActivated(QSystemTrayIcon::ActivationReason reason) { switch (reason) { - case SystemTrayIcon::Trigger: - case SystemTrayIcon::DoubleClick: - case SystemTrayIcon::MiddleClick: + case SystemTrayIcon::ActivationReason::Trigger: + case SystemTrayIcon::ActivationReason::DoubleClick: + case SystemTrayIcon::ActivationReason::MiddleClick: static_cast(parent())->switchVisibility(); break; diff --git a/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.cpp b/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.cpp index 1c81e64d9..9f980c259 100644 --- a/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.cpp +++ b/src/librssguard/gui/webviewers/litehtml/litehtmlviewer.cpp @@ -85,14 +85,21 @@ void LiteHtmlViewer::setUrl(const QUrl& url) { loop.exec(); - auto net_error = m_downloader->lastOutputError(); + const auto net_error = m_downloader->lastOutputError(); + const QString content_type = m_downloader->lastContentType().toString(); if (net_error != QNetworkReply::NetworkError::NoError) { is_error = true; html_str = "Error!"; } else { - html_str = QString::fromUtf8(m_downloader->lastOutputData()); + if (content_type.startsWith(QSL("image/"))) { + html_str = + ""; + } + else { + html_str = QString::fromUtf8(m_downloader->lastOutputData()); + } } }