Use arch patched qt5ct
This commit is contained in:
		
							parent
							
								
									5abd032e58
								
							
						
					
					
						commit
						1a3d9bcfa2
					
				
					 3 changed files with 217 additions and 0 deletions
				
			
		
							
								
								
									
										16
									
								
								modules/overlay-pkgs/qt5ct/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								modules/overlay-pkgs/qt5ct/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
{ pkgs, ... }: with pkgs;
 | 
			
		||||
stdenv.mkDerivation {
 | 
			
		||||
  pname = "qt5ct";
 | 
			
		||||
  version = "1.5";
 | 
			
		||||
  src = builtins.fetchurl {
 | 
			
		||||
    url = "https://downloads.sourceforge.net/project/qt5ct/qt5ct-1.5.tar.bz2";
 | 
			
		||||
    sha256 = "14742vs32m98nbfb5mad0i8ciff5f45gfcb5v03p4hh2dvhhqgfn";
 | 
			
		||||
  };
 | 
			
		||||
  patches = [ ./patch.patch ];
 | 
			
		||||
  nativeBuildInputs = with libsForQt5; [ qmake qttools wrapQtAppsHook ];
 | 
			
		||||
  buildInputs = with libsForQt5; [ qtbase qtsvg qqc2-desktop-style qtquickcontrols2 kconfig kiconthemes ];
 | 
			
		||||
  qmakeFlags = [
 | 
			
		||||
    "LRELEASE_EXECUTABLE=${lib.getDev libsForQt5.qttools}/bin/lrelease"
 | 
			
		||||
    "PLUGINDIR=${placeholder "out"}/${libsForQt5.qtbase.qtPluginPrefix}"
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										200
									
								
								modules/overlay-pkgs/qt5ct/patch.patch
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										200
									
								
								modules/overlay-pkgs/qt5ct/patch.patch
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,200 @@
 | 
			
		|||
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) {
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue