summaryrefslogtreecommitdiff
path: root/finch/gntrequest.c
diff options
context:
space:
mode:
authorMarcus Lundblad <malu@pidgin.im>2010-08-31 18:28:10 +0000
committerMarcus Lundblad <malu@pidgin.im>2010-08-31 18:28:10 +0000
commit5fc609e8fed5539079413d29fa6c23167e9cc718 (patch)
tree09fe88b7b9c8ad75a3980b876ca970adc0d458f3 /finch/gntrequest.c
parent24f0a2f2edff9c48f57dd3607ad17b709470a1ff (diff)
parentd96df2d0de45a2b4b0dc5e0dfddb2e13b3c8bb44 (diff)
downloadpidgin-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.c19
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));