Reviewed by harrison
authorjusting <justing@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 1 Nov 2005 22:29:19 +0000 (22:29 +0000)
committerjusting <justing@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 1 Nov 2005 22:29:19 +0000 (22:29 +0000)
        Tweaked my previous fix for caret movement while scrolling.

        * khtml/editing/SelectionController.cpp:
        (khtml::SelectionController::SelectionController): Forgot to copy m_caretPositionOnLayout.
        (khtml::SelectionController::operator=): Ditto.
        (khtml::SelectionController::layout): Initialize m_caretPositionOnLayout to a dummy value when the selection isNone.
        * khtml/editing/SelectionController.h: Tweaked my comment.

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

WebCore/ChangeLog-2005-12-19
WebCore/khtml/editing/SelectionController.cpp
WebCore/khtml/editing/SelectionController.h

index 109edd9c6e9f43e4c3dfa8950260c929f9efdc9c..cf8e0d7effabf1464570f88bc53471e17b6472b2 100644 (file)
@@ -1,3 +1,15 @@
+2005-11-01  Justin Garcia  <justin.garcia@apple.com>
+
+        Reviewed by harrison
+        
+        Tweaked my previous fix for caret movement while scrolling.
+
+        * khtml/editing/SelectionController.cpp:
+        (khtml::SelectionController::SelectionController): Forgot to copy m_caretPositionOnLayout.
+        (khtml::SelectionController::operator=): Ditto.
+        (khtml::SelectionController::layout): Initialize m_caretPositionOnLayout to a dummy value when the selection isNone.
+        * khtml/editing/SelectionController.h: Tweaked my comment.
+
 2005-11-01  Justin Garcia  <justin.garcia@apple.com>
 
         Reviewed by darin
index 3254c9f1998fd525d4f15f183b44fc07f3f3d84e..a2563801d0eee777ecbff63277489d0ab51caaf5 100644 (file)
@@ -117,6 +117,7 @@ SelectionController::SelectionController(const SelectionController &o)
     // and the old rectangle needs to be repainted.
     if (!m_needsLayout) {
         m_caretRect = o.m_caretRect;
+        m_caretPositionOnLayout = o.m_caretPositionOnLayout;
     }
 }
 
@@ -151,6 +152,7 @@ SelectionController &SelectionController::operator=(const SelectionController &o
     // and the old rectangle needs to be repainted.
     if (!m_needsLayout) {
         m_caretRect = o.m_caretRect;
+        m_caretPositionOnLayout = o.m_caretPositionOnLayout;
     }
     
     return *this;
@@ -667,12 +669,14 @@ void SelectionController::layout()
 {
     if (isNone() || !m_start.node()->inDocument() || !m_end.node()->inDocument()) {
         m_caretRect = QRect();
+        m_caretPositionOnLayout = QPoint();
         return;
     }
 
     m_start.node()->getDocument()->updateRendering();
     
     m_caretRect = QRect();
+    m_caretPositionOnLayout = QPoint();
         
     if (isCaret()) {
         Position pos = m_start;
index b5dced46980c928fa87ec2b3518fd6062119cd44..71cfc9b7348362ebbb74c56e2a58cced27fdc06b 100644 (file)
@@ -145,8 +145,11 @@ private:
     EAffinity m_affinity;         // the upstream/downstream affinity of the selection
 
     QRect m_caretRect;            // caret coordinates, size, and position
-    QPoint m_caretPositionOnLayout;   // When asked for caretRect(), we correct m_caretRect for offset due to scrolling.
-                                      // This is faster than recalcuating m_caretRect.
+    
+    // m_caretPositionOnLayout stores the scroll offset on the previous call to SelectionController::layout().
+    // When asked for caretRect(), we correct m_caretRect for offset due to scrolling since the last layout().
+    // This is faster than doing another layout().
+    QPoint m_caretPositionOnLayout;
     
     bool m_baseIsStart : 1;       // true if base node is before the extent node
     bool m_needsLayout : 1;       // true if the caret and expectedVisible rectangles need to be calculated