From 2a8cb3785e50ccb0d551442e3133ac1cc6c2e8f7 Mon Sep 17 00:00:00 2001
From: Yash Ladia <yashladia1@gmail.com>
Date: Sat, 4 Feb 2017 11:33:48 +0100
Subject: [PATCH 36/47] Fix Bug 302299 - Autoscrolling Lyrics are scrolling
down if a song is rated via Context Browser's Current Track
The bug was occuring since 'userAutoScrollOffset' and 'oldSliderPosition' were being reset when track metadata was changed. This should not happen.
I split the function: 'void _trackDataChanged( Meta::TrackPtr )' into 'void _trackChanged( Meta::TrackPtr )' and 'void _trackMetadataChanged( Meta::TrackPtr )'
REVIEW: 116641
BUGS: 302299
---
src/context/applets/lyrics/LyricsApplet.cpp | 18 +++++++++++++-----
src/context/applets/lyrics/LyricsApplet.h | 4 +++-
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/src/context/applets/lyrics/LyricsApplet.cpp b/src/context/applets/lyrics/LyricsApplet.cpp
index 829a166..896a042 100644
--- a/src/context/applets/lyrics/LyricsApplet.cpp
+++ b/src/context/applets/lyrics/LyricsApplet.cpp
@@ -1,6 +1,7 @@
/****************************************************************************************
* Copyright (c) 2007 Leo Franchi <lfranchi@gmail.com> *
* Copyright (c) 2009 simon.esneault <simon.esneault@gmail.com> *
+ * Copyright (c) 2014 Yash Ladia <yashladia1@gmail.com> *
* *
* This program is free software; you can redistribute it and/or modify it under *
* the terms of the GNU General Public License as published by the Free Software *
@@ -80,7 +81,8 @@ public:
void _toggleAutoScroll();
void _suggestionChosen( const LyricsSuggestion &suggestion );
void _unsetCursor();
- void _trackDataChanged( Meta::TrackPtr );
+ void _trackChanged( Meta::TrackPtr );
+ void _trackMetadataChanged( Meta::TrackPtr );
void _trackPositionChanged( qint64 position, bool userSeek );
void _lyricsChangedMessageButtonPressed( const Plasma::MessageButton button );
@@ -369,11 +371,17 @@ LyricsAppletPrivate::_unsetCursor()
}
void
-LyricsAppletPrivate::_trackDataChanged( Meta::TrackPtr track )
+LyricsAppletPrivate::_trackChanged( Meta::TrackPtr track )
{
userAutoScrollOffset = 0;
oldSliderPosition = 0;
+ // meta data also changed, so to avoid code duplication
+ _trackMetadataChanged( track );
+}
+void
+LyricsAppletPrivate::_trackMetadataChanged( Meta::TrackPtr track )
+{
// Check if we previously had a track.
// If the lyrics currently shown in the browser (which
// additionally is in edit mode) are different from the
@@ -512,15 +520,15 @@ LyricsApplet::init()
EngineController* engine = The::engineController();
- connect( engine, SIGNAL(trackChanged(Meta::TrackPtr)), this, SLOT(_trackDataChanged(Meta::TrackPtr)) );
- connect( engine, SIGNAL(trackMetadataChanged(Meta::TrackPtr)), this, SLOT(_trackDataChanged(Meta::TrackPtr)) );
+ connect( engine, SIGNAL(trackChanged(Meta::TrackPtr)), this, SLOT(_trackChanged(Meta::TrackPtr)) );
+ connect( engine, SIGNAL(trackMetadataChanged(Meta::TrackPtr)), this, SLOT(_trackMetadataChanged(Meta::TrackPtr)) );
connect( engine, SIGNAL(trackPositionChanged(qint64,bool)), this, SLOT(_trackPositionChanged(qint64,bool)) );
connect( d->suggestView, SIGNAL(selected(LyricsSuggestion)), SLOT(_suggestionChosen(LyricsSuggestion)) );
connect( dataEngine("amarok-lyrics"), SIGNAL(sourceAdded(QString)), this, SLOT(connectSource(QString)) );
// This is needed as a track might be playing when the lyrics applet
// is added to the ContextView.
- d->_trackDataChanged( engine->currentTrack() );
+ d->_trackChanged( engine->currentTrack() );
d->_trackPositionChanged( engine->trackPositionMs(), false );
d->determineActionIconsState();
diff --git a/src/context/applets/lyrics/LyricsApplet.h b/src/context/applets/lyrics/LyricsApplet.h
index 20c71d8..528a323 100644
--- a/src/context/applets/lyrics/LyricsApplet.h
+++ b/src/context/applets/lyrics/LyricsApplet.h
@@ -1,6 +1,7 @@
/****************************************************************************************
* Copyright (c) 2007 Leo Franchi <lfranchi@gmail.com> *
* Copyright (c) 2009 simon.esneault <simon.esneault@gmail.com> *
+ * Copyright (c) 2014 Yash Ladia <yashladia1@gmail.com> *
* *
* This program is free software; you can redistribute it and/or modify it under *
* the terms of the GNU General Public License as published by the Free Software *
@@ -57,7 +58,8 @@ private:
Q_PRIVATE_SLOT( d_ptr, void _toggleAutoScroll() )
Q_PRIVATE_SLOT( d_ptr, void _suggestionChosen(LyricsSuggestion) )
Q_PRIVATE_SLOT( d_ptr, void _unsetCursor() )
- Q_PRIVATE_SLOT( d_ptr, void _trackDataChanged( Meta::TrackPtr ) )
+ Q_PRIVATE_SLOT( d_ptr, void _trackChanged( Meta::TrackPtr ) )
+ Q_PRIVATE_SLOT( d_ptr, void _trackMetadataChanged( Meta::TrackPtr ) )
Q_PRIVATE_SLOT( d_ptr, void _trackPositionChanged( qint64 position, bool userSeek ) )
Q_PRIVATE_SLOT( d_ptr, void _lyricsChangedMessageButtonPressed(const Plasma::MessageButton) )
Q_PRIVATE_SLOT( d_ptr, void _refetchMessageButtonPressed(const Plasma::MessageButton) )
--
2.9.3