summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--0001-gdkdisplay-wayland-Add-API-to-set-startup-notificati.patch76
-rw-r--r--0002-wayland-Set-startup-ID-from-GApplication-platform-da.patch48
-rw-r--r--gtk3.spec10
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
+
diff --git a/gtk3.spec b/gtk3.spec
index d3a0c3f..df17572 100644
--- a/gtk3.spec
+++ b/gtk3.spec
@@ -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
bgstack15