From 8daa5fa1216039658dce482d723c21619049b251 Mon Sep 17 00:00:00 2001 From: xh Date: Tue, 6 May 2025 15:21:56 +0800 Subject: [PATCH] fix the crash of gnome icon dragging for adwaita-icon-theme-47 --- ...fallback-to-default-cursor-on-failed.patch | 55 +++++++++++++ ...e-standard-cursor-names-from-the-CSS.patch | 82 +++++++++++++++++++ mutter.spec | 7 +- 3 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 backport-backends-Attempt-a-fallback-to-default-cursor-on-failed.patch create mode 100644 backport-backends-Use-standard-cursor-names-from-the-CSS.patch diff --git a/backport-backends-Attempt-a-fallback-to-default-cursor-on-failed.patch b/backport-backends-Attempt-a-fallback-to-default-cursor-on-failed.patch new file mode 100644 index 0000000..7877156 --- /dev/null +++ b/backport-backends-Attempt-a-fallback-to-default-cursor-on-failed.patch @@ -0,0 +1,55 @@ +From 9f89421ef5abfe5143a777aa33eee308e81a7055 Mon Sep 17 00:00:00 2001 +From: Carlos Garnacho +Date: Tue, 3 Oct 2023 13:54:38 +0200 +Subject: [PATCH] backends: Attempt a fallback to 'default' cursor on failed + lookups + +While we should ideally have a sensible cursor theme, handle the +case of cursor themes that lack certain cursor names, and fallback +to the 'default' cursor in those cases. + +The 'grey rectangle' fallback is still left, in case we even fail +to load a 'default' cursor. + +Part-of: +--- + src/backends/meta-cursor-sprite-xcursor.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +diff --git a/src/backends/meta-cursor-sprite-xcursor.c b/src/backends/meta-cursor-sprite-xcursor.c +index 4794b89f0d6..42d1884a611 100644 +--- a/src/backends/meta-cursor-sprite-xcursor.c ++++ b/src/backends/meta-cursor-sprite-xcursor.c +@@ -157,17 +157,22 @@ static XcursorImages * + load_cursor_on_client (MetaCursor cursor, int scale) + { + XcursorImages *xcursor_images; +- int fallback_size; ++ int fallback_size, i; ++ /* Set a 'default' fallback */ ++ MetaCursor cursors[] = { cursor, META_CURSOR_DEFAULT }; + + if (cursor == META_CURSOR_BLANK) + return create_blank_cursor_images (); + +- xcursor_images = +- XcursorLibraryLoadImages (translate_meta_cursor (cursor), +- meta_prefs_get_cursor_theme (), +- meta_prefs_get_cursor_size () * scale); +- if (xcursor_images) +- return xcursor_images; ++ for (i = 0; i < G_N_ELEMENTS (cursors); i++) ++ { ++ xcursor_images = ++ XcursorLibraryLoadImages (translate_meta_cursor (cursors[i]), ++ meta_prefs_get_cursor_theme (), ++ meta_prefs_get_cursor_size () * scale); ++ if (xcursor_images) ++ return xcursor_images; ++ } + + g_warning_once ("No cursor theme available, please install a cursor theme"); + +-- +GitLab + diff --git a/backport-backends-Use-standard-cursor-names-from-the-CSS.patch b/backport-backends-Use-standard-cursor-names-from-the-CSS.patch new file mode 100644 index 0000000..02c1e95 --- /dev/null +++ b/backport-backends-Use-standard-cursor-names-from-the-CSS.patch @@ -0,0 +1,82 @@ +From d970c9db1abdb0e1f26aeff43518265471ba303b Mon Sep 17 00:00:00 2001 +From: Carlos Garnacho +Date: Fri, 22 Sep 2023 18:06:31 +0200 +Subject: [PATCH] backends: Use standard cursor names from the CSS + specification + +This is the preferred name set, and handled by adwaita icon theme. +Use the names from https://www.w3.org/TR/css-ui-4/#cursor, like +GDK does at https://docs.gtk.org/gdk4/ctor.Cursor.new_from_name.html. + +Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3040 +Part-of: +--- + src/backends/meta-cursor-sprite-xcursor.c | 34 +++++++++++------------ + 1 file changed, 17 insertions(+), 17 deletions(-) + +diff --git a/src/backends/meta-cursor-sprite-xcursor.c b/src/backends/meta-cursor-sprite-xcursor.c +index 1ad444c065f..4794b89f0d6 100644 +--- a/src/backends/meta-cursor-sprite-xcursor.c ++++ b/src/backends/meta-cursor-sprite-xcursor.c +@@ -50,41 +50,41 @@ translate_meta_cursor (MetaCursor cursor) + switch (cursor) + { + case META_CURSOR_DEFAULT: +- return "left_ptr"; ++ return "default"; + case META_CURSOR_NORTH_RESIZE: +- return "top_side"; ++ return "n-resize"; + case META_CURSOR_SOUTH_RESIZE: +- return "bottom_side"; ++ return "s-resize"; + case META_CURSOR_WEST_RESIZE: +- return "left_side"; ++ return "w-resize"; + case META_CURSOR_EAST_RESIZE: +- return "right_side"; ++ return "e-resize"; + case META_CURSOR_SE_RESIZE: +- return "bottom_right_corner"; ++ return "se-resize"; + case META_CURSOR_SW_RESIZE: +- return "bottom_left_corner"; ++ return "sw-resize"; + case META_CURSOR_NE_RESIZE: +- return "top_right_corner"; ++ return "ne-resize"; + case META_CURSOR_NW_RESIZE: +- return "top_left_corner"; ++ return "nw-resize"; + case META_CURSOR_MOVE_OR_RESIZE_WINDOW: +- return "fleur"; ++ return "move"; + case META_CURSOR_BUSY: +- return "watch"; ++ return "wait"; + case META_CURSOR_DND_IN_DRAG: +- return "dnd-none"; ++ return "no-drop"; + case META_CURSOR_DND_MOVE: +- return "dnd-move"; ++ return "grabbing"; + case META_CURSOR_DND_COPY: +- return "dnd-copy"; ++ return "copy"; + case META_CURSOR_DND_UNSUPPORTED_TARGET: +- return "dnd-none"; ++ return "no-drop"; + case META_CURSOR_POINTING_HAND: +- return "hand2"; ++ return "pointer"; + case META_CURSOR_CROSSHAIR: + return "crosshair"; + case META_CURSOR_IBEAM: +- return "xterm"; ++ return "text"; + case META_CURSOR_BLANK: + case META_CURSOR_NONE: + case META_CURSOR_LAST: +-- +GitLab + diff --git a/mutter.spec b/mutter.spec index 83900c2..bfe3248 100644 --- a/mutter.spec +++ b/mutter.spec @@ -10,7 +10,7 @@ Name: mutter Version: 44.6 -Release: 4 +Release: 5 Summary: Window and compositing manager based on Clutter License: GPLv2+ URL: https://www.gnome.org @@ -23,6 +23,8 @@ Patch3: backport-Add-IS_ALIVE-to-get_property.patch Patch4: backport-Propagate-focus-appearance-to-all-ancestors.patch Patch5: backport-Do-not-write-uninitialized-out-values-on-failed-transform.patch Patch6: backport-Add-an-allocation-check-to-calculate_clear_area.patch +Patch7: backport-backends-Use-standard-cursor-names-from-the-CSS.patch +Patch8: backport-backends-Attempt-a-fallback-to-default-cursor-on-failed.patch BuildRequires: meson pam-devel zenity sysprof-devel gtk-doc gettext-devel git-core BuildRequires: xorg-x11-server-Xorg xorg-x11-server-Xvfb desktop-file-utils @@ -156,6 +158,9 @@ echo "/usr/lib64/mutter-12" > %{buildroot}/etc/ld.so.conf.d/%{name}-%{_arch}.con %{_mandir}/man1/*.1.gz %changelog +* Tue May 06 2025 xinghe - 44.6-5 +- fix the crash of gnome icon dragging for adwaita-icon-theme-47 + * Wed Jul 31 2024 zhangxingrong - 44.6-4 - delete: Don't wrongly set window as not alive when pings are disabled - window: Add IS_ALIVE to get_property -- Gitee