# 2008-01-18 Herbert Straub # The password dialog cannot map a Return keypress event to Connect. # This patch add this function. # http://www.linuxhacker.at --- src/gq-login-dialog.c 2008-01-18 22:28:09.000000000 +0100 +++ src/gq-login-dialog.c.new 2008-01-18 22:26:41.000000000 +0100 @@ -24,6 +24,8 @@ #include "gq-login-dialog.h" #include +#include +#include #include #include #include @@ -45,6 +47,7 @@ GtkEntry* entry_bind_pw; GtkLabel* label_bind_type; GtkCheckButton* checkbutton_save_password; + GtkButton* OK; }; #define P(i) (G_TYPE_INSTANCE_GET_PRIVATE((i), GQ_TYPE_LOGIN_DIALOG, struct GqLoginDialogPrivate)) @@ -116,7 +119,18 @@ g_free(string); } -static void +static gboolean +dialog_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer data) +{ + if (event->keyval == GDK_Return) { + g_signal_emit_by_name(P(data)->OK, "clicked"); + return TRUE; + } + + return FALSE; +} + +void login_dialog_set_server(GqLoginDialog* self, GqServer * server) { @@ -126,7 +140,8 @@ if(server == P(self)->server) { return; } - + + g_signal_connect(G_OBJECT(self), "key-press-event", G_CALLBACK(dialog_key_press_cb), self); if(P(self)->server) { g_signal_handlers_disconnect_by_func(P(self)->server, login_dialog_update_bind_dn, @@ -152,6 +167,8 @@ g_signal_connect_swapped(P(self)->server, "notify::host", G_CALLBACK(login_dialog_update_server_name), self); + + login_dialog_update_bind_dn(self); login_dialog_update_bind_type(self); login_dialog_update_server_name(self); @@ -188,6 +205,7 @@ gtk_size_group_add_widget(group_right, glade_xml_get_widget(xml, "input_bind_mode")); gtk_size_group_add_widget(group_right, glade_xml_get_widget(xml, "input_password")); + if(!gq_keyring_can_save()) { gtk_widget_set_sensitive(glade_xml_get_widget(xml, "checkbutton_save_password"), FALSE); @@ -199,6 +217,7 @@ P(dialog)->label_hostname = GTK_LABEL(glade_xml_get_widget(xml, "input_hostname")); P(dialog)->checkbutton_save_password = GTK_CHECK_BUTTON(glade_xml_get_widget(xml, "checkbutton_save_password")); + P(dialog)->OK = GTK_BUTTON(glade_xml_get_widget(xml, "button4")); } static void