Skip to content

Commit

Permalink
kde-plasma/kde-gtk-config: Actually use upstream patch
Browse files Browse the repository at this point in the history
Package-Manager: portage-2.3.0
  • Loading branch information
zx2c4 committed Sep 13, 2016
1 parent b69d5c8 commit e5c5fd3
Showing 1 changed file with 38 additions and 81 deletions.
Original file line number Diff line number Diff line change
@@ -1,25 +1,31 @@
From 43323a188f17822cc7b26055b70e1e79cd50fc23 Mon Sep 17 00:00:00 2001
From: "Jason A. Donenfeld" <[email protected]>
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 <[email protected]>
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}")
Expand All @@ -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);
Expand Down Expand Up @@ -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 <[email protected]>
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}

0 comments on commit e5c5fd3

Please sign in to comment.