diff -r 1b5ce0f4302d -r 1a89a067a0d5 finch/gntrequest.c --- a/finch/gntrequest.c Fri Mar 10 01:15:41 2023 -0600 +++ b/finch/gntrequest.c Fri Mar 10 01:16:40 2023 -0600 @@ -299,13 +299,15 @@ "finch-ui-data"); gboolean value = gnt_check_box_get_checked(GNT_CHECK_BOX(check)); purple_request_field_bool_set_value(field, value); - } - else if (type == PURPLE_REQUEST_FIELD_STRING) - { + } else if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { GntWidget *entry = g_object_get_data(G_OBJECT(field), "finch-ui-data"); const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); - purple_request_field_string_set_value(field, (text && *text) ? text : NULL); + if(purple_strempty(text)) { + text = NULL; + } + purple_request_field_string_set_value(PURPLE_REQUEST_FIELD_STRING(field), + text); } else if (type == PURPLE_REQUEST_FIELD_INTEGER) { @@ -424,11 +426,12 @@ static GntWidget* create_string_field(PurpleRequestField *field, GntWidget **username) { + PurpleRequestFieldString *strfield = PURPLE_REQUEST_FIELD_STRING(field); const char *hint = purple_request_field_get_type_hint(field); GntWidget *entry = gnt_entry_new( - purple_request_field_string_get_default_value(field)); + purple_request_field_string_get_default_value(strfield)); gnt_entry_set_masked(GNT_ENTRY(entry), - purple_request_field_string_is_masked(field)); + purple_request_field_string_is_masked(strfield)); if (hint && g_str_has_prefix(hint, "screenname")) { PurpleBlistNode *node = purple_blist_get_default_root(); gboolean offline = g_str_has_suffix(hint, "all"); @@ -659,7 +662,7 @@ if (type == PURPLE_REQUEST_FIELD_BOOLEAN) { widget = create_boolean_field(field); - } else if (type == PURPLE_REQUEST_FIELD_STRING) { + } else if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { widget = create_string_field(field, &username); } else if (type == PURPLE_REQUEST_FIELD_INTEGER) { widget = create_integer_field(field); @@ -870,6 +873,10 @@ gpointer val = NULL; const char *id = purple_request_field_get_id(field); + if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { + PurpleRequestFieldString *sfield = PURPLE_REQUEST_FIELD_STRING(field); + val = (gpointer)purple_request_field_string_get_value(sfield); + } else { switch (type) { case PURPLE_REQUEST_FIELD_LIST: val = purple_request_field_list_get_selected(field)->data; @@ -881,12 +888,10 @@ case PURPLE_REQUEST_FIELD_INTEGER: val = GINT_TO_POINTER(purple_request_field_int_get_value(field)); break; - case PURPLE_REQUEST_FIELD_STRING: - val = (gpointer)purple_request_field_string_get_value(field); - break; default: break; } + } pt = purple_prefs_get_pref_type(id); switch (pt) { @@ -917,16 +922,15 @@ GntWidget *finch_request_field_get_widget(PurpleRequestField *field) { GntWidget *ret = NULL; - if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) { + if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { + ret = create_string_field(field, NULL); + } else if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) { ret = create_account_field(field); } else { switch (purple_request_field_get_field_type(field)) { case PURPLE_REQUEST_FIELD_BOOLEAN: ret = create_boolean_field(field); break; - case PURPLE_REQUEST_FIELD_STRING: - ret = create_string_field(field, NULL); - break; case PURPLE_REQUEST_FIELD_INTEGER: ret = create_integer_field(field); break;