diff options
author | Matthias Clasen <mclasen@redhat.com> | 2016-11-08 13:37:12 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2016-11-08 13:37:12 -0500 |
commit | 3f1dd6f226c7d446d7b1330341bff91f880dc29b (patch) | |
tree | 64b0b7ce1c7bc8f06e1fb1ff3504621547fdbf35 | |
parent | Update to 3.22.2 (diff) | |
download | gtk3-classic-build-gtk3-3f1dd6f226c7d446d7b1330341bff91f880dc29b.tar.gz gtk3-classic-build-gtk3-3f1dd6f226c7d446d7b1330341bff91f880dc29b.tar.bz2 gtk3-classic-build-gtk3-3f1dd6f226c7d446d7b1330341bff91f880dc29b.zip |
Fix 1376471
-rw-r--r-- | 0001-gdkdisplay-wayland-Add-API-to-set-startup-notificati.patch | 76 | ||||
-rw-r--r-- | 0002-wayland-Set-startup-ID-from-GApplication-platform-da.patch | 48 | ||||
-rw-r--r-- | gtk3.spec | 10 |
3 files changed, 133 insertions, 1 deletions
diff --git a/0001-gdkdisplay-wayland-Add-API-to-set-startup-notificati.patch b/0001-gdkdisplay-wayland-Add-API-to-set-startup-notificati.patch new file mode 100644 index 0000000..74ba12d --- /dev/null +++ b/0001-gdkdisplay-wayland-Add-API-to-set-startup-notificati.patch @@ -0,0 +1,76 @@ +From 75ee402c6a1ae32678045d51b0a2beaef7ef2e9a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org> +Date: Mon, 10 Oct 2016 12:33:54 +0200 +Subject: [PATCH 1/2] gdkdisplay-wayland: Add API to set startup notification + ID + +For wayland clients, the startup notification ID is currently only set +from the DESKTOP_STARTUP_ID environment variable. As that variable is +only set for clients launched via exec(), startup completion is not +indicated correctly for DBus-activated applications unless an explicit +ID is specified - usually that is not the case, as the default handling +uses gdk_notify_startup_complete(). +To address this, we need API to set the startup notification ID from GTK +as we have on X11. + +https://bugzilla.gnome.org/show_bug.cgi?id=768531 +--- + gdk/wayland/gdkdisplay-wayland.c | 27 +++++++++++++++++++++++++++ + gdk/wayland/gdkwaylanddisplay.h | 3 +++ + 2 files changed, 30 insertions(+) + +diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c +index cddb2de..784cfbe 100644 +--- a/gdk/wayland/gdkdisplay-wayland.c ++++ b/gdk/wayland/gdkdisplay-wayland.c +@@ -796,6 +796,33 @@ gdk_wayland_display_get_next_serial (GdkDisplay *display) + return ++serial; + } + ++/** ++ * gdk_wayland_display_set_startup_notification_id: ++ * @display: (type GdkWaylandDisplay): a #GdkDisplay ++ * @startup_id: the startup notification ID (must be valid utf8) ++ * ++ * Sets the startup notification ID for a display. ++ * ++ * This is usually taken from the value of the DESKTOP_STARTUP_ID ++ * environment variable, but in some cases (such as the application not ++ * being launched using exec()) it can come from other sources. ++ * ++ * The startup ID is also what is used to signal that the startup is ++ * complete (for example, when opening a window or when calling ++ * gdk_notify_startup_complete()). ++ * ++ * Since: 3.22 ++ **/ ++void ++gdk_wayland_display_set_startup_notification_id (GdkDisplay *display, ++ const char *startup_id) ++{ ++ GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display); ++ ++ g_free (display_wayland->startup_notification_id); ++ display_wayland->startup_notification_id = g_strdup (startup_id); ++} ++ + static void + gdk_wayland_display_notify_startup_complete (GdkDisplay *display, + const gchar *startup_id) +diff --git a/gdk/wayland/gdkwaylanddisplay.h b/gdk/wayland/gdkwaylanddisplay.h +index a5587ca..f4b51c8 100644 +--- a/gdk/wayland/gdkwaylanddisplay.h ++++ b/gdk/wayland/gdkwaylanddisplay.h +@@ -53,6 +53,9 @@ GDK_AVAILABLE_IN_3_10 + void gdk_wayland_display_set_cursor_theme (GdkDisplay *display, + const gchar *theme, + gint size); ++GDK_AVAILABLE_IN_3_22 ++void gdk_wayland_display_set_startup_notification_id (GdkDisplay *display, ++ const char *startup_id); + + G_END_DECLS + +-- +2.9.3 + diff --git a/0002-wayland-Set-startup-ID-from-GApplication-platform-da.patch b/0002-wayland-Set-startup-ID-from-GApplication-platform-da.patch new file mode 100644 index 0000000..9001efe --- /dev/null +++ b/0002-wayland-Set-startup-ID-from-GApplication-platform-da.patch @@ -0,0 +1,48 @@ +From 0bccddb2ffecd19eae74c8a053cac1b80353b197 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org> +Date: Mon, 10 Oct 2016 12:33:54 +0200 +Subject: [PATCH 2/2] wayland: Set startup ID from GApplication platform data + +The GApplication platform data may contain a startup ID that on X11 +is used to set the startup notification ID when activated. Do the +same on the wayland backend to make startup notifications work for +DBus-activated applications where the DESKTOP_STARTUP_ID environment +variable is not set. + +https://bugzilla.gnome.org/show_bug.cgi?id=768531 +--- + gtk/gtkapplication-wayland.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/gtk/gtkapplication-wayland.c b/gtk/gtkapplication-wayland.c +index 84df82c..221a1ad 100644 +--- a/gtk/gtkapplication-wayland.c ++++ b/gtk/gtkapplication-wayland.c +@@ -61,6 +61,17 @@ gtk_application_impl_wayland_handle_window_realize (GtkApplicationImpl *impl, + } + + static void ++gtk_application_impl_wayland_before_emit (GtkApplicationImpl *impl, ++ GVariant *platform_data) ++{ ++ const char *startup_notification_id = NULL; ++ ++ g_variant_lookup (platform_data, "desktop-startup-id", "&s", &startup_notification_id); ++ ++ gdk_wayland_display_set_startup_notification_id (gdk_display_get_default (), startup_notification_id); ++} ++ ++static void + gtk_application_impl_wayland_init (GtkApplicationImplWayland *wayland) + { + } +@@ -72,4 +83,6 @@ gtk_application_impl_wayland_class_init (GtkApplicationImplWaylandClass *class) + + impl_class->handle_window_realize = + gtk_application_impl_wayland_handle_window_realize; ++ impl_class->before_emit = ++ gtk_application_impl_wayland_before_emit; + } +-- +2.9.3 + @@ -18,13 +18,16 @@ Name: gtk3 Version: 3.22.2 -Release: 1%{?dist} +Release: 2%{?dist} Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X License: LGPLv2+ URL: http://www.gtk.org Source0: http://download.gnome.org/sources/gtk+/3.22/gtk+-%{version}.tar.xz +Patch0: 0001-gdkdisplay-wayland-Add-API-to-set-startup-notificati.patch +Patch1: 0002-wayland-Set-startup-ID-from-GApplication-platform-da.patch + BuildRequires: pkgconfig(atk) >= %{atk_version} BuildRequires: pkgconfig(atk-bridge-2.0) BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version} @@ -161,6 +164,8 @@ the functionality of the installed %{name} package. %prep %setup -q -n gtk+-%{version} +%patch0 -p1 +%patch1 -p1 %build (if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; CONFIGFLAGS=--enable-gtk-doc; fi; @@ -333,6 +338,9 @@ gtk-query-immodules-3.0-%{__isa_bits} --update-cache %{_datadir}/installed-tests %changelog +* Tue Nov 8 2016 Matthias Clasen <mclasen@redhat.com> - 3.22.2-2 +- Fix #1376471 + * Mon Oct 24 2016 Kalev Lember <klember@redhat.com> - 3.22.2-1 - Update to 3.22.2 |