Blob Blame History Raw
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