diff --git a/src/actions.cpp b/src/actions.cpp index b90c17ec..d6ebc2ea 100644 --- a/src/actions.cpp +++ b/src/actions.cpp @@ -379,11 +379,11 @@ void ScrollUpArtist::run() std::string artist = s->getArtist(); while (pos > 0) { - myScreen->scroll(NC::Scroll::Up); s = pl.getSong(--pos); if (!s || s->getArtist() != artist) break; } + pl.highlight(pos); } } @@ -404,11 +404,11 @@ void ScrollUpAlbum::run() std::string album = s->getAlbum(); while (pos > 0) { - myScreen->scroll(NC::Scroll::Up); s = pl.getSong(--pos); if (!s || s->getAlbum() != album) break; } + pl.highlight(pos); } } @@ -429,11 +429,11 @@ void ScrollDownArtist::run() std::string artist = s->getArtist(); while (pos < pl.size() - 1) { - myScreen->scroll(NC::Scroll::Down); s = pl.getSong(++pos); if (!s || s->getArtist() != artist) break; } + pl.highlight(pos); } } @@ -454,11 +454,11 @@ void ScrollDownAlbum::run() std::string album = s->getAlbum(); while (pos < pl.size() - 1) { - myScreen->scroll(NC::Scroll::Down); s = pl.getSong(++pos); if (!s || s->getAlbum() != album) break; } + pl.highlight(pos); } } diff --git a/src/proxy_song_list.h b/src/proxy_song_list.h index aa3192ba..68c7db26 100644 --- a/src/proxy_song_list.h +++ b/src/proxy_song_list.h @@ -43,6 +43,7 @@ class ProxySongList virtual bool empty() = 0; virtual size_t size() = 0; virtual size_t choice() = 0; + virtual void highlight(size_t pos) = 0; virtual bool isSelected(size_t pos) = 0; virtual void setSelected(size_t pos, bool selected) = 0; @@ -64,6 +65,7 @@ class ProxySongList virtual bool empty() { return m_menu.empty(); } virtual size_t size() { return m_menu.size(); } virtual size_t choice() { return m_menu.choice(); } + virtual void highlight(size_t pos) { m_menu.highlight(pos); } virtual bool isSelected(size_t pos) { assert(pos < m_menu.size()); @@ -110,6 +112,7 @@ public: bool empty() const { return m_impl->empty(); } size_t size() const { return m_impl->size(); } size_t choice() const { return m_impl->choice(); } + void highlight(size_t pos) const { m_impl->highlight(pos); } bool isSelected(size_t pos) const { return m_impl->isSelected(pos); } void setSelected(size_t pos, bool selected) const { m_impl->setSelected(pos, selected); }