diff options
| author | Louis Burda <quent.burda@gmail.com> | 2023-03-07 12:01:31 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2023-03-07 12:03:21 +0100 |
| commit | 2517cc93304c0783deaa89aaa01d4e665013fc3e (patch) | |
| tree | 36c43671b06be207a5fe5d1984b574bc077ace61 /src | |
| parent | 2ae8c06105a9323d6e3869b7ec01fd73c9bb148e (diff) | |
| download | tmus-2517cc93304c0783deaa89aaa01d4e665013fc3e.tar.gz tmus-2517cc93304c0783deaa89aaa01d4e665013fc3e.zip | |
Remember playing track when reindexing tags
Diffstat (limited to 'src')
| -rw-r--r-- | src/tui.c | 49 |
1 files changed, 30 insertions, 19 deletions
@@ -77,7 +77,6 @@ static void cmd_pane_vis(struct pane *pane, int sel); static void update_tracks_vis(void); static void reindex_selected_tags(void); -static void reindex_current_tag(void); static void main_input(wint_t c); static void main_vis(void); @@ -1101,24 +1100,39 @@ reindex_selected_tags(void) { struct link *link; struct tag *tag; + struct track *track; + struct tag *playing_tag; + char *playing_name; - for (LIST_ITER(&tags_sel, link)) { - tag = UPCAST(link, struct tag, link_sel); - tracks_update(tag); - } -} + playing_tag = NULL; + playing_name = NULL; -void -reindex_current_tag(void) -{ - struct link *link; - struct tag *tag; + if (player.track) { + playing_tag = player.track->tag; + playing_name = astrdup(player.track->name); + } - link = list_at(&tags, tag_nav.sel); - if (!link) return; + if (track_show_playlist) { + for (LIST_ITER(&tags_sel, link)) { + tag = UPCAST(link, struct tag, link_sel); + tracks_update(tag); + } + } else { + link = list_at(&tags, tag_nav.sel); + if (!link) return; + tag = UPCAST(link, struct tag, link); + tracks_update(tag); + } - tag = UPCAST(link, struct tag, link); - tracks_update(tag); + if (playing_tag) { + for (LIST_ITER(&playing_tag->tracks, link)) { + track = UPCAST(link, struct track, link_tt); + if (!strcmp(track->name, playing_name)) { + player.track = track; + break; + } + } + } } void @@ -1203,10 +1217,7 @@ main_input(wint_t c) refresh(); break; case KEY_CTRL(L'r'): - if (track_show_playlist) - reindex_selected_tags(); - else - reindex_current_tag(); + reindex_selected_tags(); break; case L'q': quit = 1; |
