diff --git a/debian/patches/gdk-wayland-save-custom-xdg-activation-startup_id.patch b/debian/patches/gdk-wayland-save-custom-xdg-activation-startup_id.patch new file mode 100644 index 0000000000..26b953f069 --- /dev/null +++ b/debian/patches/gdk-wayland-save-custom-xdg-activation-startup_id.patch @@ -0,0 +1,39 @@ +From: Joan Bruguera +Date: Tue, 6 Dec 2022 23:51:28 +0000 +Subject: gdk/wayland: save custom xdg-activation startup_id + +We must save the startup id. in gdk_wayland_display_notify_startup_complete +which was set by a previous gtk_window_set_startup_id call so we can use it +later when presenting the window. + +Needed for activation of gnome-terminal (also needs patches on the application +side, see https://gitlab.gnome.org/GNOME/gnome-terminal/-/issues/7952). + +Fixes #5386 + +Signed-off-by: Joan Bruguera + +https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5301 +--- + gdk/wayland/gdkdisplay-wayland.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c +index ddf2bf3..7ce279d 100644 +--- a/gdk/wayland/gdkdisplay-wayland.c ++++ b/gdk/wayland/gdkdisplay-wayland.c +@@ -948,7 +948,13 @@ gdk_wayland_display_notify_startup_complete (GdkDisplay *display, + #ifdef HAVE_XDG_ACTIVATION + /* Will be signaled with focus activation */ + if (display_wayland->xdg_activation) +- return; ++ { ++ if (startup_id != NULL) ++ { ++ display_wayland->startup_notification_id = g_strdup (startup_id); ++ } ++ return; ++ } + #endif + + if (startup_id == NULL) diff --git a/debian/patches/series b/debian/patches/series index d29c734ad4..b4166bd9e7 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -13,3 +13,5 @@ docs-Use-main-branch-instead-of-master.patch 060_ignore-random-icons.patch reftest_compare_surfaces-Report-how-much-the-images-diffe.patch reftests-Allow-minor-differences-to-be-tolerated.patch +window-focus-on-window-show-for-wayland-activation.patch +gdk-wayland-save-custom-xdg-activation-startup_id.patch diff --git a/debian/patches/window-focus-on-window-show-for-wayland-activation.patch b/debian/patches/window-focus-on-window-show-for-wayland-activation.patch new file mode 100644 index 0000000000..de188bea61 --- /dev/null +++ b/debian/patches/window-focus-on-window-show-for-wayland-activation.patch @@ -0,0 +1,41 @@ +From: Joan Bruguera +Date: Tue, 6 Dec 2022 20:55:53 +0000 +Subject: window: focus on window show for wayland activation + +When using xdg_activation this is responsible for submitting +the activation token / startup id to the compositor. + +This supersedes 5dca6dce91b4413064c858ae011ea7b1e33421e2, which misses the case +where the window is shown with gtk_widget_show instead of gtk_window_present. +Note 5dca6dce91 was also accidentally missing on the xdg-activation GTK3 port. + +Fixes #5386 + +Signed-off-by: Joan Bruguera + +https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5301 +--- + gtk/gtkwindow.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c +index 5478e89..c87b17a 100644 +--- a/gtk/gtkwindow.c ++++ b/gtk/gtkwindow.c +@@ -6228,6 +6228,16 @@ gtk_window_show (GtkWidget *widget) + + if (priv->modal) + gtk_grab_add (widget); ++ ++#ifdef GDK_WINDOWING_WAYLAND ++ if (GDK_IS_WAYLAND_WINDOW (gtk_widget_get_window (widget))) ++ { ++ // Submits the activation token / startup id to the compositor ++ gdk_window_focus (gtk_widget_get_window (widget), priv->initial_timestamp); ++ // Use gtk_window_present's timestamp only once ++ priv->initial_timestamp = GDK_CURRENT_TIME; ++ } ++#endif + } + + static void