diff -r eed15b8d51a1 -r c1b0e75051e3 pidgin/gtkrequest.c --- a/pidgin/gtkrequest.c Thu Oct 24 23:56:44 2013 +0530 +++ b/pidgin/gtkrequest.c Fri Oct 25 00:35:00 2013 +0530 @@ -1073,6 +1073,7 @@ PurpleRequestFieldGroup *group; PurpleRequestFields *fields; PidginRequestData *req_data; + const GList *it; group = purple_request_field_get_group(field); fields = purple_request_field_group_get_fields_list(group); @@ -1081,6 +1082,20 @@ gtk_widget_set_sensitive(req_data->ok_button, purple_request_fields_all_required_filled(fields) && purple_request_fields_all_valid(fields)); + + it = purple_request_fields_get_autosensitive(fields); + for (; it != NULL; it = g_list_next(it)) { + PurpleRequestField *field = it->data; + GtkWidget *widget = purple_request_field_get_ui_data(field); + gboolean sensitive; + + sensitive = purple_request_field_is_sensitive(field); + gtk_widget_set_sensitive(widget, sensitive); + + /* XXX: and what about multiline? */ + if (GTK_IS_EDITABLE(widget)) + gtk_editable_set_editable(GTK_EDITABLE(widget), sensitive); + } } static void @@ -1138,7 +1153,7 @@ gboolean is_editable; value = purple_request_field_string_get_default_value(field); - is_editable = purple_request_field_string_is_editable(field); + is_editable = purple_request_field_is_sensitive(field); if (purple_request_field_string_is_multiline(field)) { @@ -1167,7 +1182,6 @@ gtk_widget_set_tooltip_text(textview, purple_request_field_get_tooltip(field)); gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), is_editable); - gtk_widget_set_sensitive(textview, is_editable); g_signal_connect(G_OBJECT(textview), "focus-out-event", G_CALLBACK(field_string_focus_out_cb), field); @@ -1198,7 +1212,6 @@ } gtk_editable_set_editable(GTK_EDITABLE(widget), is_editable); - gtk_widget_set_sensitive(widget, is_editable); g_signal_connect(G_OBJECT(widget), "focus-out-event", G_CALLBACK(field_string_focus_out_cb), field); @@ -1876,6 +1889,9 @@ continue; } + gtk_widget_set_sensitive(widget, + purple_request_field_is_sensitive(field)); + if (label) gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);