Divorce the notion of a marquee being stopped from JS from the notion of being suspe...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 21 Aug 2004 00:58:24 +0000 (00:58 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 21 Aug 2004 00:58:24 +0000 (00:58 +0000)
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElementFunction::tryCall):
        * khtml/rendering/render_layer.cpp:
        (m_direction):
        (Marquee::start):
        (Marquee::stop):
        (Marquee::updateMarqueePosition):
        * khtml/rendering/render_layer.h:
        (khtml::):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7320 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/khtml/ecma/kjs_html.cpp
WebCore/khtml/rendering/render_layer.cpp
WebCore/khtml/rendering/render_layer.h

index 31a6c8fe819aef340415dd39426b07dff92e4522..88e9e4d6a8ce943cbe3285cc25699e10325af165 100644 (file)
@@ -1,3 +1,17 @@
+2004-08-20  David Hyatt  <hyatt@apple.com>
+
+       Divorce the notion of a marquee being stopped from JS from the notion of being suspended by the back/forward cache.
+
+        * khtml/ecma/kjs_html.cpp:
+        (KJS::HTMLElementFunction::tryCall):
+        * khtml/rendering/render_layer.cpp:
+        (m_direction):
+        (Marquee::start):
+        (Marquee::stop):
+        (Marquee::updateMarqueePosition):
+        * khtml/rendering/render_layer.h:
+        (khtml::):
+
 2004-08-20  Richard Williamson   <rjw@apple.com>
 
         Implemented new JNI abstraction.  We no longer invoke Java methods
@@ -75,6 +89,7 @@
         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:]):
        Fixed former misleading method name.
 
+>>>>>>> 1.3116
 2004-08-20  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by Trey
 
 2004-08-18  Richard Williamson   <rjw@apple.com>
 
-<<<<<<< ChangeLog
         Replace horrible pollForAppletInView: with new
         webPlugInGetApplet.  The details of how the applet instance
         is provided now belong to the Java team.  Yeh.
                
         Reviewed by Chris.
 
-=======
-        Replace horrible pollForAppletInView: with new
-        webPlugInGetApplet.  The details of how the applet instance
-        is provided now belong to the Java team.  Yeh.
-               
-        Reviewed by Chris.
->>>>>>> 1.3109
         * kwq/KWQKHTMLPart.mm:
         (KWQKHTMLPart::getAppletInstanceForView):
         * kwq/WebCoreBridge.h:
index e6498728aca41249d4f008b6896b94dcfb7f7bfe..5ef6df3265bac1c290b1940d468860f9be9417a6 100644 (file)
@@ -2149,7 +2149,7 @@ Value KJS::HTMLElementFunction::tryCall(ExecState *exec, Object &thisObj, const
         else if (id == KJS::HTMLElement::MarqueeStop && element.handle()->renderer() && 
                  element.handle()->renderer()->layer() &&
                  element.handle()->renderer()->layer()->marquee()) {
-            element.handle()->renderer()->layer()->marquee()->suspend();
+            element.handle()->renderer()->layer()->marquee()->stop();
             return Undefined();
         }
         break;
index 7e27d5870b8675fe3f68405ef8f17a62f874ed4b..d377416fb2ad52a02fd01726273e21c576c49a8e 100644 (file)
@@ -1288,7 +1288,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)
 {
 }
 
@@ -1387,6 +1387,8 @@ void Marquee::start()
     if (m_timerId || m_layer->renderer()->style()->marqueeIncrement().value == 0)
         return;
     
+    m_stopped = false;
+
     if (!m_suspended) {
         if (isUnfurlMarquee()) {
             bool forward = direction() == MDOWN || direction() == MRIGHT;
@@ -1417,6 +1419,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);
@@ -1436,7 +1448,8 @@ void Marquee::updateMarqueePosition()
             m_start = computePosition(direction(), behavior == MALTERNATE);
             m_end = computePosition(reverseDirection(), behavior == MALTERNATE || behavior == MSLIDE);
         }
-        start();
+        if (!m_stopped)
+            start();
     }
 }
 
index 2d50bc61ea6d824acc7958a5c2679ef2e92e44f4..399f23c694255268e3786d0f8adb08466de8543c 100644 (file)
@@ -101,7 +101,8 @@ public:
     
     void start();
     void suspend();
-    
+    void stop();
+
     void updateMarqueeStyle();
     void updateMarqueePosition();
 
@@ -114,8 +115,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;
 };