From 845de3957b5aa9dc8c50445d1ec36ab2d752cb45 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Mon, 6 Dec 2021 11:28:12 -0500 Subject: [PATCH] playlist: Scroll to the current track if "new" isn't on the playlist Signed-off-by: Anna Schumaker --- playlist/view.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/playlist/view.py b/playlist/view.py index 7e63c00..b5d15d5 100644 --- a/playlist/view.py +++ b/playlist/view.py @@ -42,15 +42,20 @@ class PlaylistView(Gtk.ColumnView): def clear_selection(self): self.get_model().unselect_all() - def track_changed(self, player, old, new): + def scroll_to(self, track): selection = self.get_model() adjustment = self.get_vadjustment() for i in range(selection.get_n_items()): - if selection.get_item(i) == new: + if selection.get_item(i) == track: selection.select_item(i, True) pos = max(i - 5, 0) * adjustment.get_upper() adjustment.set_value(pos / selection.get_n_items()) - return + return True + return False + + def track_changed(self, player, old, new): + if not self.scroll_to(new): + self.scroll_to(self.get_playlist().get_current_track()) def get_filter_model(self): return self.get_model().get_filter_model() def get_playlist(self): return self.get_model().get_playlist()