From daf0ca46367c951964563db5b771adc1517b4a17 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Thu, 11 May 2023 09:01:25 +0200 Subject: [PATCH] fix #953 and some missing icon --- src/librssguard/gui/dialogs/formmain.cpp | 2 +- src/librssguard/gui/tabwidget.cpp | 2 +- src/librssguard/gui/toolbars/statusbar.cpp | 30 +++++++++++-------- .../standard/gui/standardfeeddetails.cpp | 3 +- src/rssguard/CMakeLists.txt | 6 ++++ src/rssguard/main.cpp | 16 ++++++++++ 6 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/librssguard/gui/dialogs/formmain.cpp b/src/librssguard/gui/dialogs/formmain.cpp index d7fc7ca71..c94266a0d 100644 --- a/src/librssguard/gui/dialogs/formmain.cpp +++ b/src/librssguard/gui/dialogs/formmain.cpp @@ -554,7 +554,7 @@ void FormMain::setupIcons() { IconFactory* icon_theme_factory = qApp->icons(); // Setup icons of this main window. - m_ui->m_actionDownloadManager->setIcon(icon_theme_factory->fromTheme(QSL("emblem-downloads"))); + m_ui->m_actionDownloadManager->setIcon(icon_theme_factory->fromTheme(QSL("emblem-downloads"), QSL("download"))); m_ui->m_actionSettings->setIcon(icon_theme_factory->fromTheme(QSL("emblem-system"), QSL("applications-system"))); m_ui->m_actionQuit->setIcon(icon_theme_factory->fromTheme(QSL("application-exit"))); m_ui->m_actionRestart->setIcon(icon_theme_factory->fromTheme(QSL("view-refresh"))); diff --git a/src/librssguard/gui/tabwidget.cpp b/src/librssguard/gui/tabwidget.cpp index ed2db71c4..3512ada7b 100644 --- a/src/librssguard/gui/tabwidget.cpp +++ b/src/librssguard/gui/tabwidget.cpp @@ -74,7 +74,7 @@ void TabWidget::showDownloadManager() { // Download manager is not opened. Create tab with it. qApp->downloadManager()->setParent(this); addTab(qApp->downloadManager(), - qApp->icons()->fromTheme(QSL("emblem-downloads")), + qApp->icons()->fromTheme(QSL("emblem-downloads"), QSL("download")), tr("Downloads"), TabBar::TabType::DownloadManager); setCurrentIndex(count() - 1); diff --git a/src/librssguard/gui/toolbars/statusbar.cpp b/src/librssguard/gui/toolbars/statusbar.cpp index 1dbcd8f81..899478792 100644 --- a/src/librssguard/gui/toolbars/statusbar.cpp +++ b/src/librssguard/gui/toolbars/statusbar.cpp @@ -22,7 +22,8 @@ StatusBar::StatusBar(QWidget* parent) : QStatusBar(parent) { m_barProgressFeeds->setVisible(false); m_barProgressFeeds->setObjectName(QSL("m_barProgressFeeds")); - m_barProgressFeedsAction = new QAction(qApp->icons()->fromTheme(QSL("application-rss+xml")), tr("Feed update progress bar"), this); + m_barProgressFeedsAction = + new QAction(qApp->icons()->fromTheme(QSL("application-rss+xml")), tr("Feed update progress bar"), this); m_barProgressFeedsAction->setObjectName(QSL("m_barProgressFeedsAction")); m_barProgressDownload = new ProgressBarWithText(this); @@ -31,7 +32,9 @@ StatusBar::StatusBar(QWidget* parent) : QStatusBar(parent) { m_barProgressDownload->setVisible(false); m_barProgressDownload->setObjectName(QSL("m_barProgressDownload")); - m_barProgressDownloadAction = new QAction(qApp->icons()->fromTheme(QSL("emblem-downloads")), tr("File download progress bar"), this); + m_barProgressDownloadAction = new QAction(qApp->icons()->fromTheme(QSL("emblem-downloads"), QSL("download")), + tr("File download progress bar"), + this); m_barProgressDownloadAction->setObjectName(QSL("m_barProgressDownloadAction")); m_barProgressDownload->installEventFilter(this); @@ -46,8 +49,7 @@ QList StatusBar::availableActions() const { QList actions = qApp->userActions(); // Now, add placeholder actions for custom stuff. - actions << m_barProgressDownloadAction - << m_barProgressFeedsAction; + actions << m_barProgressDownloadAction << m_barProgressFeedsAction; return actions; } @@ -62,21 +64,24 @@ void StatusBar::saveAndSetActions(const QStringList& actions) { } QStringList StatusBar::defaultActions() const { - return QString(GUI::StatusbarActionsDef).split(',', + return QString(GUI::StatusbarActionsDef) + .split(',', #if QT_VERSION >= 0x050F00 // Qt >= 5.15.0 - Qt::SplitBehaviorFlags::SkipEmptyParts); + Qt::SplitBehaviorFlags::SkipEmptyParts); #else - QString::SplitBehavior::SkipEmptyParts); + QString::SplitBehavior::SkipEmptyParts); #endif } QStringList StatusBar::savedActions() const { - return qApp->settings()->value(GROUP(GUI), - SETTING(GUI::StatusbarActions)).toString().split(',', + return qApp->settings() + ->value(GROUP(GUI), SETTING(GUI::StatusbarActions)) + .toString() + .split(',', #if QT_VERSION >= 0x050F00 // Qt >= 5.15.0 - Qt::SplitBehaviorFlags::SkipEmptyParts); + Qt::SplitBehaviorFlags::SkipEmptyParts); #else - QString::SplitBehavior::SkipEmptyParts); + QString::SplitBehavior::SkipEmptyParts); #endif } @@ -174,7 +179,8 @@ bool StatusBar::eventFilter(QObject* watched, QEvent* event) { void StatusBar::clear() { while (!actions().isEmpty()) { QAction* act = actions().at(0); - QWidget* widget = act->property("widget").isValid() ? static_cast(act->property("widget").value()) : nullptr; + QWidget* widget = + act->property("widget").isValid() ? static_cast(act->property("widget").value()) : nullptr; if (widget != nullptr) { removeWidget(widget); diff --git a/src/librssguard/services/standard/gui/standardfeeddetails.cpp b/src/librssguard/services/standard/gui/standardfeeddetails.cpp index 3d232ceec..47fff1977 100644 --- a/src/librssguard/services/standard/gui/standardfeeddetails.cpp +++ b/src/librssguard/services/standard/gui/standardfeeddetails.cpp @@ -74,7 +74,8 @@ StandardFeedDetails::StandardFeedDetails(QWidget* parent) : QWidget(parent) { new QAction(qApp->icons()->fromTheme(QSL("image-x-generic")), tr("Load icon from file..."), this); m_actionUseDefaultIcon = new QAction(qApp->icons()->fromTheme(QSL("application-rss+xml")), tr("Use default icon from icon theme"), this); - m_actionFetchIcon = new QAction(qApp->icons()->fromTheme(QSL("emblem-downloads")), tr("Fetch icon from feed"), this); + m_actionFetchIcon = + new QAction(qApp->icons()->fromTheme(QSL("emblem-downloads"), QSL("download")), tr("Fetch icon from feed"), this); m_iconMenu->addAction(m_actionFetchIcon); m_iconMenu->addAction(m_actionLoadIconFromFile); m_iconMenu->addAction(m_actionUseDefaultIcon); diff --git a/src/rssguard/CMakeLists.txt b/src/rssguard/CMakeLists.txt index 7af935acd..7a0383823 100644 --- a/src/rssguard/CMakeLists.txt +++ b/src/rssguard/CMakeLists.txt @@ -28,6 +28,12 @@ if(QT_VERSION_MAJOR EQUAL 6) target_link_libraries(app PUBLIC Qt${QT_VERSION_MAJOR}::Core5Compat ) + + if(WIN32) + target_link_libraries(app PUBLIC + Qt${QT_VERSION_MAJOR}::GuiPrivate + ) + endif() endif() if(APPLE) diff --git a/src/rssguard/main.cpp b/src/rssguard/main.cpp index bc0cb642c..cf84535e5 100644 --- a/src/rssguard/main.cpp +++ b/src/rssguard/main.cpp @@ -11,6 +11,9 @@ #if defined(Q_OS_WIN) #if QT_VERSION_MAJOR == 5 #include +#else +#include +#include #endif #endif @@ -94,6 +97,9 @@ int main(int argc, char* argv[]) { #if defined(Q_OS_WIN) #if QT_VERSION_MAJOR == 5 + QWindowsWindowFunctions::setHasBorderInFullScreenDefault(true); + + // NOTE: https://github.com/martinrotter/rssguard/issues/953 for Qt 5. QWindowsWindowFunctions::setWindowActivationBehavior(QWindowsWindowFunctions::AlwaysActivateWindow); #endif #endif @@ -114,5 +120,15 @@ int main(int argc, char* argv[]) { qApp ->parseCmdArgumentsFromOtherInstance(qApp->cmdParser()->positionalArguments().join(QSL(ARGUMENTS_LIST_SEPARATOR))); +#if defined(Q_OS_WIN) +#if QT_VERSION_MAJOR == 6 + // NOTE: Fixes https://github.com/martinrotter/rssguard/issues/953 for Qt 6. + using QWindowsWindow = QNativeInterface::Private::QWindowsWindow; + if (auto w_w = main_window.windowHandle()->nativeInterface()) { + w_w->setHasBorderInFullScreen(true); + } +#endif +#endif + return Application::exec(); }