diff options
-rw-r--r-- | kde-plasma/kde-gtk-config/files/kde-gtk-config-5.7.4-look-for-cursors-in-right-place.patch | 119 |
1 files changed, 38 insertions, 81 deletions
diff --git a/kde-plasma/kde-gtk-config/files/kde-gtk-config-5.7.4-look-for-cursors-in-right-place.patch b/kde-plasma/kde-gtk-config/files/kde-gtk-config-5.7.4-look-for-cursors-in-right-place.patch index d44ad281e9c1..81da8d67fe75 100644 --- a/kde-plasma/kde-gtk-config/files/kde-gtk-config-5.7.4-look-for-cursors-in-right-place.patch +++ b/kde-plasma/kde-gtk-config/files/kde-gtk-config-5.7.4-look-for-cursors-in-right-place.patch @@ -1,25 +1,31 @@ -From 43323a188f17822cc7b26055b70e1e79cd50fc23 Mon Sep 17 00:00:00 2001 -From: "Jason A. Donenfeld" <Jason@zx2c4.com> -Date: Tue, 13 Sep 2016 04:13:47 +0200 -Subject: [PATCH] cursor model: look for cursors in correct place +commit fa473a1c4572ef3c2614318b0ce7090613878005 +Author: Jason A. Donenfeld <Jason@zx2c4.com> +Date: Tue Sep 13 04:13:47 2016 +0200 -plasma-desktop's cursor theme kcm does the right thing, by consulting -the libXcursor library for the right search paths. Unfortunately, the -kcm here does a pretty butchered job of it. So, we copy, more or less, -the same algorithm used by plasma-desktop. Now there's parity in cursor -selection. ---- - CMakeLists.txt | 2 +- - src/cursorthemesmodel.cpp | 47 ++++++++++++++++++++++++++++++++++++++++------- - src/cursorthemesmodel.h | 3 +-- - src/gtkconfigkcmodule.cpp | 2 +- - 4 files changed, 43 insertions(+), 11 deletions(-) + cursor model: look for cursors in correct place + + plasma-desktop's cursor theme kcm does the right thing, by consulting + the libXcursor library for the right search paths. Unfortunately, the + kcm here does a pretty butchered job of it. So, we copy, more or less, + the same algorithm used by plasma-desktop. Now there's parity in cursor + selection. + + For reference, please see line 165 of: + https://quickgit.kde.org/?p=plasma-desktop.git&a=blob&f=kcms%2Fcursortheme%2Fxcursor%2Fthememodel.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt -index 07d313c..ee2eed9 100644 +index 07d313c..88f5a47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -54,7 +54,7 @@ ki18n_wrap_ui(kcm_SRCS +@@ -7,6 +7,7 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ${ECM_MODULE_P + + find_package(Qt5 REQUIRED NO_MODULE COMPONENTS Widgets Test) + find_package(KF5 REQUIRED COMPONENTS I18n KIO ConfigWidgets NewStuff Archive KCMUtils IconThemes) ++find_package(X11 REQUIRED) + + include_directories( + ${CMAKE_SOURCE_DIR} +@@ -54,7 +55,7 @@ ki18n_wrap_ui(kcm_SRCS ) add_library(kcm_kdegtkconfig MODULE ${kcm_SRCS}) target_compile_definitions(kcm_kdegtkconfig PRIVATE -DPROJECT_VERSION="${PROJECT_VERSION}") @@ -29,70 +35,42 @@ index 07d313c..ee2eed9 100644 kcoreaddons_desktop_to_json(kcm_kdegtkconfig kde-gtk-config.desktop) diff --git a/src/cursorthemesmodel.cpp b/src/cursorthemesmodel.cpp -index 5238714..2955bd9 100644 +index 5238714..0e58230 100644 --- a/src/cursorthemesmodel.cpp +++ b/src/cursorthemesmodel.cpp -@@ -27,9 +27,17 @@ - #include <KIconTheme> +@@ -24,12 +24,14 @@ + #include <QDir> + #include <QDirIterator> + #include <QSet> +-#include <KIconTheme> #include <QStandardPaths> ++#include <KIconTheme> ++#include <KShell> ++ ++#include <X11/Xcursor/Xcursor.h> -CursorThemesModel::CursorThemesModel(bool onlyHome, QObject* parent) -+#include <X11/Xlib.h> -+#include <X11/Xcursor/Xcursor.h> -+ -+// Check for older version -+#if !defined(XCURSOR_LIB_MAJOR) && defined(XCURSOR_MAJOR) -+# define XCURSOR_LIB_MAJOR XCURSOR_MAJOR -+# define XCURSOR_LIB_MINOR XCURSOR_MINOR -+#endif -+ +CursorThemesModel::CursorThemesModel(QObject* parent) : IconThemesModel(parent) - , m_onlyHome(onlyHome) { reload(); } -@@ -37,13 +45,38 @@ CursorThemesModel::CursorThemesModel(bool onlyHome, QObject* parent) +@@ -37,13 +39,11 @@ CursorThemesModel::CursorThemesModel(bool onlyHome, QObject* parent) QList<QDir> CursorThemesModel::installedThemesPaths() { QList<QDir> availableIcons; -+ QStringList dirs; -+ -+#if XCURSOR_LIB_MAJOR == 1 && XCURSOR_LIB_MINOR < 1 -+ // These are the default paths Xcursor will scan for cursor themes -+ QString path("~/.icons:/usr/share/icons:/usr/share/pixmaps:/usr/X11R6/lib/X11/icons"); ++ QStringList dirs(QString(XcursorLibraryPath()).split(':', QString::SkipEmptyParts)); + -+ // If XCURSOR_PATH is set, use that instead of the default path -+ char *xcursorPath = std::getenv("XCURSOR_PATH"); -+ if (xcursorPath) -+ path = xcursorPath; -+#else -+ // Get the search path from Xcursor -+ QString path = XcursorLibraryPath(); -+#endif ++ std::transform(dirs.begin(), dirs.end(), dirs.begin(), KShell::tildeExpand); ++ dirs.removeDuplicates(); - QSet<QString> dirs; - dirs += QDir::home().filePath(".icons"); - if(!m_onlyHome) { - dirs += QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "icons", QStandardPaths::LocateDirectory).toSet(); -+ // Separate the paths -+ dirs = path.split(':', QString::SkipEmptyParts); -+ -+ // Remove duplicates -+ QMutableStringListIterator i(dirs); -+ while (i.hasNext()) -+ { -+ const QString path = i.next(); -+ QMutableStringListIterator j(i); -+ while (j.hasNext()) -+ if (j.next() == path) -+ j.remove(); - } +- } - -+ -+ // Expand all occurrences of ~/ to the home dir -+ dirs.replaceInStrings(QRegExp(QStringLiteral("^~\\/")), QDir::home().path() + '/'); -+ foreach(const QString& dir, dirs) { QDir userIconsDir(dir); QDirIterator it(userIconsDir.path(), QDir::NoDotAndDotDot|QDir::AllDirs|QDir::NoSymLinks); @@ -129,24 +107,3 @@ index 7afe698..d36c6a3 100644 ui->cb_cursor->setModel(m_cursorsModel); m_iconsModel = new IconThemesModel(false, this); ui->cb_icon->setModel(m_iconsModel); --- -2.10.0 - -commit ab7c3c13721466cdf0236732bdb9f4a1f50db89c -Author: Jason A. Donenfeld <Jason@zx2c4.com> -Date: Tue Sep 13 04:23:46 2016 +0200 - - cmake: find x11 libs - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index ee2eed9..14ce086 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -7,6 +7,7 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ${ECM_MODULE_P - - find_package(Qt5 REQUIRED NO_MODULE COMPONENTS Widgets Test) - find_package(KF5 REQUIRED COMPONENTS I18n KIO ConfigWidgets NewStuff Archive KCMUtils IconThemes) -+find_package(X11) - - include_directories( - ${CMAKE_SOURCE_DIR} |