Subject: fix keyboard grabbing race in pinentry-gtk2
Author: Ed Martin <edman007x@mac.com>
Origin: other, http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=401957#27
Bug-Debian: http://bugs.debian.org/401957

--- a/gtk+-2/pinentry-gtk-2.c
+++ b/gtk+-2/pinentry-gtk-2.c
@@ -295,8 +295,11 @@ create_window (int confirm_mode)
 	g_signal_connect (G_OBJECT (win),
 			  "realize", G_CALLBACK (make_transient), NULL);
 
+      /* We need to grab the keyboard when its visible! not when its mapped (there is a difference). */
+      g_object_set(G_OBJECT(win), "events", GDK_VISIBILITY_NOTIFY_MASK | GDK_STRUCTURE_MASK, NULL);
+
       g_signal_connect (G_OBJECT (win),
-			pinentry->grab ? "map-event" : "focus-in-event",
+			pinentry->grab ? "visibility-notify-event" : "focus-in-event",
 			G_CALLBACK (grab_keyboard), NULL);
       g_signal_connect (G_OBJECT (win),
 			pinentry->grab ? "unmap-event" : "focus-out-event",
