aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrassy Boykinov <kboykinov@teamcentrixx.com>2024-02-08 17:01:51 +0100
committerNatanael Copa <ncopa@alpinelinux.org>2024-02-08 18:02:42 +0000
commit918091effb2daf1847f72cea1b535990e92af4e4 (patch)
treeb84a41505cac45bd623661aae250b1d53442b6f2
parent52fa0069134c68cd8ca345e82ca74f2c0d6908e4 (diff)
main/gtk+3.0: upgrade to 3.24.41
-rw-r--r--main/gtk+3.0/APKBUILD24
-rw-r--r--main/gtk+3.0/charcode.patch33
-rw-r--r--main/gtk+3.0/dbus-crash.patch106
-rw-r--r--main/gtk+3.0/glsync-fix.patch119
-rw-r--r--main/gtk+3.0/offscreen-crash.patch78
-rw-r--r--main/gtk+3.0/pad-fix.patch271
-rw-r--r--main/gtk+3.0/password-segv.patch62
-rw-r--r--main/gtk+3.0/stylus-map.patch41
-rw-r--r--main/gtk+3.0/x11-perf.patch72
9 files changed, 4 insertions, 802 deletions
diff --git a/main/gtk+3.0/APKBUILD b/main/gtk+3.0/APKBUILD
index 6f2b89e94c0..66d673136a3 100644
--- a/main/gtk+3.0/APKBUILD
+++ b/main/gtk+3.0/APKBUILD
@@ -2,8 +2,8 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=gtk+3.0
-pkgver=3.24.38
-pkgrel=7
+pkgver=3.24.41
+pkgrel=0
pkgdesc="The GTK+ Toolkit (v3)"
url="https://www.gtk.org/"
install="$pkgname.post-deinstall"
@@ -21,7 +21,6 @@ subpackages="
"
depends="shared-mime-info gtk-update-icon-cache"
depends_dev="
- at-spi2-core-dev
gdk-pixbuf-dev
glib-dev
libepoxy-dev
@@ -37,6 +36,7 @@ _icon_cache_depends="hicolor-icon-theme"
makedepends="
$depends_dev
$_icon_cache_depends
+ at-spi2-core-dev
cairo-dev
cups-dev
expat-dev
@@ -63,14 +63,6 @@ checkdepends="
xvfb-run
"
source="https://download.gnome.org/sources/gtk+/${pkgver%.*}/gtk+-$pkgver.tar.xz
- charcode.patch
- dbus-crash.patch
- glsync-fix.patch
- offscreen-crash.patch
- pad-fix.patch
- password-segv.patch
- stylus-map.patch
- x11-perf.patch
"
builddir="$srcdir/gtk+-$pkgver"
@@ -139,13 +131,5 @@ icon_cache() {
}
sha512sums="
-e99ec10959191b55013fce37e83f0e85bf36597db101e324081479792a2047d032cf0d213d69c02eeb4b7cd6d56d6489b7b2a60904b2bd7af23ea1b9c5a79528 gtk+-3.24.38.tar.xz
-95a000d04c35915e36cc4c2c917136a405bbeacde04b59dc456a1820e0052e56cfd50d1eb013dfda2a8c8d94be9de6ce1f8c522d9cb57324172c9653c6543d4d charcode.patch
-563c607c956b5b055269c39d27af23c9c51b99cad8a8f643ce31b522008f01070edb3247f06c84e836fd29eec2453650ad936c997226c4b956e649ec688375d5 dbus-crash.patch
-7da0aac2d369fd3aaca8e8c247cdc322e592acbbff3aaad33c678cdcdb91b9d9e7791f87af0a0fb22cca23c86ff8fffa1378ab695162e2bbd486ba94751738ee glsync-fix.patch
-ea49cea1cf12b8a1c0c9648d6c1d06a437b667fa0ca515085f25d0c600f8cb381f14b912365dc529b2bdbd30fcc067bc5b14760e9a9974286cc9caf223e4777a offscreen-crash.patch
-75ac81233a98d0001ea7be54758fa468d6ea452d799f9250745a1127a0663a26129cfeada89a4c54c79b7db702f98c795deedb85679042d76ecf46c10dae1d20 pad-fix.patch
-4d80049d637fd64d6b99ecfb0ab40e883e43729f183a05b528ee692c69016d28cae2772ee8defb88fe2a209d1bf71e036d04a8ebffb81a89934d3d48abda7510 password-segv.patch
-006d63ba658861dde207ec6996ee07a1bf51f39b667e78878bbe9bf407606fc31cd78ac5f25108040967e04d88a2889d37e153755b918fa302e3b523528edaef stylus-map.patch
-a77e704065dfd015489a51647bbd4b6736cf1bbcadcd367c4c2325635398209e268b11dca97f6d9bb3051b987b9cb1d002caea0dcd77b919dfded3c86d90cb82 x11-perf.patch
+aaf061d846fac592e71089feace302bdef1bb64bb2ad6ff30d51d90000da9084cad2fa5bf88cb75adcd789c911d94231ae60a2ca7cf97a2f5720687369a3da98 gtk+-3.24.41.tar.xz
"
diff --git a/main/gtk+3.0/charcode.patch b/main/gtk+3.0/charcode.patch
deleted file mode 100644
index 01ee19f6f2e..00000000000
--- a/main/gtk+3.0/charcode.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Patch-Source: https://gitlab.gnome.org/GNOME/gtk/-/commit/6dc75b46cc9afe1c98b7ba72a9b1a275c723ea42
---
-From 6dc75b46cc9afe1c98b7ba72a9b1a275c723ea42 Mon Sep 17 00:00:00 2001
-From: liiulinsong <liulinsong@kylinos.cn>
-Date: Fri, 26 May 2023 10:18:58 +0800
-Subject: [PATCH] Make sure that the charcode is signless
-
-1. The data with type of char is signed by default.
-
-2. The byte value of UTF-8 is signless by default.
-
-3. So, if a UTF-8 charcode is stored in a char array, we should cast the
-type of its value from char to unsigned char.
----
- gtk/gtkcssparser.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gtk/gtkcssparser.c b/gtk/gtkcssparser.c
-index 44ff7bcfca7..fc8ede28b88 100644
---- a/gtk/gtkcssparser.c
-+++ b/gtk/gtkcssparser.c
-@@ -373,7 +373,7 @@ _gtk_css_parser_read_char (GtkCssParser *parser,
- parser->data++;
- return TRUE;
- }
-- if (*parser->data >= 127)
-+ if ((*(guchar *) parser->data) >= 127)
- {
- gsize len = g_utf8_skip[(guint) *(guchar *) parser->data];
-
---
-GitLab
-
diff --git a/main/gtk+3.0/dbus-crash.patch b/main/gtk+3.0/dbus-crash.patch
deleted file mode 100644
index 0f0520c19a9..00000000000
--- a/main/gtk+3.0/dbus-crash.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-Patch-Source: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6180
-https://gitlab.gnome.org/GNOME/gtk/-/issues/5775
---
-From 7ca33ff9941ad8565979eb0873c8bc14e31397d2 Mon Sep 17 00:00:00 2001
-From: Luca Bacci <luca.bacci982@gmail.com>
-Date: Tue, 11 Jul 2023 10:33:08 +0200
-Subject: [PATCH] GtkApplicationImplDBus: Cancel DBus method calls on shutdown
-
-We do that for method calls where a non-NULL GAsyncReadyCallback
-is passed.
-
-Fixes #5775
----
- gtk/gtkapplication-dbus.c | 21 +++++++++++++++------
- gtk/gtkapplicationprivate.h | 1 +
- 2 files changed, 16 insertions(+), 6 deletions(-)
-
-diff --git a/gtk/gtkapplication-dbus.c b/gtk/gtkapplication-dbus.c
-index 2c9a1a78efb..a663aede49b 100644
---- a/gtk/gtkapplication-dbus.c
-+++ b/gtk/gtkapplication-dbus.c
-@@ -248,8 +248,10 @@ ss_get_active_cb (GObject *source,
- ret = g_dbus_proxy_call_finish (proxy, result, &error);
- if (ret == NULL)
- {
-- g_warning ("Getting screensaver status failed: %s", error->message);
-- g_error_free (error);
-+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
-+ g_warning ("Getting screensaver status failed: %s",
-+ error ? error->message : "");
-+ g_clear_error (&error);
- return;
- }
-
-@@ -270,8 +272,10 @@ create_monitor_cb (GObject *source,
- ret = g_dbus_proxy_call_finish (proxy, result, &error);
- if (ret == NULL)
- {
-- g_warning ("Creating a portal monitor failed: %s", error->message);
-- g_error_free (error);
-+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
-+ g_warning ("Creating a portal monitor failed: %s",
-+ error ? error->message : "");
-+ g_clear_error (&error);
- return;
- }
-
-@@ -302,6 +306,8 @@ gtk_application_impl_dbus_startup (GtkApplicationImpl *impl,
- if (gtk_should_use_portal ())
- goto out;
-
-+ dbus->cancellable = g_cancellable_new ();
-+
- g_debug ("Connecting to session manager");
-
- /* Try the GNOME session manager first */
-@@ -368,7 +374,7 @@ gtk_application_impl_dbus_startup (GtkApplicationImpl *impl,
- NULL,
- G_DBUS_CALL_FLAGS_NONE,
- G_MAXINT,
-- NULL,
-+ dbus->cancellable,
- ss_get_active_cb,
- dbus);
- }
-@@ -515,7 +521,7 @@ gtk_application_impl_dbus_startup (GtkApplicationImpl *impl,
- g_variant_new ("(sa{sv})", "", &opt_builder),
- G_DBUS_CALL_FLAGS_NONE,
- G_MAXINT,
-- NULL,
-+ dbus->cancellable,
- create_monitor_cb, dbus);
- g_free (token);
- }
-@@ -527,6 +533,8 @@ end:;
- static void
- gtk_application_impl_dbus_shutdown (GtkApplicationImpl *impl)
- {
-+ GtkApplicationImplDBus *dbus = (GtkApplicationImplDBus *) impl;
-+ g_cancellable_cancel (dbus->cancellable);
- }
-
- GQuark gtk_application_impl_dbus_export_id_quark (void);
-@@ -902,6 +910,7 @@ gtk_application_impl_dbus_finalize (GObject *object)
- if (dbus->ss_proxy)
- g_signal_handlers_disconnect_by_func (dbus->ss_proxy, screensaver_signal_session, dbus->impl.application);
- g_clear_object (&dbus->ss_proxy);
-+ g_clear_object (&dbus->cancellable);
-
- G_OBJECT_CLASS (gtk_application_impl_dbus_parent_class)->finalize (object);
- }
-diff --git a/gtk/gtkapplicationprivate.h b/gtk/gtkapplicationprivate.h
-index 01b674a709a..c76b2e8840f 100644
---- a/gtk/gtkapplicationprivate.h
-+++ b/gtk/gtkapplicationprivate.h
-@@ -117,6 +117,7 @@ typedef struct
- GtkApplicationImpl impl;
-
- GDBusConnection *session;
-+ GCancellable *cancellable;
-
- const gchar *application_id;
- const gchar *unique_name;
---
-GitLab
-
diff --git a/main/gtk+3.0/glsync-fix.patch b/main/gtk+3.0/glsync-fix.patch
deleted file mode 100644
index 9ba15dc6133..00000000000
--- a/main/gtk+3.0/glsync-fix.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-Patch-Source: https://gitlab.gnome.org/GNOME/gtk/-/commit/cf7decae1a1a2af825caca8da018ce09cd9ce31a
-https://gitlab.gnome.org/GNOME/gtk/-/issues/5749
---
-From cf7decae1a1a2af825caca8da018ce09cd9ce31a Mon Sep 17 00:00:00 2001
-From: Benjamin Otte <otte@redhat.com>
-Date: Sat, 1 Jul 2023 22:46:47 +0200
-Subject: [PATCH] gdkgl: Check for GLsync before using it
-
-Copy what we do in GTK4: Check for GL >= 3.2 or GLES >= 3.0 or the
-GL_ARB_sync extension.
-Then store that info for a (private) gdk_gl_context_has_sync()
-function.
-And then check that function before using GLsync objects as introduced
-by commit 9811485990b.
-
-Fixes #5749
----
- gdk/gdkgl.c | 10 +++++++---
- gdk/gdkglcontext.c | 13 +++++++++++++
- gdk/gdkglcontextprivate.h | 1 +
- 3 files changed, 21 insertions(+), 3 deletions(-)
-
-diff --git a/gdk/gdkgl.c b/gdk/gdkgl.c
-index 86b169039a8..d3b460b4b71 100644
---- a/gdk/gdkgl.c
-+++ b/gdk/gdkgl.c
-@@ -341,7 +341,7 @@ gdk_cairo_draw_from_gl (cairo_t *cr,
- int width,
- int height)
- {
-- GdkGLContext *paint_context;
-+ GdkGLContext *paint_context, *current_context;
- cairo_surface_t *image;
- cairo_matrix_t matrix;
- int dx, dy, window_scale;
-@@ -352,7 +352,7 @@ gdk_cairo_draw_from_gl (cairo_t *cr,
- int alpha_size = 0;
- cairo_region_t *clip_region;
- GdkGLContextPaintData *paint_data;
-- GLsync sync = NULL;
-+ GLsync sync;
-
- impl_window = window->impl_window;
-
-@@ -366,9 +366,13 @@ gdk_cairo_draw_from_gl (cairo_t *cr,
- }
-
- clip_region = gdk_cairo_region_from_clip (cr);
-+ current_context = gdk_gl_context_get_current ();
-
-- if ((gdk_gl_context_get_current () != NULL) && (gdk_gl_context_get_current () != paint_context))
-+ if ((current_context != NULL) && (current_context != paint_context) &&
-+ gdk_gl_context_has_sync (current_context))
- sync = glFenceSync (GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
-+ else
-+ sync = NULL;
-
- gdk_gl_context_make_current (paint_context);
-
-diff --git a/gdk/gdkglcontext.c b/gdk/gdkglcontext.c
-index 3b23639e1ce..4c137a8d5dd 100644
---- a/gdk/gdkglcontext.c
-+++ b/gdk/gdkglcontext.c
-@@ -101,6 +101,7 @@ typedef struct {
- guint has_gl_framebuffer_blit : 1;
- guint has_frame_terminator : 1;
- guint has_unpack_subimage : 1;
-+ guint has_sync : 1;
- guint extensions_checked : 1;
- guint debug_enabled : 1;
- guint forward_compatible : 1;
-@@ -441,6 +442,14 @@ gdk_gl_context_has_unpack_subimage (GdkGLContext *context)
- return priv->has_unpack_subimage;
- }
-
-+gboolean
-+gdk_gl_context_has_sync (GdkGLContext *context)
-+{
-+ GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (context);
-+
-+ return priv->has_sync;
-+}
-+
- /**
- * gdk_gl_context_set_debug_enabled:
- * @context: a #GdkGLContext
-@@ -809,6 +818,7 @@ gdk_gl_context_check_extensions (GdkGLContext *context)
- priv->has_frame_terminator = FALSE;
-
- priv->has_unpack_subimage = epoxy_has_gl_extension ("GL_EXT_unpack_subimage");
-+ priv->has_sync = priv->gl_version >= 30;
- }
- else
- {
-@@ -818,6 +828,9 @@ gdk_gl_context_check_extensions (GdkGLContext *context)
- priv->has_gl_framebuffer_blit = priv->gl_version >= 30 || epoxy_has_gl_extension ("GL_EXT_framebuffer_blit");
- priv->has_frame_terminator = epoxy_has_gl_extension ("GL_GREMEDY_frame_terminator");
- priv->has_unpack_subimage = TRUE;
-+ priv->has_sync = priv->gl_version >= 32 ||
-+ epoxy_has_gl_extension ("GL_ARB_sync") ||
-+ epoxy_has_gl_extension ("GL_APPLE_sync");
-
- /* We asked for a core profile, but we didn't get one, so we're in legacy mode */
- if (priv->gl_version < 32)
-diff --git a/gdk/gdkglcontextprivate.h b/gdk/gdkglcontextprivate.h
-index cb0b76793fa..94ecb34d30b 100644
---- a/gdk/gdkglcontextprivate.h
-+++ b/gdk/gdkglcontextprivate.h
-@@ -86,6 +86,7 @@ gboolean gdk_gl_context_use_texture_rectangle (GdkGLContext
- gboolean gdk_gl_context_has_framebuffer_blit (GdkGLContext *context);
- gboolean gdk_gl_context_has_frame_terminator (GdkGLContext *context);
- gboolean gdk_gl_context_has_unpack_subimage (GdkGLContext *context);
-+gboolean gdk_gl_context_has_sync (GdkGLContext *context);
- void gdk_gl_context_end_frame (GdkGLContext *context,
- cairo_region_t *painted,
- cairo_region_t *damage);
---
-GitLab
-
diff --git a/main/gtk+3.0/offscreen-crash.patch b/main/gtk+3.0/offscreen-crash.patch
deleted file mode 100644
index 23b3b6e839e..00000000000
--- a/main/gtk+3.0/offscreen-crash.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-Patch-Source: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6184
-https://gitlab.gnome.org/GNOME/gimp/-/issues/6711
---
-From 3e3266dce4a8aed453f296ca8043e3574ff29f63 Mon Sep 17 00:00:00 2001
-From: Luca Bacci <luca.bacci982@gmail.com>
-Date: Thu, 13 Jul 2023 15:31:05 +0200
-Subject: [PATCH 1/2] GdkWindow: Check for offscreen windows in
- set_transient_for ()
-
-Fixes https://gitlab.gnome.org/GNOME/gimp/-/issues/6711
----
- gdk/gdkwindow.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
-index 727b0cf1f43..62d488d7594 100644
---- a/gdk/gdkwindow.c
-+++ b/gdk/gdkwindow.c
-@@ -10542,6 +10542,13 @@ void
- gdk_window_set_transient_for (GdkWindow *window,
- GdkWindow *parent)
- {
-+ if (!gdk_window_is_offscreen (window) &&
-+ parent != NULL &&
-+ gdk_window_is_offscreen (parent))
-+ {
-+ return;
-+ }
-+
- window->transient_for = parent;
-
- GDK_WINDOW_IMPL_GET_CLASS (window->impl)->set_transient_for (window, parent);
---
-GitLab
-
-
-From 272b6b4febb3e293239e178410f87abcad85ba2d Mon Sep 17 00:00:00 2001
-From: Luca Bacci <luca.bacci982@gmail.com>
-Date: Thu, 13 Jul 2023 16:24:55 +0200
-Subject: [PATCH 2/2] GtkMenu: Take offscreen windows in account for
- positioning
-
----
- gtk/gtkmenu.c | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
-index eac972bb41b..3f1a7bc9fac 100644
---- a/gtk/gtkmenu.c
-+++ b/gtk/gtkmenu.c
-@@ -5263,6 +5263,24 @@ gtk_menu_position (GtkMenu *menu,
- }
- }
-
-+ if (rect_window != NULL &&
-+ GDK_WINDOW_TYPE (rect_window) == GDK_WINDOW_OFFSCREEN)
-+ {
-+ GdkWindow *effective = gdk_offscreen_window_get_embedder (rect_window);
-+
-+ if (effective)
-+ {
-+ double x = rect.x, y = rect.y;
-+
-+ gdk_window_coords_to_parent (rect_window, x, y, &x, &y);
-+
-+ rect.x = x;
-+ rect.y = y;
-+ }
-+
-+ rect_window = effective;
-+ }
-+
- if (!rect_window)
- {
- gtk_window_set_unlimited_guessed_size (GTK_WINDOW (priv->toplevel),
---
-GitLab
-
diff --git a/main/gtk+3.0/pad-fix.patch b/main/gtk+3.0/pad-fix.patch
deleted file mode 100644
index 8c52ec3f46a..00000000000
--- a/main/gtk+3.0/pad-fix.patch
+++ /dev/null
@@ -1,271 +0,0 @@
-Patch-Source: https://gitlab.gnome.org/GNOME/gtk/-/commit/7141305972a73559c97730e17d38a0a7440f3599
-https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6095
---
-From 6070f1092258e053ecdbe2dbf6148d2dd9d8b326 Mon Sep 17 00:00:00 2001
-From: Carlos Garnacho <carlosg@gnome.org>
-Date: Tue, 13 Jun 2023 22:11:15 +0200
-Subject: [PATCH 1/3] gdk/wayland: Create pad devices on enter
-
-We were creating the pad device on wp_tablet_pad.done, but
-at that time we do not know what tablet it is associated with,
-thus we cannot get appropriate vid/pid/name properties for it.
-
-To get that, we need to wait for the pad to enter a surface,
-at that time we do know what tablet it is associated with, so
-we can get better information about the device.
-
-There are pads that may plausibly "change" tablet between
-one .enter event and the next (e.g. Wacom Express Key Remote),
-but this situation is highly unlikely. The pad devices created
-are thus persistent until that situation happens.
----
- gdk/wayland/gdkdevice-wayland.c | 86 ++++++++++++++++++++++-----------
- 1 file changed, 57 insertions(+), 29 deletions(-)
-
-diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
-index 9dc86a32578..7e7beac9d1e 100644
---- a/gdk/wayland/gdkdevice-wayland.c
-+++ b/gdk/wayland/gdkdevice-wayland.c
-@@ -2921,13 +2921,17 @@ _gdk_wayland_seat_remove_tablet_pad (GdkWaylandSeat *seat,
-
- seat->tablet_pads = g_list_remove (seat->tablet_pads, pad);
-
-- device_manager->devices =
-- g_list_remove (device_manager->devices, pad->device);
-- g_signal_emit_by_name (device_manager, "device-removed", pad->device);
-+ if (pad->device)
-+ {
-+ device_manager->devices =
-+ g_list_remove (device_manager->devices, pad->device);
-+ g_signal_emit_by_name (device_manager, "device-removed", pad->device);
-
-- _gdk_device_set_associated_device (pad->device, NULL);
-+ _gdk_device_set_associated_device (pad->device, NULL);
-+
-+ g_object_unref (pad->device);
-+ }
-
-- g_object_unref (pad->device);
- g_free (pad);
- }
-
-@@ -4439,27 +4443,8 @@ static void
- tablet_pad_handle_done (void *data,
- struct zwp_tablet_pad_v2 *wp_tablet_pad)
- {
-- GdkWaylandTabletPadData *pad = data;
-- GdkWaylandSeat *seat = GDK_WAYLAND_SEAT (pad->seat);
-- GdkWaylandDeviceManager *device_manager =
-- GDK_WAYLAND_DEVICE_MANAGER (seat->device_manager);
--
- GDK_NOTE (EVENTS,
- g_message ("tablet pad handle done, pad = %p", wp_tablet_pad));
--
-- pad->device =
-- g_object_new (GDK_TYPE_WAYLAND_DEVICE_PAD,
-- "name", "Pad device",
-- "type", GDK_DEVICE_TYPE_SLAVE,
-- "input-source", GDK_SOURCE_TABLET_PAD,
-- "input-mode", GDK_MODE_SCREEN,
-- "display", gdk_seat_get_display (pad->seat),
-- "device-manager", device_manager,
-- "seat", seat,
-- NULL);
--
-- _gdk_device_set_associated_device (pad->device, seat->master_keyboard);
-- g_signal_emit_by_name (device_manager, "device-added", pad->device);
- }
-
- static void
-@@ -4506,14 +4491,60 @@ tablet_pad_handle_enter (void *data,
- {
- GdkWaylandTabletPadData *pad = data;
- GdkWaylandTabletData *tablet = zwp_tablet_v2_get_user_data (wp_tablet);
-+ GdkWaylandSeat *seat = GDK_WAYLAND_SEAT (pad->seat);
-+ GdkWaylandDeviceManager *device_manager =
-+ GDK_WAYLAND_DEVICE_MANAGER (seat->device_manager);
-
- GDK_NOTE (EVENTS,
- g_message ("tablet pad handle enter, pad = %p, tablet = %p surface = %p",
- wp_tablet_pad, wp_tablet, surface));
-
-+ if (pad->device && pad->current_tablet != tablet)
-+ {
-+ device_manager->devices =
-+ g_list_remove (device_manager->devices, pad->device);
-+ g_signal_emit_by_name (device_manager, "device-removed", pad->device);
-+ _gdk_device_set_associated_device (pad->device, NULL);
-+ g_clear_object (&pad->device);
-+ }
-+
- /* Relate pad and tablet */
-- tablet->pads = g_list_prepend (tablet->pads, pad);
-+ tablet->pads = g_list_append (tablet->pads, pad);
- pad->current_tablet = tablet;
-+
-+ if (!pad->device)
-+ {
-+ GdkWaylandTabletPadData *pad = data;
-+ gchar *name, *vid, *pid;
-+
-+ name = g_strdup_printf ("%s Pad %d",
-+ tablet->name,
-+ g_list_index (tablet->pads, pad) + 1);
-+ vid = g_strdup_printf ("%.4x", tablet->vid);
-+ pid = g_strdup_printf ("%.4x", tablet->pid);
-+
-+ pad->device =
-+ g_object_new (GDK_TYPE_WAYLAND_DEVICE_PAD,
-+ "name", name,
-+ "vendor-id", vid,
-+ "product-id", pid,
-+ "type", GDK_DEVICE_TYPE_SLAVE,
-+ "input-source", GDK_SOURCE_TABLET_PAD,
-+ "input-mode", GDK_MODE_SCREEN,
-+ "display", gdk_seat_get_display (pad->seat),
-+ "device-manager", device_manager,
-+ "seat", seat,
-+ NULL);
-+
-+ _gdk_device_set_associated_device (pad->device, seat->master_keyboard);
-+ device_manager->devices =
-+ g_list_prepend (device_manager->devices, pad->device);
-+ g_signal_emit_by_name (device_manager, "device-added", pad->device);
-+
-+ g_free (name);
-+ g_free (vid);
-+ g_free (pid);
-+ }
- }
-
- static void
-@@ -4529,10 +4560,7 @@ tablet_pad_handle_leave (void *data,
- wp_tablet_pad, surface));
-
- if (pad->current_tablet)
-- {
-- pad->current_tablet->pads = g_list_remove (pad->current_tablet->pads, pad);
-- pad->current_tablet = NULL;
-- }
-+ pad->current_tablet->pads = g_list_remove (pad->current_tablet->pads, pad);
- }
-
- static void
---
-GitLab
-
-
-From 81029b824b39122704a9bd615dc7b03886516843 Mon Sep 17 00:00:00 2001
-From: Carlos Garnacho <carlosg@gnome.org>
-Date: Tue, 13 Jun 2023 22:52:48 +0200
-Subject: [PATCH 2/3] gdk/wayland: Ensure device-added/removed emission in
- GdkSeat
-
-We've used to emit these in the GdkDeviceManager, but missed to do
-this signal emission at the GdkSeat object level. In order to avoid
-the double emission, trigger one from the other.
----
- gdk/wayland/gdkdevice-wayland.c | 27 +++++++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
-
-diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
-index 7e7beac9d1e..dd7db81cf1b 100644
---- a/gdk/wayland/gdkdevice-wayland.c
-+++ b/gdk/wayland/gdkdevice-wayland.c
-@@ -5181,6 +5181,22 @@ init_pointer_data (GdkWaylandPointerData *pointer_data,
- master);
- }
-
-+static void
-+device_manager_device_added (GdkDeviceManager *device_manager,
-+ GdkDevice *device,
-+ GdkSeat *seat)
-+{
-+ g_signal_emit_by_name (seat, "device-added", device);
-+}
-+
-+static void
-+device_manager_device_removed (GdkDeviceManager *device_manager,
-+ GdkDevice *device,
-+ GdkSeat *seat)
-+{
-+ g_signal_emit_by_name (seat, "device-removed", device);
-+}
-+
- void
- _gdk_wayland_device_manager_add_seat (GdkDeviceManager *device_manager,
- guint32 id,
-@@ -5249,6 +5265,11 @@ _gdk_wayland_device_manager_add_seat (GdkDeviceManager *device_manager,
- seat);
- }
-
-+ g_signal_connect (seat->device_manager, "device-added",
-+ G_CALLBACK (device_manager_device_added), seat);
-+ g_signal_connect (seat->device_manager, "device-removed",
-+ G_CALLBACK (device_manager_device_removed), seat);
-+
- gdk_display_add_seat (display, GDK_SEAT (seat));
- }
-
-@@ -5268,6 +5289,12 @@ _gdk_wayland_device_manager_remove_seat (GdkDeviceManager *manager,
- if (seat->id != id)
- continue;
-
-+ g_signal_handlers_disconnect_by_func (manager,
-+ device_manager_device_added,
-+ seat);
-+ g_signal_handlers_disconnect_by_func (manager,
-+ device_manager_device_removed,
-+ seat);
- gdk_display_remove_seat (display, GDK_SEAT (seat));
- break;
- }
---
-GitLab
-
-
-From a9d7198d63d14e049c399914f11ddd37fc034f3a Mon Sep 17 00:00:00 2001
-From: Carlos Garnacho <carlosg@gnome.org>
-Date: Tue, 13 Jun 2023 22:54:23 +0200
-Subject: [PATCH 3/3] gdk/wayland: Return pad devices querying for all devices
-
-These devices unfortunately didn't ever get a capability flag in
-3.24 (fixed in GTK4). We are very far off into maintenance grounds that
-it is not ideal to add new flag values, but we could however return
-these devices if GDK_SEAT_CAPABILITY_ALL is being asked.
-
-Do that, so it is possible to deal with pad devices, even if it's
-not possible to query them specifically.
----
- gdk/wayland/gdkdevice-wayland.c | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
-index dd7db81cf1b..a1e4771a74e 100644
---- a/gdk/wayland/gdkdevice-wayland.c
-+++ b/gdk/wayland/gdkdevice-wayland.c
-@@ -5141,6 +5141,21 @@ gdk_wayland_seat_get_slaves (GdkSeat *seat,
- }
- }
-
-+ /* There is no specific capability for pads, return
-+ * them anyways if all devices are requested
-+ */
-+ if (capabilities == GDK_SEAT_CAPABILITY_ALL)
-+ {
-+ GList *l;
-+
-+ for (l = wayland_seat->tablet_pads; l; l = l->next)
-+ {
-+ GdkWaylandTabletPadData *pad = l->data;
-+
-+ slaves = g_list_prepend (slaves, pad->device);
-+ }
-+ }
-+
- return slaves;
- }
-
---
-GitLab
-
diff --git a/main/gtk+3.0/password-segv.patch b/main/gtk+3.0/password-segv.patch
deleted file mode 100644
index e93408f36d1..00000000000
--- a/main/gtk+3.0/password-segv.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-Patch-Source: https://gitlab.gnome.org/GNOME/gtk/-/commit/1d95b8ab2646b3e36a1c1b23b771c4f145be13fc
-https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6049
---
-From 1d95b8ab2646b3e36a1c1b23b771c4f145be13fc Mon Sep 17 00:00:00 2001
-From: Martin Wilck <mwilck@suse.com>
-Date: Fri, 2 Jun 2023 15:16:58 +0200
-Subject: [PATCH] gtkmountoperation: avoid SEGV after bad password input
-
-I observed the following nautilus crash below after trying to access an SMB
-share and mistyping my password (it also happens if mounting the SMB share
-fails for other reasons after entering a password). The crash happens when
-the password entry window pops up the second time, in this code path, at
-the 7th element of priv->user_widgets:
-
-458 pw_dialog_anonymous_toggled (GtkWidget *widget,
-459 GtkMountOperation *operation)
-460 {
-...
-472 for (l = priv->user_widgets; l != NULL; l = l->next)
-473 {
-474 gtk_widget_set_sensitive (GTK_WIDGET (l->data), !priv->anonymous);
-475 }
-
-The broken element had l->data = 0xaaaaaaaaaaaa, which means the pointer had
-been freed.
-
-The broken list entries were at the of the list because when
-gtk_mount_operation_ask_password_do_gtk() constucts the pop-up the 2nd time,
-it prepends new widgets:
-
-gtk_mount_operation_ask_password_do_gtk()
- table_add_entry
- operation->priv->user_widgets = g_list_prepend (operation->priv->user_widgets, entry);
-
-The problem is that in pw_dialog_got_response(), the widget is destroyed,
-which also destroys all child widgets, but the priv->user_widgets list is
-neither freed nor set to NULL.
-
-Fix it.
----
- gtk/gtkmountoperation.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/gtk/gtkmountoperation.c b/gtk/gtkmountoperation.c
-index 2cf7e75d584..e6b50c9b6ef 100644
---- a/gtk/gtkmountoperation.c
-+++ b/gtk/gtkmountoperation.c
-@@ -380,6 +380,11 @@ pw_dialog_got_response (GtkDialog *dialog,
- else
- g_mount_operation_reply (op, G_MOUNT_OPERATION_ABORTED);
-
-+ if (priv->user_widgets)
-+ {
-+ g_list_free (priv->user_widgets);
-+ priv->user_widgets = NULL;
-+ }
- priv->dialog = NULL;
- g_object_notify (G_OBJECT (op), "is-showing");
- gtk_widget_destroy (GTK_WIDGET (dialog));
---
-GitLab
-
diff --git a/main/gtk+3.0/stylus-map.patch b/main/gtk+3.0/stylus-map.patch
deleted file mode 100644
index bbe31be7ffa..00000000000
--- a/main/gtk+3.0/stylus-map.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Patch-Source: https://gitlab.gnome.org/GNOME/gtk/-/commit/e205bdaa89342bb1d47527be0cdfbc1bfb0f5f59
-https://gitlab.gnome.org/GNOME/gtk/-/issues/5935
---
-From e205bdaa89342bb1d47527be0cdfbc1bfb0f5f59 Mon Sep 17 00:00:00 2001
-From: Carlos Garnacho <carlosg@gnome.org>
-Date: Wed, 5 Jul 2023 16:24:03 +0200
-Subject: [PATCH] gdk/wayland: Switch behavior of BTN_STYLUS/STYLUS2 as
- middle/right click
-
-This mapping of stylus evdev input event codes into GDK button numbers
-makes gdk/wayland inconsistent with gdk/x11, so depending on the backend
-the same button middle-click pastes or right-click pops up menus.
-
-Make the wayland backend consistent with X11, so that a GNOME wayland
-session gets these buttons consistently mapped across all kinds of
-clients.
-
-(cherry-picked from commit e28ff79bec53ecd56885390ba4a66019cde598c6)
----
- gdk/wayland/gdkdevice-wayland.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
-index a1e4771a74e..38c2e61efad 100644
---- a/gdk/wayland/gdkdevice-wayland.c
-+++ b/gdk/wayland/gdkdevice-wayland.c
-@@ -3963,9 +3963,9 @@ tablet_tool_handle_button (void *data,
- tablet->pointer_info.press_serial = serial;
-
- if (button == BTN_STYLUS)
-- n_button = GDK_BUTTON_SECONDARY;
-- else if (button == BTN_STYLUS2)
- n_button = GDK_BUTTON_MIDDLE;
-+ else if (button == BTN_STYLUS2)
-+ n_button = GDK_BUTTON_SECONDARY;
- else if (button == BTN_STYLUS3)
- n_button = 8; /* Back */
- else
---
-GitLab
-
diff --git a/main/gtk+3.0/x11-perf.patch b/main/gtk+3.0/x11-perf.patch
deleted file mode 100644
index cc07cf8b470..00000000000
--- a/main/gtk+3.0/x11-perf.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-Patch-Source: https://gitlab.gnome.org/GNOME/gtk/-/commit/7237f5d0eb5ec2f1411a28b9394ff4c4472f4d8b
-https://gitlab.gnome.org/GNOME/gtk/-/issues/4704
---
-From 7237f5d0eb5ec2f1411a28b9394ff4c4472f4d8b Mon Sep 17 00:00:00 2001
-From: henry <henry.riehl@btinternet.com>
-Date: Wed, 31 May 2023 23:05:19 +0100
-Subject: [PATCH] This commit fixes a performance issue on X11 systems in
- regards to drawing on an OpenGL surface in GTK/GDK.
-
-This commit fixes a performance issue on X11 systems making use of the gdk_cairo_draw_from_gl() function in regards
-to drawing on an OpenGL surface in GTK/GDK. Specifically, this fix removes the slow X11 codepath that was used when
-executing the gdk_cairo_draw_from_gl() function because it was completely uneeded. I tested the before and after on
-Flutter and GTK apps making use of the OpenGL rendering and can confirm that there is no behaviour and visual
-difference. This change is also specific to drawings that make use of textures. The render buffer code path has
-been left completely unmodified.
-
-Closes #4704
----
- gdk/gdkgl.c | 30 +-----------------------------
- 1 file changed, 1 insertion(+), 29 deletions(-)
-
-diff --git a/gdk/gdkgl.c b/gdk/gdkgl.c
-index 666b5e81335..86b169039a8 100644
---- a/gdk/gdkgl.c
-+++ b/gdk/gdkgl.c
-@@ -392,11 +392,7 @@ gdk_cairo_draw_from_gl (cairo_t *cr,
- else if (source_type == GL_TEXTURE)
- {
- glBindTexture (GL_TEXTURE_2D, source);
--
-- if (gdk_gl_context_get_use_es (paint_context))
-- alpha_size = 1;
-- else
-- glGetTexLevelParameteriv (GL_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_SIZE, &alpha_size);
-+ glGetTexLevelParameteriv (GL_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_SIZE, &alpha_size);
- }
- else
- {
-@@ -540,30 +536,6 @@ gdk_cairo_draw_from_gl (cairo_t *cr,
- /* Translate to impl coords */
- cairo_region_translate (clip_region, dx, dy);
-
-- if (alpha_size != 0)
-- {
-- cairo_region_t *opaque_region, *blend_region;
--
-- opaque_region = cairo_region_copy (clip_region);
-- cairo_region_subtract (opaque_region, impl_window->current_paint.flushed_region);
-- cairo_region_subtract (opaque_region, impl_window->current_paint.need_blend_region);
--
-- if (!cairo_region_is_empty (opaque_region))
-- gdk_gl_texture_from_surface (impl_window->current_paint.surface,
-- opaque_region);
--
-- blend_region = cairo_region_copy (clip_region);
-- cairo_region_intersect (blend_region, impl_window->current_paint.need_blend_region);
--
-- glEnable (GL_BLEND);
-- if (!cairo_region_is_empty (blend_region))
-- gdk_gl_texture_from_surface (impl_window->current_paint.surface,
-- blend_region);
--
-- cairo_region_destroy (opaque_region);
-- cairo_region_destroy (blend_region);
-- }
--
- glBindTexture (GL_TEXTURE_2D, source);
-
- if (gdk_gl_context_get_use_es (paint_context))
---
-GitLab
-