|
Florian Müllner |
f7f80c7 |
From b39b84c683e29086b999b835c09ac4ee5a960852 Mon Sep 17 00:00:00 2001
|
|
Florian Müllner |
f7f80c7 |
From: Ray Strode <rstrode@redhat.com>
|
|
Florian Müllner |
f7f80c7 |
Date: Thu, 14 Sep 2017 14:46:13 -0400
|
|
Florian Müllner |
f7f80c7 |
Subject: [PATCH] gtk-embed: ensure we only listen for window-created events
|
|
Florian Müllner |
f7f80c7 |
once
|
|
Florian Müllner |
f7f80c7 |
|
|
Florian Müllner |
f7f80c7 |
If a tray icon gets a mapped and unmapped and the mapped again
|
|
Florian Müllner |
f7f80c7 |
in quick succession, we can end up with multiple handlers
|
|
Florian Müllner |
f7f80c7 |
listening for window creation events.
|
|
Florian Müllner |
f7f80c7 |
|
|
Florian Müllner |
f7f80c7 |
This commit tries to guard against that by only listening for
|
|
Florian Müllner |
f7f80c7 |
window-created events when we don't know the actor associated
|
|
Florian Müllner |
f7f80c7 |
with the icon.
|
|
Florian Müllner |
f7f80c7 |
|
|
Florian Müllner |
f7f80c7 |
https://bugzilla.gnome.org/show_bug.cgi?id=787361
|
|
Florian Müllner |
f7f80c7 |
---
|
|
Florian Müllner |
f7f80c7 |
src/shell-gtk-embed.c | 15 ++++++++-------
|
|
Florian Müllner |
f7f80c7 |
1 file changed, 8 insertions(+), 7 deletions(-)
|
|
Florian Müllner |
f7f80c7 |
|
|
Florian Müllner |
f7f80c7 |
diff --git a/src/shell-gtk-embed.c b/src/shell-gtk-embed.c
|
|
Florian Müllner |
f7f80c7 |
index 176b41320..54061046b 100644
|
|
Florian Müllner |
f7f80c7 |
--- a/src/shell-gtk-embed.c
|
|
Florian Müllner |
f7f80c7 |
+++ b/src/shell-gtk-embed.c
|
|
Florian Müllner |
f7f80c7 |
@@ -124,13 +124,14 @@ shell_gtk_embed_on_window_mapped (GtkWidget *object,
|
|
Florian Müllner |
f7f80c7 |
ShellGtkEmbedPrivate *priv = shell_gtk_embed_get_instance_private (embed);
|
|
Florian Müllner |
f7f80c7 |
MetaDisplay *display = shell_global_get_display (shell_global_get ());
|
|
Florian Müllner |
f7f80c7 |
|
|
Florian Müllner |
f7f80c7 |
- /* Listen for new windows so we can detect when Mutter has
|
|
Florian Müllner |
f7f80c7 |
- created a MutterWindow for this window */
|
|
Florian Müllner |
f7f80c7 |
- priv->window_created_handler =
|
|
Florian Müllner |
f7f80c7 |
- g_signal_connect (display,
|
|
Florian Müllner |
f7f80c7 |
- "window-created",
|
|
Florian Müllner |
f7f80c7 |
- G_CALLBACK (shell_gtk_embed_window_created_cb),
|
|
Florian Müllner |
f7f80c7 |
- embed);
|
|
Florian Müllner |
f7f80c7 |
+ if (priv->window_created_handler == 0 && priv->window_actor == NULL)
|
|
Florian Müllner |
f7f80c7 |
+ /* Listen for new windows so we can detect when Mutter has
|
|
Florian Müllner |
f7f80c7 |
+ created a MutterWindow for this window */
|
|
Florian Müllner |
f7f80c7 |
+ priv->window_created_handler =
|
|
Florian Müllner |
f7f80c7 |
+ g_signal_connect (display,
|
|
Florian Müllner |
f7f80c7 |
+ "window-created",
|
|
Florian Müllner |
f7f80c7 |
+ G_CALLBACK (shell_gtk_embed_window_created_cb),
|
|
Florian Müllner |
f7f80c7 |
+ embed);
|
|
Florian Müllner |
f7f80c7 |
}
|
|
Florian Müllner |
f7f80c7 |
|
|
Florian Müllner |
f7f80c7 |
static void
|
|
Florian Müllner |
f7f80c7 |
--
|
|
Florian Müllner |
f7f80c7 |
2.13.5
|
|
Florian Müllner |
f7f80c7 |
|