[gtk/wayland-cursor-theme] wayland: Look for cursor themes in $HOME
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wayland-cursor-theme] wayland: Look for cursor themes in $HOME
- Date: Tue, 29 Jun 2021 21:00:22 +0000 (UTC)
commit 4efb661ae67af636d5a57536c8e25df941b3cca5
Author: Matthias Clasen <mclasen redhat com>
Date: Tue Jun 29 16:57:15 2021 -0400
wayland: Look for cursor themes in $HOME
We should look in the same places that libXcursor does,
so add $XDG_DATA_HOME/icons and $HOME/.icons to the list.
Fixes: #4080
gdk/wayland/gdkdisplay-wayland.c | 36 +++++++++++++++++++++++++++++-------
1 file changed, 29 insertions(+), 7 deletions(-)
---
diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c
index 4caae38066..c27b165594 100644
--- a/gdk/wayland/gdkdisplay-wayland.c
+++ b/gdk/wayland/gdkdisplay-wayland.c
@@ -991,6 +991,26 @@ gdk_wayland_display_get_toplevel_surfaces (GdkDisplay *display)
return GDK_WAYLAND_DISPLAY (display)->toplevels;
}
+static struct wl_cursor_theme *
+try_load_theme (GdkWaylandDisplay *display_wayland,
+ const char *dir,
+ gboolean dotdir,
+ const char *name,
+ int size)
+{
+ struct wl_cursor_theme *theme = NULL;
+ char *path;
+
+ path = g_build_filename (dir, dotdir ? ".icons" : "icons", name, "cursors", NULL);
+
+ if (g_file_test (path, G_FILE_TEST_IS_DIR))
+ theme = wl_cursor_theme_create (path, size, display_wayland->shm);
+
+ g_free (path);
+
+ return theme;
+}
+
static struct wl_cursor_theme *
get_cursor_theme (GdkWaylandDisplay *display_wayland,
const char *name,
@@ -1000,16 +1020,18 @@ get_cursor_theme (GdkWaylandDisplay *display_wayland,
struct wl_cursor_theme *theme = NULL;
int i;
+ theme = try_load_theme (display_wayland, g_get_user_data_dir (), FALSE, name, size);
+ if (theme)
+ return theme;
+
+ theme = try_load_theme (display_wayland, g_get_home_dir (), TRUE, name, size);
+ if (theme)
+ return theme;
+
xdg_data_dirs = g_get_system_data_dirs ();
for (i = 0; xdg_data_dirs[i]; i++)
{
- char *path = g_build_filename (xdg_data_dirs[i], "icons", name, "cursors", NULL);
-
- if (g_file_test (path, G_FILE_TEST_IS_DIR))
- theme = wl_cursor_theme_create (path, size, display_wayland->shm);
-
- g_free (path);
-
+ theme = try_load_theme (display_wayland, xdg_data_dirs[i], FALSE, name, size);
if (theme)
return theme;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]