aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-31 13:39:43 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-31 13:39:43 +0200
commit49d37756967e3eecae07ff6797bd76a655c6632c (patch)
treee57d52de28caf16fecb96389a4612e5e68e71f84 /src
parent312a2bf8d7c8728581c4e7e1f00a8adbe188ff31 (diff)
downloadgtk-vlc-player-49d37756967e3eecae07ff6797bd76a655c6632c.tar.gz
ensure that after a format-file refresh the currently selected formats remain activated (if possible)
* to avoid signal recursions, the store is not automatically refreshed after selecting a format
Diffstat (limited to 'src')
-rw-r--r--src/format-selection.c33
1 files changed, 28 insertions, 5 deletions
diff --git a/src/format-selection.c b/src/format-selection.c
index b5abe5a..80fe7c3 100644
--- a/src/format-selection.c
+++ b/src/format-selection.c
@@ -75,12 +75,10 @@ generic_transcript_combo_changed_cb(gpointer user_data, GtkComboBox *combo)
GtkTreeModel *model = gtk_combo_box_get_model(combo);
GtkTreeIter iter;
- gchar *filename;
+ gchar *filename = NULL;
- if (!gtk_combo_box_get_active_iter(combo, &iter))
- return;
-
- gtk_tree_model_get(model, &iter, COL_FILENAME, &filename, -1);
+ if (gtk_combo_box_get_active_iter(combo, &iter))
+ gtk_tree_model_get(model, &iter, COL_FILENAME, &filename, -1);
/*
* filename may be empty (null-entry) in which case any active format
@@ -89,7 +87,9 @@ generic_transcript_combo_changed_cb(gpointer user_data, GtkComboBox *combo)
gtk_experiment_transcript_load_formats(trans, filename);
g_free(filename);
+#if 0
refresh_formats_store(GTK_LIST_STORE(model));
+#endif
}
void
@@ -107,6 +107,10 @@ refresh_formats_store(GtkListStore *store)
{
static GPatternSpec *pattern = NULL;
+ GtkTreeModel *model = GTK_TREE_MODEL(store);
+ gchar *wizard_filename = NULL;
+ gchar *proband_filename = NULL;
+
GDir *dir;
const gchar *name;
GtkTreeIter iter;
@@ -114,6 +118,15 @@ refresh_formats_store(GtkListStore *store)
if (pattern == NULL)
pattern = g_pattern_spec_new(EXPERIMENT_FORMAT_FILTER);
+ if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(transcript_wizard_combo),
+ &iter))
+ gtk_tree_model_get(model, &iter,
+ COL_FILENAME, &wizard_filename, -1);
+ if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(transcript_proband_combo),
+ &iter))
+ gtk_tree_model_get(model, &iter,
+ COL_FILENAME, &proband_filename, -1);
+
gtk_list_store_clear(store);
/* add null-entry */
gtk_list_store_append(store, &iter);
@@ -139,11 +152,21 @@ refresh_formats_store(GtkListStore *store)
COL_FILENAME, fullname,
-1);
+ if (!g_strcmp0(fullname, wizard_filename))
+ gtk_combo_box_set_active_iter(GTK_COMBO_BOX(transcript_wizard_combo),
+ &iter);
+ if (!g_strcmp0(fullname, proband_filename))
+ gtk_combo_box_set_active_iter(GTK_COMBO_BOX(transcript_proband_combo),
+ &iter);
+
g_free(fullname);
g_free(itemname);
}
g_dir_close(dir);
+
+ g_free(proband_filename);
+ g_free(wizard_filename);
}
void