1 |
From b39b84c683e29086b999b835c09ac4ee5a960852 Mon Sep 17 00:00:00 2001 |
2 |
From: Ray Strode <rstrode@redhat.com> |
3 |
Date: Thu, 14 Sep 2017 14:46:13 -0400 |
4 |
Subject: [PATCH] gtk-embed: ensure we only listen for window-created events |
5 |
once |
6 |
|
7 |
If a tray icon gets a mapped and unmapped and the mapped again |
8 |
in quick succession, we can end up with multiple handlers |
9 |
listening for window creation events. |
10 |
|
11 |
This commit tries to guard against that by only listening for |
12 |
window-created events when we don't know the actor associated |
13 |
with the icon. |
14 |
|
15 |
https://bugzilla.gnome.org/show_bug.cgi?id=787361 |
16 |
--- |
17 |
src/shell-gtk-embed.c | 15 ++++++++------- |
18 |
1 file changed, 8 insertions(+), 7 deletions(-) |
19 |
|
20 |
diff --git a/src/shell-gtk-embed.c b/src/shell-gtk-embed.c |
21 |
index 176b41320..54061046b 100644 |
22 |
--- a/src/shell-gtk-embed.c |
23 |
+++ b/src/shell-gtk-embed.c |
24 |
@@ -124,13 +124,14 @@ shell_gtk_embed_on_window_mapped (GtkWidget *object, |
25 |
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed); |
26 |
MetaDisplay *display = shell_global_get_display (shell_global_get ()); |
27 |
|
28 |
- /* Listen for new windows so we can detect when Mutter has |
29 |
- created a MutterWindow for this window */ |
30 |
- priv->window_created_handler = |
31 |
- g_signal_connect (display, |
32 |
- "window-created", |
33 |
- G_CALLBACK (shell_gtk_embed_window_created_cb), |
34 |
- embed); |
35 |
+ if (priv->window_created_handler == 0 && priv->window_actor == NULL) |
36 |
+ /* Listen for new windows so we can detect when Mutter has |
37 |
+ created a MutterWindow for this window */ |
38 |
+ priv->window_created_handler = |
39 |
+ g_signal_connect (display, |
40 |
+ "window-created", |
41 |
+ G_CALLBACK (shell_gtk_embed_window_created_cb), |
42 |
+ embed); |
43 |
} |
44 |
|
45 |
static void |
46 |
-- |
47 |
2.13.5 |
48 |
|