# HG changeset patch # User Elliott Sales de Andrade # Date 1330831927 0 # Node ID cc361e897c41ffd6840e036b4efdb22977c1f47f # Parent 01741f87cc1ee42c30811c921b400376c0b3c927 Correctly save the conversation theme pref when re-choosing the Default. diff -r 01741f87cc1e -r cc361e897c41 pidgin/gtkprefs.c --- a/pidgin/gtkprefs.c Sun Mar 04 02:16:12 2012 +0000 +++ b/pidgin/gtkprefs.c Sun Mar 04 03:32:07 2012 +0000 @@ -1101,43 +1101,42 @@ static void prefs_set_conv_theme_cb(GtkComboBox *combo_box, gpointer user_data) { - PidginConvTheme *theme = NULL; GtkTreeIter iter; - gchar *name = NULL; if (gtk_combo_box_get_active_iter(combo_box, &iter)) { - const GList *variants; - const char *current_variant; - gboolean unset = TRUE; + gchar *name = NULL; gtk_tree_model_get(GTK_TREE_MODEL(prefs_conv_themes), &iter, 2, &name, -1); - if (!name || !*name) { - g_free(name); - return; - } purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/theme", name); /* Update list of variants */ gtk_list_store_clear(prefs_conv_variants); - theme = PIDGIN_CONV_THEME(purple_theme_manager_find_theme(name, "conversation")); - current_variant = pidgin_conversation_theme_get_variant(theme); - - variants = pidgin_conversation_theme_get_variants(theme); - for (; variants && current_variant; variants = g_list_next(variants)) { - gtk_list_store_append(prefs_conv_variants, &iter); - gtk_list_store_set(prefs_conv_variants, &iter, 0, variants->data, -1); - - if (g_str_equal(variants->data, current_variant)) { - gtk_combo_box_set_active_iter(GTK_COMBO_BOX(prefs_conv_variants_combo_box), &iter); - unset = FALSE; + if (name && *name) { + PidginConvTheme *theme; + const char *current_variant; + const GList *variants; + gboolean unset = TRUE; + + theme = PIDGIN_CONV_THEME(purple_theme_manager_find_theme(name, "conversation")); + current_variant = pidgin_conversation_theme_get_variant(theme); + + variants = pidgin_conversation_theme_get_variants(theme); + for (; variants && current_variant; variants = g_list_next(variants)) { + gtk_list_store_append(prefs_conv_variants, &iter); + gtk_list_store_set(prefs_conv_variants, &iter, 0, variants->data, -1); + + if (g_str_equal(variants->data, current_variant)) { + gtk_combo_box_set_active_iter(GTK_COMBO_BOX(prefs_conv_variants_combo_box), &iter); + unset = FALSE; + } } + + if (unset) + gtk_combo_box_set_active(GTK_COMBO_BOX(prefs_conv_variants_combo_box), 0); } - if (unset) - gtk_combo_box_set_active(GTK_COMBO_BOX(prefs_conv_variants_combo_box), 0); - g_free(name); } }