diff options
author | Marcus Lundblad <malu@pidgin.im> | 2010-08-31 18:28:10 +0000 |
---|---|---|
committer | Marcus Lundblad <malu@pidgin.im> | 2010-08-31 18:28:10 +0000 |
commit | 5fc609e8fed5539079413d29fa6c23167e9cc718 (patch) | |
tree | 09fe88b7b9c8ad75a3980b876ca970adc0d458f3 /finch/gntrequest.c | |
parent | 24f0a2f2edff9c48f57dd3607ad17b709470a1ff (diff) | |
parent | d96df2d0de45a2b4b0dc5e0dfddb2e13b3c8bb44 (diff) | |
download | pidgin-cpw.malu.xmpp.google_refactor.tar.gz |
propagate from branch 'im.pidgin.pidgin' (head f9599fe0199c86262cea569a5dfb4081df23691d)cpw.malu.xmpp.google_refactor
to branch 'im.pidgin.cpw.malu.xmpp.google_refactor' (head 93935229617363d8fdaf50a9a350c93f0987f66c)
Diffstat (limited to 'finch/gntrequest.c')
-rw-r--r-- | finch/gntrequest.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/finch/gntrequest.c b/finch/gntrequest.c index 243c16e879..4ba5a279de 100644 --- a/finch/gntrequest.c +++ b/finch/gntrequest.c @@ -349,10 +349,9 @@ request_fields_cb(GntWidget *button, PurpleRequestFields *fields) } else if (type == PURPLE_REQUEST_FIELD_LIST) { - GList *list = NULL; + GList *list = NULL, *iter; if (purple_request_field_list_get_multi_select(field)) { - GList *iter; GntWidget *tree = FINCH_GET_DATA(field); iter = purple_request_field_list_get_items(field); @@ -361,14 +360,23 @@ request_fields_cb(GntWidget *button, PurpleRequestFields *fields) const char *text = iter->data; gpointer key = purple_request_field_list_get_data(field, text); if (gnt_tree_get_choice(GNT_TREE(tree), key)) - list = g_list_prepend(list, key); + list = g_list_prepend(list, (gpointer)text); } } else { GntWidget *combo = FINCH_GET_DATA(field); gpointer data = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); - list = g_list_append(list, data); + + iter = purple_request_field_list_get_items(field); + for (; iter; iter = iter->next) { + const char *text = iter->data; + gpointer key = purple_request_field_list_get_data(field, text); + if (key == data) { + list = g_list_prepend(list, (gpointer)text); + break; + } + } } purple_request_field_list_set_selected(field, list); @@ -815,7 +823,7 @@ void finch_request_save_in_prefs(gpointer null, PurpleRequestFields *allfields) for (list = purple_request_fields_get_groups(allfields); list; list = list->next) { PurpleRequestFieldGroup *group = list->data; GList *fields = purple_request_field_group_get_fields(group); - + for (; fields ; fields = fields->next) { PurpleRequestField *field = fields->data; PurpleRequestFieldType type = purple_request_field_get_type(field); @@ -826,6 +834,7 @@ void finch_request_save_in_prefs(gpointer null, PurpleRequestFields *allfields) switch (type) { case PURPLE_REQUEST_FIELD_LIST: val = purple_request_field_list_get_selected(field)->data; + val = purple_request_field_list_get_data(field, val); break; case PURPLE_REQUEST_FIELD_BOOLEAN: val = GINT_TO_POINTER(purple_request_field_bool_get_value(field)); |