summaryrefslogtreecommitdiffstats
path: root/gtk/src/audiohandler.c
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2013-01-29 17:27:04 +0000
committerjstebbins <[email protected]>2013-01-29 17:27:04 +0000
commitd791f114c99e93f41f637cd8dda3789e3dda61d4 (patch)
tree56a1da4a77d39a98b7e51ee6d0658c2f37365c31 /gtk/src/audiohandler.c
parent2ecc0d7c5d120529f960a72938b5a90499624ef6 (diff)
LinGui: fix gtk3 subtitle and audio list issue
The wrong subtitle or audio track was sometimes getting removed from the list when the remove button was pressed. The sequence of widget callbacks changed is such a way as to require some small rearrangement of code. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5222 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'gtk/src/audiohandler.c')
-rw-r--r--gtk/src/audiohandler.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/gtk/src/audiohandler.c b/gtk/src/audiohandler.c
index d7171c3d4..e09e7fcbf 100644
--- a/gtk/src/audiohandler.c
+++ b/gtk/src/audiohandler.c
@@ -1206,18 +1206,25 @@ audio_remove_clicked_cb(GtkWidget *widget, signal_user_data_t *ud)
indices = gtk_tree_path_get_indices (treepath);
row = indices[0];
gtk_tree_path_free(treepath);
- // Remove the selected item
- gtk_list_store_remove (GTK_LIST_STORE(store), &iter);
- // remove from audio settings list
if (row < 0) return;
- widget = GHB_WIDGET (ud->builder, "audio_add");
- gtk_widget_set_sensitive(widget, TRUE);
+
audio_list = ghb_settings_get_value(ud->settings, "audio_list");
if (row >= ghb_array_len(audio_list))
return;
+
+ // Update our settings list before removing the row from the
+ // treeview. Removing from the treeview sometimes provokes an
+ // immediate selection change, so the list needs to be up to date
+ // when this happens.
GValue *old = ghb_array_get_nth(audio_list, row);
ghb_value_free(old);
ghb_array_remove(audio_list, row);
+
+ // Remove the selected item
+ gtk_list_store_remove (GTK_LIST_STORE(store), &iter);
+ // remove from audio settings list
+ widget = GHB_WIDGET (ud->builder, "audio_add");
+ gtk_widget_set_sensitive(widget, TRUE);
}
}