Fix the crash in the layout tests caused by my recent selection changes. Simply...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Sep 2004 23:41:25 +0000 (23:41 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Sep 2004 23:41:25 +0000 (23:41 +0000)
selection border setting code and let isSelectionBorder be implemented in terms of the SelectionState.

        Reviewed by kocienda

        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::setSelection):
        * khtml/rendering/render_object.cpp:
        (RenderObject::RenderObject):
        (RenderObject::container):
        (RenderObject::isSelectionBorder):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::minMaxKnown):
        (khtml::RenderObject::setReplaced):

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/rendering/render_canvas.cpp
WebCore/khtml/rendering/render_object.cpp
WebCore/khtml/rendering/render_object.h

index 38046b7404a38162ed3c864653cbaf22349433f8..214b9246051a6102af0d677e478c5d5c14b3a51b 100644 (file)
@@ -1,3 +1,20 @@
+2004-09-14  David Hyatt  <hyatt@apple.com>
+
+       Fix the crash in the layout tests caused by my recent selection changes.  Simply eliminate the buggy
+       selection border setting code and let isSelectionBorder be implemented in terms of the SelectionState.
+       
+        Reviewed by kocienda
+
+        * khtml/rendering/render_canvas.cpp:
+        (RenderCanvas::setSelection):
+        * khtml/rendering/render_object.cpp:
+        (RenderObject::RenderObject):
+        (RenderObject::container):
+        (RenderObject::isSelectionBorder):
+        * khtml/rendering/render_object.h:
+        (khtml::RenderObject::minMaxKnown):
+        (khtml::RenderObject::setReplaced):
+
 2004-09-14  Chris Blumenberg  <cblu@apple.com>
 
        Fixed: <rdar://problem/3778680> REGRESSION: plug-in content sometimes doesn't show up
@@ -56,7 +73,7 @@
        selection painting and drawing so that the enclosing rect is much more snug.  The containing block rect is no
        longer used at all.
        
-        Reviewed by NOBODY (OOPS!).
+        Reviewed by kocienda
 
         * khtml/rendering/render_canvas.cpp:
         (RenderCanvas::selectionRect):
index a94554c95dc9aa9cf616aaf902783bb2a4ff1c1c..ecc40ba2411e26c861b329b7ef6e17b9e230d205 100644 (file)
@@ -349,7 +349,6 @@ void RenderCanvas::setSelection(RenderObject *s, int sp, RenderObject *e, int ep
     if ((s && !e) || (e && !s))
         return;
 
-   
     // Just return if the selection hasn't changed.
     if (m_selectionStart == s && m_selectionStartPos == sp &&
         m_selectionEnd == e && m_selectionEndPos == ep)
@@ -394,20 +393,10 @@ void RenderCanvas::setSelection(RenderObject *s, int sp, RenderObject *e, int ep
     while (e && e->lastChild())
         e = e->lastChild();
         
-    // set selection start
-    if (m_selectionStart)
-        m_selectionStart->setIsSelectionBorder(false);
+    // set selection start and end
     m_selectionStart = s;
-    if (m_selectionStart)
-        m_selectionStart->setIsSelectionBorder(true);
     m_selectionStartPos = sp;
-
-    // set selection end
-    if (m_selectionEnd)
-        m_selectionEnd->setIsSelectionBorder(false);
     m_selectionEnd = e;
-    if (m_selectionEnd)
-        m_selectionEnd->setIsSelectionBorder(true);
     m_selectionEndPos = ep;
 
     // Update the selection status of all objects between m_selectionStart and m_selectionEnd
index 28b30e087f90055daceb4c1f6c64c0da30381536..2a2dcb78ab0e035c2cc29612fad8b41f6c957f9d 100644 (file)
@@ -151,7 +151,6 @@ m_inline( true ),
 m_replaced( false ),
 m_mouseInside( false ),
 m_isDragging( false ),
-m_isSelectionBorder( false ),
 m_hasOverflowClip(false)
 {
 }
@@ -1685,6 +1684,12 @@ RenderObject *RenderObject::container() const
     return o;
 }
 
+bool RenderObject::isSelectionBorder() const
+{
+    SelectionState st = selectionState();
+    return st == SelectionStart || st == SelectionEnd || st == SelectionBoth;
+}
+
 #if 0
 static void checkFloats(RenderObject* o, RenderObject* f)
 {
index 857dfa498ab8116be77b90c3c705912af15b8f96..2f6d5eda19d7431d6072fa6f4b67187e42ead79e 100644 (file)
@@ -272,9 +272,9 @@ public:
     bool posChildNeedsLayout() const { return m_posChildNeedsLayout; }
     bool normalChildNeedsLayout() const { return m_normalChildNeedsLayout; }
     bool minMaxKnown() const{ return m_minMaxKnown; }
-    bool isSelectionBorder() const { return m_isSelectionBorder; }
     bool recalcMinMax() const { return m_recalcMinMax; }
-
+    bool isSelectionBorder() const;
+    
     bool hasOverflowClip() const { return m_hasOverflowClip; }
     bool hasAutoScrollbars() const { return hasOverflowClip() && 
         (style()->overflow() == OAUTO || style()->overflow() == OOVERLAY); }
@@ -331,7 +331,6 @@ public:
     void setShouldPaintBackgroundOrBorder(bool b=true) { m_paintBackground = b; }
     void setRenderText() { m_isText = true; }
     void setReplaced(bool b=true) { m_replaced = b; }
-    void setIsSelectionBorder(bool b=true) { m_isSelectionBorder = b; }
     void setHasOverflowClip(bool b = true) { m_hasOverflowClip = b; }
 
     void scheduleRelayout();
@@ -815,8 +814,7 @@ private:
     bool m_replaced                  : 1;
     bool m_mouseInside               : 1;
     bool m_isDragging                : 1;
-    bool m_isSelectionBorder         : 1;
-
+    
     bool m_hasOverflowClip           : 1;
 
     void arenaDelete(RenderArena *arena, void *objectBase);