@@ -41,7 +41,8 @@ typedef struct {
4141 GtkTreeStore * store ;
4242 ddb_medialib_item_t * item_tree ;
4343 gint collapse_expand_select_timeout ;
44- int is_reloading ;
44+ gboolean is_reloading ;
45+ gboolean has_changed_selection ;
4546 MlCellRendererPixbufDelegate pixbuf_cell_delegate ;
4647
4748 GdkPixbuf * folder_icon ;
@@ -175,7 +176,7 @@ _reload_content (w_medialib_viewer_t *mlv) {
175176 free (curr_preset );
176177 }
177178
178- mlv -> is_reloading = 1 ;
179+ mlv -> is_reloading = TRUE ;
179180 // clear
180181 GtkTreeIter iter ;
181182 if (gtk_tree_model_iter_children (GTK_TREE_MODEL (store ), & iter , & mlv -> root_iter )) {
@@ -194,7 +195,7 @@ _reload_content (w_medialib_viewer_t *mlv) {
194195 // restore selected/expanded state
195196 _restore_selected_expanded_state_for_iter (mlv , store , & mlv -> root_iter );
196197
197- mlv -> is_reloading = 0 ;
198+ mlv -> is_reloading = FALSE ;
198199}
199200
200201static gboolean
@@ -310,8 +311,7 @@ _restore_selected_expanded_state_for_iter (w_medialib_viewer_t *mlv, GtkTreeStor
310311static gboolean
311312_row_collapse_expand_selection_did_change (void * user_data ) {
312313 w_medialib_viewer_t * mlv = user_data ;
313- GtkTreeStore * store = mlv -> store ;
314- _save_selection_state_with_iter (mlv , store , & mlv -> root_iter );
314+ mlv -> has_changed_selection = TRUE;
315315 mlv -> collapse_expand_select_timeout = 0 ;
316316 return FALSE;
317317}
@@ -602,17 +602,28 @@ _select_at_position (GtkTreeView *treeview, gint x, gint y) {
602602 return TRUE;
603603}
604604
605+ static void
606+ _refresh_mediasource (w_medialib_viewer_t * mlv ) {
607+ if (mlv -> has_changed_selection ) {
608+ GtkTreeStore * store = mlv -> store ;
609+ _save_selection_state_with_iter (mlv , store , & mlv -> root_iter );
610+ mlv -> has_changed_selection = FALSE;
611+ }
612+
613+ plugin -> refresh (mlv -> source );
614+ }
615+
605616static void
606617_trkproperties_did_change_tracks (void * user_data ) {
607618 w_medialib_viewer_t * mlv = user_data ;
608- plugin -> refresh (mlv -> source );
619+ _refresh_mediasource (mlv );
609620}
610621
611622static void
612623_trkproperties_did_delete_files (void * user_data , int cancelled ) {
613624 if (!cancelled ) {
614625 w_medialib_viewer_t * mlv = user_data ;
615- plugin -> refresh (mlv -> source );
626+ _refresh_mediasource (mlv );
616627 }
617628}
618629
0 commit comments