playlist: Scroll to the current track if "new" isn't on the playlist

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-12-06 11:28:12 -05:00
parent 580358a88e
commit 845de3957b
1 changed files with 8 additions and 3 deletions

View File

@ -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()