summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2023-03-07 12:01:31 +0100
committerLouis Burda <quent.burda@gmail.com>2023-03-07 12:03:21 +0100
commit2517cc93304c0783deaa89aaa01d4e665013fc3e (patch)
tree36c43671b06be207a5fe5d1984b574bc077ace61 /src
parent2ae8c06105a9323d6e3869b7ec01fd73c9bb148e (diff)
downloadtmus-2517cc93304c0783deaa89aaa01d4e665013fc3e.tar.gz
tmus-2517cc93304c0783deaa89aaa01d4e665013fc3e.zip
Remember playing track when reindexing tags
Diffstat (limited to 'src')
-rw-r--r--src/tui.c49
1 files changed, 30 insertions, 19 deletions
diff --git a/src/tui.c b/src/tui.c
index 6c55350..343b1f5 100644
--- a/src/tui.c
+++ b/src/tui.c
@@ -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;