From e470fb5ccdff4a83a1488218607bf99ba0f868f8 Mon Sep 17 00:00:00 2001 From: colfax4 Date: Wed, 31 Oct 2012 15:44:14 -0500 Subject: [PATCH] [GUIRSSControl] Modify RSS Ticker to Pause Scroll during Mouseover --- xbmc/guilib/GUIRSSControl.cpp | 18 ++++++++++++++++++ xbmc/guilib/GUIRSSControl.h | 6 +++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/xbmc/guilib/GUIRSSControl.cpp b/xbmc/guilib/GUIRSSControl.cpp index c7243efff0b26..fd5f2a9653ff0 100644 --- a/xbmc/guilib/GUIRSSControl.cpp +++ b/xbmc/guilib/GUIRSSControl.cpp @@ -40,6 +40,7 @@ CGUIRSSControl::CGUIRSSControl(int parentID, int controlID, float posX, float po m_pReader = NULL; m_rtl = false; + m_stopped = false; ControlType = GUICONTROL_RSS; } @@ -52,6 +53,7 @@ CGUIRSSControl::CGUIRSSControl(const CGUIRSSControl &from) m_strRSSTags = from.m_strRSSTags; m_pReader = NULL; m_rtl = from.m_rtl; + m_stopped = from.m_stopped; ControlType = GUICONTROL_RSS; } @@ -73,6 +75,16 @@ void CGUIRSSControl::SetUrls(const vector &vecUrl, bool rtl) m_scrollInfo.pixelSpeed *= -1; } +void CGUIRSSControl::OnFocus() +{ + m_stopped = true; +} + +void CGUIRSSControl::OnUnFocus() +{ + m_stopped = false; +} + void CGUIRSSControl::SetIntervals(const vector& vecIntervals) { m_vecIntervals = vecIntervals; @@ -130,6 +142,12 @@ void CGUIRSSControl::Render() colors.push_back(m_label.textColor); colors.push_back(m_headlineColor); colors.push_back(m_channelColor); + + if ( m_stopped ) + m_scrollInfo.SetSpeed(0); + else + m_scrollInfo.SetSpeed(m_label.scrollSpeed); + m_label.font->DrawScrollingText(m_posX, m_posY, colors, m_label.shadowColor, m_feed, 0, m_width, m_scrollInfo); } diff --git a/xbmc/guilib/GUIRSSControl.h b/xbmc/guilib/GUIRSSControl.h index f5862bca3b2dd..a8f19f9723b27 100644 --- a/xbmc/guilib/GUIRSSControl.h +++ b/xbmc/guilib/GUIRSSControl.h @@ -62,12 +62,15 @@ class CGUIRSSControl : public CGUIControl, public IRssObserver virtual void Render(); virtual void OnFeedUpdate(const vecText &feed); virtual void OnFeedRelease(); - virtual bool CanFocus() const { return false; }; + virtual bool CanFocus() const { return true; }; virtual CRect CalcRenderRegion() const; void SetIntervals(const std::vector& vecIntervals); void SetUrls(const std::vector& vecUrl, bool rtl); + virtual void OnFocus(); + virtual void OnUnFocus(); + protected: virtual bool UpdateColors(); @@ -86,5 +89,6 @@ class CGUIRSSControl : public CGUIControl, public IRssObserver std::vector m_vecIntervals; bool m_rtl; CScrollInfo m_scrollInfo; + bool m_stopped; }; #endif