Fix by Yasuo Kida, reviewed by me.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 3 Nov 2004 11:52:26 +0000 (11:52 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 3 Nov 2004 11:52:26 +0000 (11:52 +0000)
<rdar://problem/3819004> REGRESSION (Mail): Can't move cursor / delete character after deleting the active input area

* kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::setMarkedTextRange): Treat a collapsed range the
same as a nil range - setting an empty marked range should clear
the marked range entirely.

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

WebCore/ChangeLog-2005-08-23
WebCore/kwq/KWQKHTMLPart.mm

index 6f73f30..78a95ae 100644 (file)
@@ -1,3 +1,14 @@
+2004-11-03  Maciej Stachowiak  <mjs@apple.com>
+
+        Fix by Yasuo Kida, reviewed by me.
+
+       <rdar://problem/3819004> REGRESSION (Mail): Can't move cursor / delete character after deleting the active input area
+        
+       * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::setMarkedTextRange): Treat a collapsed range the
+       same as a nil range - setting an empty marked range should clear
+       the marked range entirely.
+
 2004-11-02  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by Dave Hyatt (when I originally coded it).
index 492f6dc..50401f9 100644 (file)
@@ -4097,14 +4097,18 @@ DOM::Range KWQKHTMLPart::markedTextRange() const
 void KWQKHTMLPart::setMarkedTextRange(const DOM::Range &range)
 {
     ASSERT(!range.handle() || range.startContainer() == range.endContainer());
-    ASSERT(!range.handle() || range.startOffset() == range.endOffset() || range.startContainer().nodeType() == Node::TEXT_NODE);
+    ASSERT(!range.handle() || range.collapsed() || range.startContainer().nodeType() == Node::TEXT_NODE);
 
     if (m_markedTextRange.handle() && xmlDocImpl() 
        && m_markedTextRange.startContainer().handle()->renderer()) {
        m_markedTextRange.startContainer().handle()->renderer()->repaint();
     }
 
-    m_markedTextRange = range;
+    if ( range.handle() && range.collapsed() ) {
+        m_markedTextRange = DOM::Range(0);
+    } else {
+        m_markedTextRange = range;
+    }
 
     if (m_markedTextRange.handle() && xmlDocImpl() 
        && m_markedTextRange.startContainer().handle()->renderer()) {