better version of marquee patch

Dave Hyatt hyatt at apple.com
Mon Aug 23 19:40:45 CEST 2004


Applied, thanks.

dave

On Aug 23, 2004, at 12:53 AM, l.savernik at aon.at wrote:

> This version doesn't resume correctly on start(), i. e. the position 
> is reset to some initial position everytime start() is invoked, 
> regardless of where stop() left it. The attached patch includes your 
> changes, and fixes this issue. Hope it doesn't break anything for you.
>
> -------------------------------------------
> Versendet durch AonWebmail (webmail.aon.at)
>
> Index: rendering/render_layer.cpp
> ===================================================================
> RCS file: /home/kde/kdelibs/khtml/rendering/render_layer.cpp,v
> retrieving revision 1.43
> diff -u -p -r1.43 render_layer.cpp
> --- rendering/render_layer.cpp	20 Aug 2004 13:40:43 -0000	1.43
> +++ rendering/render_layer.cpp	23 Aug 2004 07:44:04 -0000
> @@ -1300,7 +1300,7 @@ void RenderLayer::suspendMarquees()
>
>  Marquee::Marquee(RenderLayer* l)
>  :m_layer(l), m_currentLoop(0), m_timerId(0), m_start(0), m_end(0), 
> m_speed(0), m_unfurlPos(0), m_reset(false),
> - m_suspended(false), m_whiteSpace(NORMAL), m_direction(MAUTO)
> + m_suspended(false), m_stopped(false), m_whiteSpace(NORMAL), 
> m_direction(MAUTO)
>  {
>  }
>
> @@ -1399,7 +1399,7 @@ void Marquee::start()
>      if (m_timerId || 
> m_layer->renderer()->style()->marqueeIncrement().value() == 0)
>          return;
>
> -    if (!m_suspended) {
> +    if (!m_suspended && !m_stopped) {
>          if (isUnfurlMarquee()) {
>              bool forward = direction() == MDOWN || direction() == 
> MRIGHT;
>              bool isReversed = (forward && m_currentLoop % 2) || 
> (!forward && !(m_currentLoop % 2));
> @@ -1418,6 +1418,7 @@ void Marquee::start()
>      else
>          m_suspended = false;
>
> +    m_stopped = false;
>      m_timerId = startTimer(speed());
>  }
>
> @@ -1431,6 +1432,16 @@ void Marquee::suspend()
>      m_suspended = true;
>  }
>
> +void Marquee::stop()
> +{
> +    if (m_timerId) {
> +        killTimer(m_timerId);
> +        m_timerId = 0;
> +    }
> +
> +    m_stopped = true;
> +}
> +
>  void Marquee::updateMarqueePosition()
>  {
>      bool activate = (m_totalLoops <= 0 || m_currentLoop < 
> m_totalLoops);
> @@ -1454,7 +1465,7 @@ void Marquee::updateMarqueePosition()
>              m_start = computePosition(direction(), behavior == 
> MALTERNATE);
>              m_end = computePosition(reverseDirection(), behavior == 
> MALTERNATE || behavior == MSLIDE);
>          }
> -        if (!m_suspended) start();
> +        if (!m_stopped) start();
>      }
>  }
>
> Index: rendering/render_layer.h
> ===================================================================
> RCS file: /home/kde/kdelibs/khtml/rendering/render_layer.h,v
> retrieving revision 1.21
> diff -u -p -r1.21 render_layer.h
> --- rendering/render_layer.h	13 Jun 2004 17:08:25 -0000	1.21
> +++ rendering/render_layer.h	23 Aug 2004 07:44:04 -0000
> @@ -103,6 +103,7 @@ public:
>
>      void start();
>      void suspend();
> +    void stop();
>
>      void updateMarqueeStyle();
>      void updateMarqueePosition();
> @@ -116,8 +117,9 @@ private:
>      int m_end;
>      int m_speed;
>      int m_unfurlPos;
> -    bool m_reset;
> -    bool m_suspended;
> +    bool m_reset:1;
> +    bool m_suspended:1;
> +    bool m_stopped:1;
>      EWhiteSpace m_whiteSpace : 2;
>      EMarqueeDirection m_direction : 4;
>  };
> _______________________________________________
> Khtml-devel at kde.org
> https://mail.kde.org/mailman/listinfo/khtml-devel



More information about the Khtml-devel mailing list