#endif
char *passphrase;
int passlen, passsize;
-#if GTK_CHECK_VERSION(3,0,0)
+#if GTK_CHECK_VERSION(3,20,0)
+ GdkSeat *seat; /* for gdk_seat_grab */
+#elif GTK_CHECK_VERSION(3,0,0)
GdkDevice *keyboard; /* for gdk_device_grab */
#endif
};
{
int ret;
-#if GTK_CHECK_VERSION(3,0,0)
+#if GTK_CHECK_VERSION(3,20,0)
/*
- * Grabbing the keyboard is quite complicated in GTK 3.
+ * Grabbing the keyboard in GTK 3.20 requires the new notion of
+ * GdkSeat.
+ */
+ GdkSeat *seat;
+
+ seat = gdk_display_get_default_seat
+ (gtk_widget_get_display(ctx->dialog));
+ if (!seat)
+ return FALSE;
+
+ ctx->seat = seat;
+ ret = gdk_seat_grab(seat, gtk_widget_get_window(ctx->dialog),
+ GDK_SEAT_CAPABILITY_KEYBOARD,
+ TRUE, NULL, NULL, NULL, NULL);
+#elif GTK_CHECK_VERSION(3,0,0)
+ /*
+ * And it has to be done differently again prior to GTK 3.20.
*/
GdkDeviceManager *dm;
GdkDevice *pointer, *keyboard;
gtk_window_set_title(GTK_WINDOW(ctx->dialog), window_title);
gtk_window_set_position(GTK_WINDOW(ctx->dialog), GTK_WIN_POS_CENTER);
ctx->promptlabel = gtk_label_new(prompt_text);
+ align_label_left(GTK_LABEL(ctx->promptlabel));
+ gtk_widget_show(ctx->promptlabel);
gtk_label_set_line_wrap(GTK_LABEL(ctx->promptlabel), TRUE);
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_label_set_width_chars(GTK_LABEL(ctx->promptlabel), 48);
+#endif
our_dialog_add_to_content_area(GTK_WINDOW(ctx->dialog),
ctx->promptlabel, TRUE, TRUE, 0);
#if GTK_CHECK_VERSION(2,0,0)
G_CALLBACK(expose_area),
&ctx->drawingareas[i]);
#endif
+
+#if GTK_CHECK_VERSION(3,0,0)
+ g_object_set(G_OBJECT(ctx->drawingareas[i].area),
+ "margin-bottom", 8, (const char *)NULL);
+#endif
+
gtk_widget_show(ctx->drawingareas[i].area);
}
ctx->active_area = rand() % N_DRAWING_AREAS;
/*
* And now that we've got the keyboard grab, connect up our
- * keyboard handlers, and display the prompt.
+ * keyboard handlers.
*/
#if GTK_CHECK_VERSION(2,0,0)
g_signal_connect(G_OBJECT(ctx->imc), "commit",
gtk_im_context_set_client_window(ctx->imc,
gtk_widget_get_window(ctx->dialog));
#endif
- gtk_widget_show(ctx->promptlabel);
return NULL;
}
static void gtk_askpass_cleanup(struct askpass_ctx *ctx)
{
-#if GTK_CHECK_VERSION(3,0,0)
+#if GTK_CHECK_VERSION(3,20,0)
+ gdk_seat_ungrab(ctx->seat);
+#elif GTK_CHECK_VERSION(3,0,0)
gdk_device_ungrab(ctx->keyboard, GDK_CURRENT_TIME);
#else
gdk_keyboard_ungrab(GDK_CURRENT_TIME);
ret = dupprintf("usage: %s <prompt text>", argv[0]);
} else {
srand(time(NULL));
- ret = gtk_askpass_main(argv[1], &success);
+ ret = gtk_askpass_main(NULL, "Enter passphrase", argv[1], &success);
}
if (!success) {