# # old_revision [3f8b4b5a421935e71b45c7b8260c8bb32a330384] # # patch "pidgin/gtkprefs.c" # from [9a3650562cf429fb3814c4a9f3006d939026f1cb] # to [6fc27b209db9a04c577c150e322c9a0d3e518fa2] # ============================================================ --- pidgin/gtkprefs.c 9a3650562cf429fb3814c4a9f3006d939026f1cb +++ pidgin/gtkprefs.c 6fc27b209db9a04c577c150e322c9a0d3e518fa2 @@ -1949,6 +1949,22 @@ preview_button_clicked(GtkWidget *widget gst_element_set_state(pipeline, GST_STATE_PLAYING); } +static void repopulate(const char *name, PurplePrefType type, gconstpointer val, gpointer data) +{ + GtkWidget *vbox = data; + GList *list = gtk_container_get_children(GTK_CONTAINER(vbox)); + while (list) { + gtk_widget_destroy(list->data); + list = g_list_delete_link(list, list); + } + purple_debug_fatal("XXX", "repop\n"); + pidgin_prefs_dropdown(vbox, _("Test:"), + PURPLE_PREF_STRING, "/test", + "A", "a", + "B", "b", + NULL); +} + static GtkWidget * media_page() { @@ -1997,6 +2013,20 @@ media_page() "/purple/media/audio/device", audio_items); + { + vbox = pidgin_make_frame(ret, _("Change")); + dd = pidgin_prefs_dropdown(vbox, _("Test:"), + PURPLE_PREF_STRING, "/test", + "A", "a", + "B", "b", + NULL); + + purple_prefs_connect_callback(vbox, "/purple/media/audio/device", + repopulate, vbox); + g_signal_connect_swapped(vbox, "destroy", + purple_prefs_disconnect_by_handle, vbox); + } + gtk_size_group_add_widget(sg, dd); gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5);