commit:     c8423c30d5f08634ff99db038127f9f8735225ad
Author:     Jason A. Donenfeld <zx2c4 <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 13 02:26:45 2016 +0000
Commit:     Jason Donenfeld <zx2c4 <AT> gentoo <DOT> org>
CommitDate: Tue Sep 13 02:27:03 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c8423c30

kde-plasma/kde-gtk-config: ensure we use gentoo cursor paths by importing 
upstream patch

Package-Manager: portage-2.3.0

 ...fig-5.7.4-look-for-cursors-in-right-place.patch | 152 +++++++++++++++++++++
 ...5.7.4.ebuild => kde-gtk-config-5.7.4-r1.ebuild} |   2 +-
 2 files changed, 153 insertions(+), 1 deletion(-)

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
new file mode 100644
index 00000000..d44ad28
--- /dev/null
+++ 
b/kde-plasma/kde-gtk-config/files/kde-gtk-config-5.7.4-look-for-cursors-in-right-place.patch
@@ -0,0 +1,152 @@
+From 43323a188f17822cc7b26055b70e1e79cd50fc23 Mon Sep 17 00:00:00 2001
+From: "Jason A. Donenfeld" <ja...@zx2c4.com>
+Date: Tue, 13 Sep 2016 04:13:47 +0200
+Subject: [PATCH] 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.
+---
+ CMakeLists.txt            |  2 +-
+ src/cursorthemesmodel.cpp | 47 ++++++++++++++++++++++++++++++++++++++++-------
+ src/cursorthemesmodel.h   |  3 +--
+ src/gtkconfigkcmodule.cpp |  2 +-
+ 4 files changed, 43 insertions(+), 11 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 07d313c..ee2eed9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -54,7 +54,7 @@ ki18n_wrap_ui(kcm_SRCS
+ )
+ add_library(kcm_kdegtkconfig MODULE ${kcm_SRCS})
+ target_compile_definitions(kcm_kdegtkconfig PRIVATE 
-DPROJECT_VERSION="${PROJECT_VERSION}")
+-target_link_libraries(kcm_kdegtkconfig KF5::I18n KF5::KIOWidgets 
KF5::NewStuff KF5::Archive KF5::NewStuff KF5::ConfigWidgets KF5::IconThemes)
++target_link_libraries(kcm_kdegtkconfig ${X11_Xcursor_LIB} KF5::I18n 
KF5::KIOWidgets KF5::NewStuff KF5::Archive KF5::NewStuff KF5::ConfigWidgets 
KF5::IconThemes)
+ 
+ kcoreaddons_desktop_to_json(kcm_kdegtkconfig kde-gtk-config.desktop)
+ 
+diff --git a/src/cursorthemesmodel.cpp b/src/cursorthemesmodel.cpp
+index 5238714..2955bd9 100644
+--- a/src/cursorthemesmodel.cpp
++++ b/src/cursorthemesmodel.cpp
+@@ -27,9 +27,17 @@
+ #include <KIconTheme>
+ #include <QStandardPaths>
+ 
+-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)
+ 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");
++
++    // 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
+ 
+-    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);
+diff --git a/src/cursorthemesmodel.h b/src/cursorthemesmodel.h
+index 7658bd5..4acfa4b 100644
+--- a/src/cursorthemesmodel.h
++++ b/src/cursorthemesmodel.h
+@@ -29,14 +29,13 @@ class QDir;
+ class CursorThemesModel : public IconThemesModel
+ {
+     public:
+-        explicit CursorThemesModel(bool onlyHome=false, QObject* parent = 0);
++        explicit CursorThemesModel(QObject* parent = 0);
+ 
+         void reload();
+         
+     private:
+         static void fillItem(const QDir& dir, QStandardItem* item);
+         QList<QDir> installedThemesPaths();
+-        bool m_onlyHome;
+ };
+ 
+ #endif // CURSORTHEMESMODEL_H
+diff --git a/src/gtkconfigkcmodule.cpp b/src/gtkconfigkcmodule.cpp
+index 7afe698..d36c6a3 100644
+--- a/src/gtkconfigkcmodule.cpp
++++ b/src/gtkconfigkcmodule.cpp
+@@ -71,7 +71,7 @@ GTKConfigKCModule::GTKConfigKCModule(QWidget* parent, const 
QVariantList& args )
+     setButtons(KCModule::Default | KCModule::Apply);
+     ui->setupUi(this);
+     appareance = new AppearenceGTK;
+-    m_cursorsModel = new CursorThemesModel(false, this);
++    m_cursorsModel = new CursorThemesModel(this);
+     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 <ja...@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} 

diff --git a/kde-plasma/kde-gtk-config/kde-gtk-config-5.7.4.ebuild 
b/kde-plasma/kde-gtk-config/kde-gtk-config-5.7.4-r1.ebuild
similarity index 91%
rename from kde-plasma/kde-gtk-config/kde-gtk-config-5.7.4.ebuild
rename to kde-plasma/kde-gtk-config/kde-gtk-config-5.7.4-r1.ebuild
index 412ffd5..ad7ea62 100644
--- a/kde-plasma/kde-gtk-config/kde-gtk-config-5.7.4.ebuild
+++ b/kde-plasma/kde-gtk-config/kde-gtk-config-5.7.4-r1.ebuild
@@ -36,7 +36,7 @@ RDEPEND="${DEPEND}
        !kde-misc/kde-gtk-config
 "
 
-PATCHES=( "${FILESDIR}/${PN}-5.4.2-gtk3-optional.patch" )
+PATCHES=( "${FILESDIR}/${PN}-5.4.2-gtk3-optional.patch" 
"${FILESDIR}/${P}-look-for-cursors-in-right-place.patch" )
 
 src_configure() {
        local mycmakeargs=(

Reply via email to