|
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 */ |