pidgin/gtkprefs.c

changeset 40781
65dbbd384c8e
parent 40765
a5381c20e802
child 40821
1cfdaf481246
equal deleted inserted replaced
40780:3c037af432c4 40781:65dbbd384c8e
571 { 571 {
572 va_list ap; 572 va_list ap;
573 GList *menuitems = NULL; 573 GList *menuitems = NULL;
574 GtkWidget *dropdown = NULL; 574 GtkWidget *dropdown = NULL;
575 char *name; 575 char *name;
576 int int_value;
577 const char *str_value;
578 576
579 g_return_val_if_fail(type == PURPLE_PREF_BOOLEAN || type == PURPLE_PREF_INT || 577 g_return_val_if_fail(type == PURPLE_PREF_BOOLEAN || type == PURPLE_PREF_INT ||
580 type == PURPLE_PREF_STRING, NULL); 578 type == PURPLE_PREF_STRING, NULL);
581 579
582 va_start(ap, key); 580 va_start(ap, key);
583 while ((name = va_arg(ap, char *)) != NULL) { 581 while ((name = va_arg(ap, char *)) != NULL) {
584 582 PurpleKeyValuePair *kvp;
585 menuitems = g_list_prepend(menuitems, name);
586 583
587 if (type == PURPLE_PREF_INT || type == PURPLE_PREF_BOOLEAN) { 584 if (type == PURPLE_PREF_INT || type == PURPLE_PREF_BOOLEAN) {
588 int_value = va_arg(ap, int); 585 kvp = purple_key_value_pair_new(name, GINT_TO_POINTER(va_arg(ap, int)));
589 menuitems = g_list_prepend(menuitems, GINT_TO_POINTER(int_value)); 586 } else {
587 kvp = purple_key_value_pair_new(name, va_arg(ap, char *));
590 } 588 }
591 else { 589 menuitems = g_list_prepend(menuitems, kvp);
592 str_value = va_arg(ap, const char *);
593 menuitems = g_list_prepend(menuitems, (char *)str_value);
594 }
595 } 590 }
596 va_end(ap); 591 va_end(ap);
597 592
598 g_return_val_if_fail(menuitems != NULL, NULL); 593 g_return_val_if_fail(menuitems != NULL, NULL);
599 594
600 menuitems = g_list_reverse(menuitems); 595 menuitems = g_list_reverse(menuitems);
601 596
602 dropdown = pidgin_prefs_dropdown_from_list(box, title, type, key, 597 dropdown = pidgin_prefs_dropdown_from_list(box, title, type, key,
603 menuitems); 598 menuitems);
604 599
605 g_list_free(menuitems); 600 g_list_free_full(menuitems, (GDestroyNotify)purple_key_value_pair_free);
606 601
607 return dropdown; 602 return dropdown;
608 } 603 }
609 604
610 static void 605 static void

mercurial