201 lines
8.3 KiB
Diff
201 lines
8.3 KiB
Diff
|
diff -ur original/CMakeLists.txt patched/CMakeLists.txt
|
||
|
--- original/CMakeLists.txt 2021-10-01 11:20:38.000000000 -0700
|
||
|
+++ patched/CMakeLists.txt 2022-04-01 02:08:48.808150703 -0700
|
||
|
@@ -24,8 +24,11 @@
|
||
|
|
||
|
ADD_DEFINITIONS(-DQT_DISABLE_DEPRECATED_BEFORE=0x050C00 -DUSE_WIDGETS)
|
||
|
|
||
|
-find_package(Qt5 ${QT_MINIMUM_VERSION} COMPONENTS Widgets Concurrent LinguistTools DBus ThemeSupport REQUIRED)
|
||
|
+find_package(Qt5 ${QT_MINIMUM_VERSION} COMPONENTS Widgets Concurrent LinguistTools DBus QuickControls2 ThemeSupport REQUIRED)
|
||
|
find_package(Qt5Gui ${QT_MINIMUM_VERSION} CONFIG REQUIRED Private)
|
||
|
+find_package(KF5Config REQUIRED)
|
||
|
+find_package(KF5ConfigWidgets REQUIRED)
|
||
|
+find_package(KF5IconThemes REQUIRED)
|
||
|
|
||
|
get_target_property(QT_LRELEASE_EXECUTABLE Qt5::lrelease IMPORTED_LOCATION)
|
||
|
|
||
|
@@ -44,7 +47,9 @@
|
||
|
message(FATAL_ERROR "Could NOT find qtpaths executable")
|
||
|
endif()
|
||
|
|
||
|
-execute_process(COMMAND ${QT_QTPATHS_EXECUTABLE} --plugin-dir OUTPUT_VARIABLE PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||
|
+if(NOT PLUGINDIR)
|
||
|
+ execute_process(COMMAND ${QT_QTPATHS_EXECUTABLE} --plugin-dir OUTPUT_VARIABLE PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||
|
+endif()
|
||
|
message(STATUS "Plugin path: " ${PLUGINDIR})
|
||
|
|
||
|
message(STATUS "Generating translations ...")
|
||
|
diff -ur original/src/qt5ct/appearancepage.cpp patched/src/qt5ct/appearancepage.cpp
|
||
|
--- original/src/qt5ct/appearancepage.cpp 2021-10-01 11:20:38.000000000 -0700
|
||
|
+++ patched/src/qt5ct/appearancepage.cpp 2022-04-01 02:08:48.809150748 -0700
|
||
|
@@ -86,6 +86,8 @@
|
||
|
#else
|
||
|
keys = QPlatformThemeFactory::keys();
|
||
|
m_ui->dialogComboBox->addItem(tr("Default"), "default");
|
||
|
+ if(keys.contains("xdgdesktopportal"))
|
||
|
+ m_ui->dialogComboBox->addItem("XDG Desktop Portal", "xdgdesktopportal");
|
||
|
if(keys.contains("gtk2") || keys.contains("qt5gtk2"))
|
||
|
m_ui->dialogComboBox->addItem("GTK2", "gtk2");
|
||
|
else if(keys.contains("gtk3") || keys.contains("qt5gtk3"))
|
||
|
@@ -390,7 +392,7 @@
|
||
|
{
|
||
|
QDir dir(path);
|
||
|
dir.setFilter(QDir::Files);
|
||
|
- dir.setNameFilters(QStringList() << "*.conf");
|
||
|
+ dir.setNameFilters(QStringList() << "*.conf" << "*.colors");
|
||
|
|
||
|
for(QFileInfo info : dir.entryInfoList())
|
||
|
{
|
||
|
diff -ur original/src/qt5ct/qt5ct.cpp patched/src/qt5ct/qt5ct.cpp
|
||
|
--- original/src/qt5ct/qt5ct.cpp 2021-10-01 11:20:38.000000000 -0700
|
||
|
+++ patched/src/qt5ct/qt5ct.cpp 2022-04-01 02:08:48.809150748 -0700
|
||
|
@@ -111,6 +111,7 @@
|
||
|
for(const QString &p : QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation))
|
||
|
{
|
||
|
paths << (p + QLatin1String("/qt5ct/colors"));
|
||
|
+ paths << (p + QLatin1String("/color-schemes"));
|
||
|
}
|
||
|
paths << QLatin1String(QT5CT_DATADIR"/qt5ct/colors");
|
||
|
paths.removeDuplicates();
|
||
|
diff -ur original/src/qt5ct-qtplugin/CMakeLists.txt patched/src/qt5ct-qtplugin/CMakeLists.txt
|
||
|
--- original/src/qt5ct-qtplugin/CMakeLists.txt 2021-10-01 11:20:38.000000000 -0700
|
||
|
+++ patched/src/qt5ct-qtplugin/CMakeLists.txt 2022-04-01 02:08:48.812150883 -0700
|
||
|
@@ -10,5 +10,5 @@
|
||
|
|
||
|
add_library(qt5ct-qtplugin MODULE ${app_SRCS})
|
||
|
set_target_properties(qt5ct-qtplugin PROPERTIES OUTPUT_NAME qt5ct)
|
||
|
-target_link_libraries(qt5ct-qtplugin PRIVATE Qt5::Widgets Qt5::GuiPrivate Qt5::DBus Qt5::ThemeSupportPrivate)
|
||
|
+target_link_libraries(qt5ct-qtplugin PRIVATE Qt5::Widgets Qt5::GuiPrivate Qt5::DBus Qt5::QuickControls2 Qt5::ThemeSupportPrivate KF5::ConfigCore KF5::ConfigWidgets KF5::IconThemes)
|
||
|
install(TARGETS qt5ct-qtplugin DESTINATION ${PLUGINDIR}/platformthemes)
|
||
|
diff -ur original/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp patched/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp
|
||
|
--- original/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp 2021-10-01 11:20:38.000000000 -0700
|
||
|
+++ patched/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp 2022-04-01 02:08:48.812150883 -0700
|
||
|
@@ -45,6 +45,7 @@
|
||
|
#endif
|
||
|
#include <QFile>
|
||
|
#include <QFileSystemWatcher>
|
||
|
+#include <QQuickStyle>
|
||
|
|
||
|
#include <qt5ct/qt5ct.h>
|
||
|
#include "qt5ctplatformtheme.h"
|
||
|
@@ -60,6 +61,11 @@
|
||
|
#include <qpa/qplatformthemefactory_p.h>
|
||
|
#endif
|
||
|
|
||
|
+#include <ksharedconfig.h>
|
||
|
+#include <kcolorscheme.h>
|
||
|
+#include <kiconengine.h>
|
||
|
+#include <kiconloader.h>
|
||
|
+
|
||
|
Q_LOGGING_CATEGORY(lqt5ct, "qt5ct", QtWarningMsg)
|
||
|
|
||
|
//QT_QPA_PLATFORMTHEME=qt5ct
|
||
|
@@ -75,12 +81,17 @@
|
||
|
QMetaObject::invokeMethod(this, "createFSWatcher", Qt::QueuedConnection);
|
||
|
#endif
|
||
|
QGuiApplication::setFont(m_generalFont);
|
||
|
+ //if the user has explicitly set something else, don't meddle
|
||
|
+ if (QQuickStyle::name().isEmpty()) {
|
||
|
+ QQuickStyle::setStyle(QLatin1String("org.kde.desktop"));
|
||
|
+ }
|
||
|
}
|
||
|
qCDebug(lqt5ct) << "using qt5ct plugin";
|
||
|
#ifdef QT_WIDGETS_LIB
|
||
|
if(!QStyleFactory::keys().contains("qt5ct-style"))
|
||
|
qCCritical(lqt5ct) << "unable to find qt5ct proxy style";
|
||
|
#endif
|
||
|
+ QCoreApplication::instance()->installEventFilter(this);
|
||
|
}
|
||
|
|
||
|
Qt5CTPlatformTheme::~Qt5CTPlatformTheme()
|
||
|
@@ -195,6 +206,11 @@
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
+QIconEngine *Qt5CTPlatformTheme::createIconEngine(const QString &iconName) const
|
||
|
+{
|
||
|
+ return new KIconEngine(iconName, KIconLoader::global());
|
||
|
+}
|
||
|
+
|
||
|
void Qt5CTPlatformTheme::applySettings()
|
||
|
{
|
||
|
if(!QGuiApplication::desktopSettingsAware() || m_isIgnored)
|
||
|
@@ -313,7 +329,15 @@
|
||
|
if(!schemePath.isEmpty() && settings.value("custom_palette", false).toBool())
|
||
|
{
|
||
|
schemePath = Qt5CT::resolvePath(schemePath); //replace environment variables
|
||
|
- m_palette = new QPalette(loadColorScheme(schemePath));
|
||
|
+ if(schemePath.endsWith(".colors"))
|
||
|
+ {
|
||
|
+ m_palette = new QPalette(KColorScheme::createApplicationPalette(KSharedConfig::openConfig(schemePath)));
|
||
|
+ qApp->setProperty("KDE_COLOR_SCHEME_PATH", schemePath);
|
||
|
+ }
|
||
|
+ else
|
||
|
+ {
|
||
|
+ m_palette = new QPalette(loadColorScheme(schemePath));
|
||
|
+ }
|
||
|
}
|
||
|
m_iconTheme = settings.value("icon_theme").toString();
|
||
|
//load dialogs
|
||
|
@@ -480,3 +504,30 @@
|
||
|
|
||
|
return customPalette;
|
||
|
}
|
||
|
+
|
||
|
+bool Qt5CTPlatformTheme::eventFilter(QObject *obj, QEvent *e)
|
||
|
+{
|
||
|
+ if(obj == qApp && e->type() == QEvent::DynamicPropertyChange)
|
||
|
+ {
|
||
|
+ QDynamicPropertyChangeEvent *ee = static_cast<QDynamicPropertyChangeEvent*>(e);
|
||
|
+ if(ee->propertyName() == "KDE_COLOR_SCHEME_PATH")
|
||
|
+ {
|
||
|
+ if(qApp->property("KDE_COLOR_SCHEME_PATH").isNull())
|
||
|
+ {
|
||
|
+ QSettings settings(Qt5CT::configFile(), QSettings::IniFormat);
|
||
|
+ settings.beginGroup("Appearance");
|
||
|
+ QString schemePath = settings.value("color_scheme_path").toString();
|
||
|
+ if(!schemePath.isEmpty() && settings.value("custom_palette", false).toBool())
|
||
|
+ {
|
||
|
+ schemePath = Qt5CT::resolvePath(schemePath); //replace environment variables
|
||
|
+ if(schemePath.endsWith(".colors"))
|
||
|
+ {
|
||
|
+ qApp->setProperty("KDE_COLOR_SCHEME_PATH", schemePath);
|
||
|
+ applySettings();
|
||
|
+ }
|
||
|
+ }
|
||
|
+ }
|
||
|
+ }
|
||
|
+ }
|
||
|
+ return QObject::eventFilter(obj, e);
|
||
|
+}
|
||
|
diff -ur original/src/qt5ct-qtplugin/qt5ctplatformtheme.h patched/src/qt5ct-qtplugin/qt5ctplatformtheme.h
|
||
|
--- original/src/qt5ct-qtplugin/qt5ctplatformtheme.h 2021-10-01 11:20:38.000000000 -0700
|
||
|
+++ patched/src/qt5ct-qtplugin/qt5ctplatformtheme.h 2022-04-01 02:08:48.812150883 -0700
|
||
|
@@ -91,10 +91,13 @@
|
||
|
//virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size,
|
||
|
// QPlatformTheme::IconOptions iconOptions = 0) const;
|
||
|
|
||
|
- //virtual QIconEngine *createIconEngine(const QString &iconName) const;
|
||
|
+ virtual QIconEngine *createIconEngine(const QString &iconName) const;
|
||
|
//virtual QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const;
|
||
|
//virtual QString standardButtonText(int button) const;
|
||
|
|
||
|
+protected:
|
||
|
+ bool eventFilter(QObject *obj, QEvent *e) override;
|
||
|
+
|
||
|
private slots:
|
||
|
void applySettings();
|
||
|
#ifdef QT_WIDGETS_LIB
|
||
|
diff -ur original/src/qt5ct-qtplugin/qt5ct-qtplugin.pro patched/src/qt5ct-qtplugin/qt5ct-qtplugin.pro
|
||
|
--- original/src/qt5ct-qtplugin/qt5ct-qtplugin.pro 2021-10-01 11:20:38.000000000 -0700
|
||
|
+++ patched/src/qt5ct-qtplugin/qt5ct-qtplugin.pro 2022-04-01 02:08:48.812150883 -0700
|
||
|
@@ -4,7 +4,7 @@
|
||
|
TARGET = qt5ct
|
||
|
CONFIG += plugin
|
||
|
|
||
|
-QT += gui-private
|
||
|
+QT += gui-private quickcontrols2 KConfigCore KConfigWidgets KIconThemes
|
||
|
|
||
|
!equals(DISABLE_DBUS, 1):qtHaveModule(dbus):greaterThan(QT_MINOR_VERSION, 5) {
|
||
|
greaterThan(QT_MINOR_VERSION, 7) {
|