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