utils: Allow specifying XCursor theme search paths

This commit is contained in:
Vlad Zahorodnii 2024-06-23 21:50:02 +03:00
parent 28b396f44c
commit 53221fd43f
2 changed files with 9 additions and 7 deletions

View file

@ -34,7 +34,7 @@ public:
KXcursorThemePrivate(); KXcursorThemePrivate();
KXcursorThemePrivate(const QString &themeName, int size, qreal devicePixelRatio); KXcursorThemePrivate(const QString &themeName, int size, qreal devicePixelRatio);
void load(); void load(const QStringList &searchPaths);
void loadCursors(const QString &packagePath); void loadCursors(const QString &packagePath);
QString name; QString name;
@ -175,7 +175,7 @@ void KXcursorThemePrivate::loadCursors(const QString &packagePath)
} }
} }
static QStringList searchPaths() static QStringList defaultSearchPaths()
{ {
static QStringList paths; static QStringList paths;
if (paths.isEmpty()) { if (paths.isEmpty()) {
@ -195,9 +195,9 @@ static QStringList searchPaths()
return paths; return paths;
} }
void KXcursorThemePrivate::load() void KXcursorThemePrivate::load(const QStringList &searchPaths)
{ {
const QStringList paths = searchPaths(); const QStringList paths = !searchPaths.isEmpty() ? searchPaths : defaultSearchPaths();
QStack<QString> stack; QStack<QString> stack;
QSet<QString> loaded; QSet<QString> loaded;
@ -236,10 +236,10 @@ KXcursorTheme::KXcursorTheme()
{ {
} }
KXcursorTheme::KXcursorTheme(const QString &themeName, int size, qreal devicePixelRatio) KXcursorTheme::KXcursorTheme(const QString &themeName, int size, qreal devicePixelRatio, const QStringList &searchPaths)
: d(new KXcursorThemePrivate(themeName, size, devicePixelRatio)) : d(new KXcursorThemePrivate(themeName, size, devicePixelRatio))
{ {
d->load(); d->load(searchPaths);
} }
KXcursorTheme::KXcursorTheme(const KXcursorTheme &other) KXcursorTheme::KXcursorTheme(const KXcursorTheme &other)

View file

@ -88,8 +88,10 @@ public:
* Loads the Xcursor theme with the given @ themeName and the desired @a size. * Loads the Xcursor theme with the given @ themeName and the desired @a size.
* The @a dpr specifies the desired scale factor. If no theme with the provided * The @a dpr specifies the desired scale factor. If no theme with the provided
* name exists, the cursor theme will be empty. * name exists, the cursor theme will be empty.
*
* @a searchPaths specifies where the cursor theme should be looked for.
*/ */
KXcursorTheme(const QString &theme, int size, qreal devicePixelRatio); KXcursorTheme(const QString &theme, int size, qreal devicePixelRatio, const QStringList &searchPaths = QStringList());
/** /**
* Constructs a copy of the KXcursorTheme object @a other. * Constructs a copy of the KXcursorTheme object @a other.