summaryrefslogtreecommitdiff
path: root/0001-window-tracker-Emit-tracked-windows-changed-on-title.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-window-tracker-Emit-tracked-windows-changed-on-title.patch')
-rw-r--r--0001-window-tracker-Emit-tracked-windows-changed-on-title.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/0001-window-tracker-Emit-tracked-windows-changed-on-title.patch b/0001-window-tracker-Emit-tracked-windows-changed-on-title.patch
new file mode 100644
index 0000000..98fc45a
--- /dev/null
+++ b/0001-window-tracker-Emit-tracked-windows-changed-on-title.patch
@@ -0,0 +1,64 @@
+From a1d650ce2722fd154b047ce73fa23db205d823d2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
+Date: Mon, 12 Dec 2022 13:04:11 +0100
+Subject: [PATCH] window-tracker: Emit 'tracked-windows-changed' on title
+ changes
+
+This means the screen share window view gets updated also when the title
+of a window changes. This is important since it often changes shortly
+after mapping, which would otherwise go unnoticed by
+xdg-desktop-portal-gnome.
+
+An example is launching Files and it showing up as 'Loading..', or
+launching a terminal, and it not showing the proper title (current
+directory), but some place holder that is never visible on the
+application window.
+
+Adding it to the window tracker instead of in introspect.js itself is
+for convenience - there is no per window signal tracking there, and it
+already listens to the signal emissions about changed windows.
+
+Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2578>
+---
+ src/shell-window-tracker.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/src/shell-window-tracker.c b/src/shell-window-tracker.c
+index 991613ea3f..df357f81b7 100644
+--- a/src/shell-window-tracker.c
++++ b/src/shell-window-tracker.c
+@@ -524,6 +524,15 @@ on_wm_class_changed (MetaWindow *window,
+ tracked_window_changed (self, window);
+ }
+
++static void
++on_title_changed (MetaWindow *window,
++ GParamSpec *pspec,
++ gpointer user_data)
++{
++ ShellWindowTracker *self = SHELL_WINDOW_TRACKER (user_data);
++ tracked_window_changed (self, window);
++}
++
+ static void
+ on_gtk_application_id_changed (MetaWindow *window,
+ GParamSpec *pspec,
+@@ -554,6 +563,7 @@ track_window (ShellWindowTracker *self,
+ g_hash_table_insert (self->window_to_app, window, app);
+
+ g_signal_connect (window, "notify::wm-class", G_CALLBACK (on_wm_class_changed), self);
++ g_signal_connect (window, "notify::title", G_CALLBACK (on_title_changed), self);
+ g_signal_connect (window, "notify::gtk-application-id", G_CALLBACK (on_gtk_application_id_changed), self);
+ g_signal_connect (window, "unmanaged", G_CALLBACK (on_window_unmanaged), self);
+
+@@ -586,6 +596,7 @@ disassociate_window (ShellWindowTracker *self,
+
+ _shell_app_remove_window (app, window);
+ g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_wm_class_changed), self);
++ g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_title_changed), self);
+ g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_gtk_application_id_changed), self);
+ g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_window_unmanaged), self);
+
+--
+2.38.1
+