mirror of
https://github.com/JakubMelka/PDF4QT.git
synced 2025-01-03 03:50:53 +01:00
Issue #200: Icons under dark theme on Arch/KDE is broken
This commit is contained in:
parent
4359109157
commit
b0e5c3001b
@ -18,6 +18,7 @@
|
||||
#include "pdfeditormainwindow.h"
|
||||
#include "pdfconstants.h"
|
||||
#include "pdfsecurityhandler.h"
|
||||
#include "pdfwidgetutils.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QCommandLineParser>
|
||||
@ -39,10 +40,14 @@ int main(int argc, char *argv[])
|
||||
QApplication::setApplicationDisplayName(QApplication::translate("Application", "PDF4QT Editor"));
|
||||
|
||||
QCommandLineOption noDrm("no-drm", "Disable DRM settings of documents.");
|
||||
QCommandLineOption lightGui("theme-light", "Use a light theme for the GUI.");
|
||||
QCommandLineOption darkGui("theme-dark", "Use a dark theme for the GUI.");
|
||||
|
||||
QCommandLineParser parser;
|
||||
parser.setApplicationDescription(QCoreApplication::applicationName());
|
||||
parser.addOption(noDrm);
|
||||
parser.addOption(lightGui);
|
||||
parser.addOption(darkGui);
|
||||
parser.addHelpOption();
|
||||
parser.addVersionOption();
|
||||
parser.addPositionalArgument("file", "The PDF file to open.");
|
||||
@ -53,6 +58,16 @@ int main(int argc, char *argv[])
|
||||
pdf::PDFSecurityHandler::setNoDRMMode();
|
||||
}
|
||||
|
||||
if (parser.isSet(lightGui))
|
||||
{
|
||||
pdf::PDFWidgetUtils::setDarkTheme(false);
|
||||
}
|
||||
|
||||
if (parser.isSet(darkGui))
|
||||
{
|
||||
pdf::PDFWidgetUtils::setDarkTheme(true);
|
||||
}
|
||||
|
||||
QIcon appIcon(":/app-icon.svg");
|
||||
QApplication::setWindowIcon(appIcon);
|
||||
|
||||
|
@ -46,8 +46,6 @@ int qt_default_dpi_y() { return 96; }
|
||||
namespace pdf
|
||||
{
|
||||
|
||||
std::optional<bool> s_isDarkThemeOverride;
|
||||
|
||||
static constexpr bool isScalingNeeded()
|
||||
{
|
||||
return QT_VERSION_MAJOR < 6;
|
||||
@ -176,18 +174,13 @@ void PDFWidgetUtils::style(QWidget* widget)
|
||||
}
|
||||
}
|
||||
|
||||
void PDFWidgetUtils::overrideDarkTheme(bool isDarkTheme)
|
||||
void PDFWidgetUtils::setDarkTheme(bool isDarkTheme)
|
||||
{
|
||||
s_isDarkThemeOverride = isDarkTheme;
|
||||
QApplication::styleHints()->setColorScheme(isDarkTheme ? Qt::ColorScheme::Dark : Qt::ColorScheme::Light);
|
||||
}
|
||||
|
||||
bool PDFWidgetUtils::isDarkTheme()
|
||||
{
|
||||
if (s_isDarkThemeOverride.has_value())
|
||||
{
|
||||
return s_isDarkThemeOverride.value();
|
||||
}
|
||||
|
||||
Qt::ColorScheme colorScheme = QApplication::styleHints()->colorScheme();
|
||||
return colorScheme == Qt::ColorScheme::Dark;
|
||||
}
|
||||
|
@ -61,7 +61,7 @@ public:
|
||||
static void style(QWidget* widget);
|
||||
|
||||
/// Overrides automatically detected dark theme / light theme settings
|
||||
static void overrideDarkTheme(bool isDarkTheme);
|
||||
static void setDarkTheme(bool isDarkTheme);
|
||||
|
||||
/// Returns true if the dark theme is currently set for the application.
|
||||
static bool isDarkTheme();
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "pdfviewermainwindow.h"
|
||||
#include "pdfconstants.h"
|
||||
#include "pdfsecurityhandler.h"
|
||||
#include "pdfwidgetutils.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QCommandLineParser>
|
||||
@ -33,10 +34,14 @@ int main(int argc, char *argv[])
|
||||
QApplication::setApplicationDisplayName(QApplication::translate("Application", "PDF4QT Viewer"));
|
||||
|
||||
QCommandLineOption noDrm("no-drm", "Disable DRM settings of documents.");
|
||||
QCommandLineOption lightGui("theme-light", "Use a light theme for the GUI.");
|
||||
QCommandLineOption darkGui("theme-dark", "Use a dark theme for the GUI.");
|
||||
|
||||
QCommandLineParser parser;
|
||||
parser.setApplicationDescription(QCoreApplication::applicationName());
|
||||
parser.addOption(noDrm);
|
||||
parser.addOption(lightGui);
|
||||
parser.addOption(darkGui);
|
||||
parser.addHelpOption();
|
||||
parser.addVersionOption();
|
||||
parser.addPositionalArgument("file", "The PDF file to open.");
|
||||
@ -47,6 +52,16 @@ int main(int argc, char *argv[])
|
||||
pdf::PDFSecurityHandler::setNoDRMMode();
|
||||
}
|
||||
|
||||
if (parser.isSet(lightGui))
|
||||
{
|
||||
pdf::PDFWidgetUtils::setDarkTheme(false);
|
||||
}
|
||||
|
||||
if (parser.isSet(darkGui))
|
||||
{
|
||||
pdf::PDFWidgetUtils::setDarkTheme(true);
|
||||
}
|
||||
|
||||
QIcon appIcon(":/app-icon.svg");
|
||||
QApplication::setWindowIcon(appIcon);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user