View | Details | Raw Unified | Return to bug 103395
Collapse All | Expand All

(-)files/patch-grab-keyboard 19 Sep 2006 06:06:35 -0000 (+58 lines)
Line 0 Link Here
1
--- contrib/gnome-ssh-askpass2.c.orig  Tue Sep 19 09:58:45 2006
2
+++ contrib/gnome-ssh-askpass2.c       Tue Sep 19 10:03:27 2006
3
@@ -88,12 +88,13 @@
4
 {
5
       const char *failed;
6
       char *passphrase, *local;
7
-      int result, grab_tries, grab_server, grab_pointer;
8
+      int result, grab_tries, grab_server, grab_pointer, grab_keyboard;
9
       GtkWidget *dialog, *entry;
10
       GdkGrabStatus status;
11
 
12
       grab_server = (getenv("GNOME_SSH_ASKPASS_GRAB_SERVER") != NULL);
13
       grab_pointer = (getenv("GNOME_SSH_ASKPASS_GRAB_POINTER") != NULL);
14
+      grab_keyboard = (getenv("GNOME_SSH_ASKPASS_GRAB_KEYBOARD") != NULL);
15
       grab_tries = 0;
16
 
17
       dialog = gtk_message_dialog_new(NULL, 0,
18
@@ -135,17 +136,21 @@
19
                       }
20
               }
21
       }
22
-      for(;;) {
23
-              status = gdk_keyboard_grab((GTK_WIDGET(dialog))->window,
24
-                 FALSE, GDK_CURRENT_TIME);
25
-              if (status == GDK_GRAB_SUCCESS)
26
-                      break;
27
-              usleep(GRAB_WAIT * 1000);
28
-              if (++grab_tries > GRAB_TRIES) {
29
-                      failed = "keyboard";
30
-                      goto nograbkb;
31
+
32
+      if (grab_keyboard) {
33
+              for(;;) {
34
+                      status = gdk_keyboard_grab((GTK_WIDGET(dialog))->window,
35
+                         FALSE, GDK_CURRENT_TIME);
36
+                      if (status == GDK_GRAB_SUCCESS)
37
+                              break;
38
+                      usleep(GRAB_WAIT * 1000);
39
+                      if (++grab_tries > GRAB_TRIES) {
40
+                              failed = "keyboard";
41
+                              goto nograbkb;
42
+                      }
43
               }
44
       }
45
+
46
       if (grab_server) {
47
               gdk_x11_grab_server();
48
       }
49
@@ -157,7 +162,8 @@
50
               XUngrabServer(GDK_DISPLAY());
51
       if (grab_pointer)
52
               gdk_pointer_ungrab(GDK_CURRENT_TIME);
53
-      gdk_keyboard_ungrab(GDK_CURRENT_TIME);
54
+      if (grab_keyboard)
55
+              gdk_keyboard_ungrab(GDK_CURRENT_TIME);
56
       gdk_flush();
57
 
58
       /* Report passphrase if user selected OK */

Return to bug 103395