--- a/pidgin/gtkrequest.c Sun Mar 08 06:20:04 2009 +0000 +++ b/pidgin/gtkrequest.c Sun Mar 08 06:24:15 2009 +0000 @@ -384,6 +384,8 @@ gtk_imhtml_append_text(GTK_IMHTML(entry), default_value, GTK_IMHTML_NO_SCROLL); gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); gtk_widget_show(frame); + + gtk_imhtml_set_return_inserts_newline(GTK_IMHTML(entry)); } else { if (multiline) { @@ -682,15 +684,17 @@ static void req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field) { + PurpleRequestFieldGroup *group; PidginRequestData *req_data; const char *text = gtk_entry_get_text(GTK_ENTRY(entry)); purple_request_field_string_set_value(field, (*text == '\0' ? NULL : text)); - req_data = (PidginRequestData *)field->group->fields_list->ui_data; + group = purple_request_field_get_group(field); + req_data = (PidginRequestData *)group->fields_list->ui_data; gtk_widget_set_sensitive(req_data->ok_button, - purple_request_fields_all_required_filled(field->group->fields_list)); + purple_request_fields_all_required_filled(group->fields_list)); } static void @@ -711,7 +715,8 @@ if (purple_str_has_prefix(type_hint, "screenname")) { GtkWidget *optmenu = NULL; - GList *fields = field->group->fields; + PurpleRequestFieldGroup *group = purple_request_field_get_group(field); + GList *fields = group->fields; while (fields) { PurpleRequestField *fld = fields->data; @@ -722,9 +727,11 @@ const char *type_hint = purple_request_field_get_type_hint(fld); if (type_hint != NULL && strcmp(type_hint, "account") == 0) { - if (fld->ui_data == NULL) - fld->ui_data = create_account_field(fld); - optmenu = GTK_WIDGET(fld->ui_data); + optmenu = GTK_WIDGET(purple_request_field_get_ui_data(fld)); + if (optmenu == NULL) { + optmenu = GTK_WIDGET(create_account_field(fld)); + purple_request_field_set_ui_data(field, optmenu); + } break; } } @@ -1338,24 +1345,26 @@ gtk_widget_show(label); } - if (field->ui_data != NULL) - widget = GTK_WIDGET(field->ui_data); - else if (type == PURPLE_REQUEST_FIELD_STRING) - widget = create_string_field(field); - else if (type == PURPLE_REQUEST_FIELD_INTEGER) - widget = create_int_field(field); - else if (type == PURPLE_REQUEST_FIELD_BOOLEAN) - widget = create_bool_field(field); - else if (type == PURPLE_REQUEST_FIELD_CHOICE) - widget = create_choice_field(field); - else if (type == PURPLE_REQUEST_FIELD_LIST) - widget = create_list_field(field); - else if (type == PURPLE_REQUEST_FIELD_IMAGE) - widget = create_image_field(field); - else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) - widget = create_account_field(field); - else - continue; + widget = GTK_WIDGET(purple_request_field_get_ui_data(field)); + if (widget == NULL) + { + if (type == PURPLE_REQUEST_FIELD_STRING) + widget = create_string_field(field); + else if (type == PURPLE_REQUEST_FIELD_INTEGER) + widget = create_int_field(field); + else if (type == PURPLE_REQUEST_FIELD_BOOLEAN) + widget = create_bool_field(field); + else if (type == PURPLE_REQUEST_FIELD_CHOICE) + widget = create_choice_field(field); + else if (type == PURPLE_REQUEST_FIELD_LIST) + widget = create_list_field(field); + else if (type == PURPLE_REQUEST_FIELD_IMAGE) + widget = create_image_field(field); + else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) + widget = create_account_field(field); + else + continue; + } if (label) gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget); @@ -1400,7 +1409,7 @@ gtk_widget_show(widget); - field->ui_data = widget; + purple_request_field_set_ui_data(field, widget); } } }