diff options
| author | Louis Burda <quent.burda@gmail.com> | 2022-03-05 17:16:45 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2022-03-06 13:52:27 +0100 |
| commit | 914add4cedb75bab216b5702e34e71b45005f905 (patch) | |
| tree | 3de8d4f2151c05faa8b74035797dd2fc85e76ef5 /src | |
| parent | a75742a5b0fbbbbbe74f0912a39fc82c91911fd4 (diff) | |
| download | tmus-914add4cedb75bab216b5702e34e71b45005f905.tar.gz tmus-914add4cedb75bab216b5702e34e71b45005f905.zip | |
Simplify listnav, change pane on playing track seek
Diffstat (limited to 'src')
| -rw-r--r-- | src/listnav.c | 29 | ||||
| -rw-r--r-- | src/tui.c | 2 |
2 files changed, 22 insertions, 9 deletions
diff --git a/src/listnav.c b/src/listnav.c index 5212ec0..f856319 100644 --- a/src/listnav.c +++ b/src/listnav.c @@ -3,10 +3,25 @@ #include <string.h> +static void listnav_update_win(struct listnav *nav); + +void +listnav_update_win(struct listnav *nav) +{ + nav->wmin = MAX(nav->wmax - nav->wlen, nav->min); + nav->wmax = MIN(nav->wmin + nav->wlen, nav->max); + nav->sel = MAX(MIN(nav->sel, nav->wmax - 1), nav->wmin); +} + void listnav_init(struct listnav *nav) { - memset(nav, 0, sizeof(struct listnav)); + nav->sel = 0; + nav->min = 0; + nav->max = 0; + nav->wlen = 0; + nav->wmin = 0; + nav->wmax = 0; } void @@ -16,7 +31,8 @@ listnav_update_bounds(struct listnav *nav, int min, int max) nav->min = min; nav->max = max; - listnav_update_wlen(nav, MIN(nav->wlen, nav->max - nav->min)); + + listnav_update_win(nav); } void @@ -24,13 +40,8 @@ listnav_update_wlen(struct listnav *nav, int wlen) { ASSERT(wlen >= 0); - nav->wlen = MIN(wlen, nav->max - nav->min); - if (nav->wmin < nav->min) - nav->wmin = nav->min; - if (nav->wmin + nav->wlen > nav->max) - nav->wmin = nav->max - nav->wlen; - nav->wmax = nav->wmin + nav->wlen; - nav->sel = MAX(MIN(nav->sel, nav->wmax - 1), nav->wmin); + nav->wlen = wlen; + listnav_update_win(nav); } void @@ -1046,6 +1046,8 @@ main_input(wint_t c) case L'N': if (!seek_track_tag(player.track)) return; + track_show_playlist = false; + update_tracks_vis(); seek_track(player.track); pane_sel = track_pane; break; |
