- renamed
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Sep 2004 07:05:23 +0000 (07:05 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Sep 2004 07:05:23 +0000 (07:05 +0000)
            DOM::CaretPosition -> khtml::VisibleRange
            DOM::Selection     -> khtml::Selection

        - moved all the functions in visible_units.h from DOM to khtml namespace
        - moved the one thing from Selection that KHTMLPart uses into its own header

        * WebCore.pbproj/project.pbxproj: Added text_granularity.h.

        * ForwardingHeaders/editing/selection.h: Added.
        * WebCore-combined.exp: Regenerated.
        * WebCore-tests.exp: Updated symbol for DOM::Selection debugging.

        * khtml/ecma/kjs_window.cpp: Update names and namespaces.
        * khtml/editing/htmlediting.cpp: Ditto.
        * khtml/editing/htmlediting.h: Ditto.
        * khtml/editing/htmlediting_impl.cpp: Ditto.
        * khtml/editing/htmlediting_impl.h: Ditto.
        * khtml/editing/jsediting.cpp: Ditto.
        * khtml/editing/selection.cpp: Ditto.
        * khtml/editing/selection.h: Ditto.
        * khtml/editing/visible_position.cpp: Ditto.
        * khtml/editing/visible_position.h: Ditto.
        * khtml/editing/visible_text.h: Ditto.
        * khtml/editing/visible_units.cpp: Ditto.
        * khtml/editing/visible_units.h: Ditto.
        * khtml/khtml_part.cpp: Ditto.
        * khtml/khtml_part.h: Ditto.
        * khtml/khtmlpart_p.h: Ditto.
        * khtml/rendering/render_block.cpp: Ditto.
        * khtml/xml/dom_docimpl.h: Ditto.
        * khtml/xml/dom_nodeimpl.cpp: Ditto.
        * kwq/KWQKHTMLPart.h: Ditto.
        * kwq/KWQKHTMLPart.mm: Ditto.
        * kwq/KWQRenderTreeDebug.cpp: Ditto.
        * kwq/WebCoreBridge.mm: Ditto.

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

30 files changed:
WebCore/ChangeLog-2005-08-23
WebCore/ForwardingHeaders/editing/selection.h [new file with mode: 0644]
WebCore/WebCore-combined.exp
WebCore/WebCore-tests.exp
WebCore/WebCore.pbproj/project.pbxproj
WebCore/khtml/ecma/kjs_window.cpp
WebCore/khtml/editing/SelectionController.cpp
WebCore/khtml/editing/SelectionController.h
WebCore/khtml/editing/htmlediting.cpp
WebCore/khtml/editing/htmlediting.h
WebCore/khtml/editing/htmlediting_impl.cpp
WebCore/khtml/editing/htmlediting_impl.h
WebCore/khtml/editing/jsediting.cpp
WebCore/khtml/editing/selection.cpp
WebCore/khtml/editing/selection.h
WebCore/khtml/editing/visible_position.cpp
WebCore/khtml/editing/visible_position.h
WebCore/khtml/editing/visible_text.h
WebCore/khtml/editing/visible_units.cpp
WebCore/khtml/editing/visible_units.h
WebCore/khtml/khtml_part.cpp
WebCore/khtml/khtml_part.h
WebCore/khtml/khtmlpart_p.h
WebCore/khtml/rendering/render_block.cpp
WebCore/khtml/xml/dom_docimpl.h
WebCore/khtml/xml/dom_nodeimpl.cpp
WebCore/kwq/KWQKHTMLPart.h
WebCore/kwq/KWQKHTMLPart.mm
WebCore/kwq/KWQRenderTreeDebug.cpp
WebCore/kwq/WebCoreBridge.mm

index ace932d7fd4701a52a541c0b4834be7930879e50..e69ae1ae7adac3ba1662ddd64d6119d4567f2d9a 100644 (file)
@@ -1,3 +1,43 @@
+2004-09-22  Darin Adler  <darin@apple.com>
+
+        - renamed
+
+            DOM::CaretPosition -> khtml::VisibleRange
+            DOM::Selection     -> khtml::Selection
+
+        - moved all the functions in visible_units.h from DOM to khtml namespace
+        - moved the one thing from Selection that KHTMLPart uses into its own header
+
+        * WebCore.pbproj/project.pbxproj: Added text_granularity.h.
+
+        * ForwardingHeaders/editing/selection.h: Added.
+        * WebCore-combined.exp: Regenerated.
+        * WebCore-tests.exp: Updated symbol for DOM::Selection debugging.
+
+        * khtml/ecma/kjs_window.cpp: Update names and namespaces.
+        * khtml/editing/htmlediting.cpp: Ditto.
+        * khtml/editing/htmlediting.h: Ditto.
+        * khtml/editing/htmlediting_impl.cpp: Ditto.
+        * khtml/editing/htmlediting_impl.h: Ditto.
+        * khtml/editing/jsediting.cpp: Ditto.
+        * khtml/editing/selection.cpp: Ditto.
+        * khtml/editing/selection.h: Ditto.
+        * khtml/editing/visible_position.cpp: Ditto.
+        * khtml/editing/visible_position.h: Ditto.
+        * khtml/editing/visible_text.h: Ditto.
+        * khtml/editing/visible_units.cpp: Ditto.
+        * khtml/editing/visible_units.h: Ditto.
+        * khtml/khtml_part.cpp: Ditto.
+        * khtml/khtml_part.h: Ditto.
+        * khtml/khtmlpart_p.h: Ditto.
+        * khtml/rendering/render_block.cpp: Ditto.
+        * khtml/xml/dom_docimpl.h: Ditto.
+        * khtml/xml/dom_nodeimpl.cpp: Ditto.
+        * kwq/KWQKHTMLPart.h: Ditto.
+        * kwq/KWQKHTMLPart.mm: Ditto.
+        * kwq/KWQRenderTreeDebug.cpp: Ditto.
+        * kwq/WebCoreBridge.mm: Ditto.
+
 2004-09-22  Darin Adler  <darin@apple.com>
 
         * ForwardingHeaders/*: Use import instead of include.
diff --git a/WebCore/ForwardingHeaders/editing/selection.h b/WebCore/ForwardingHeaders/editing/selection.h
new file mode 100644 (file)
index 0000000..54dc806
--- /dev/null
@@ -0,0 +1 @@
+#import <selection.h>
index f7f66f83a1f39d995a4ebcc977dfbe069aff113c..57bd3510b6b7c65b5497c6ec74f527a5a3e4abe5 100644 (file)
@@ -324,7 +324,6 @@ __ZNK3DOM8NodeImpl17formatForDebuggerEPcj
 __ZNK3DOM8Position17formatForDebuggerEPcj
 __ZNK3DOM8TextImpl17formatForDebuggerEPcj
 __ZNK3DOM9RangeImpl17formatForDebuggerEPcj
-__ZNK3DOM9Selection17formatForDebuggerEPcj
 __ZNK4KURL3refEv
 __ZNK4KURL3urlEv
 __ZNK4KURL4hostEv
@@ -355,6 +354,7 @@ __ZNK5QSize10expandedToERKS_
 __ZNK5QSize7isValidEv
 __ZNK5QTime4msecEv
 __ZNK5QTime7elapsedEv
+__ZNK5khtml9Selection17formatForDebuggerEPcj
 __ZNK7QRegExp5matchERK7QStringiPi
 __ZNK7QRegExp7patternEv
 __ZNK7QString10startsWithEPKc
index 898ef29129d622169f4d97882d0d85879a8cb85b..6939209ab9416ad6e168c8e9a218171c8b682233 100644 (file)
@@ -213,7 +213,6 @@ __ZNK3DOM8NodeImpl17formatForDebuggerEPcj
 __ZNK3DOM8Position17formatForDebuggerEPcj
 __ZNK3DOM8TextImpl17formatForDebuggerEPcj
 __ZNK3DOM9RangeImpl17formatForDebuggerEPcj
-__ZNK3DOM9Selection17formatForDebuggerEPcj
 __ZNK4KURL3refEv
 __ZNK4KURL3urlEv
 __ZNK4KURL4hostEv
@@ -244,6 +243,7 @@ __ZNK5QSize10expandedToERKS_
 __ZNK5QSize7isValidEv
 __ZNK5QTime4msecEv
 __ZNK5QTime7elapsedEv
+__ZNK5khtml9Selection17formatForDebuggerEPcj
 __ZNK7QRegExp5matchERK7QStringiPi
 __ZNK7QRegExp7patternEv
 __ZNK7QString10startsWithEPKc
index e1c2092036282112e97eccbdd7cc7f6eea5555c1..8f8ecc7400ac1b7cd183a13e84099ffcdf44bb65 100644 (file)
                                93ABE071070285F600BD91F9,
                                93ABE073070285F600BD91F9,
                                93ABE075070285F600BD91F9,
+                               932B9835070297DC0032804F,
                        );
                        isa = PBXHeadersBuildPhase;
                        runOnlyForDeploymentPostprocessing = 0;
                        settings = {
                        };
                };
+               932B9834070297DC0032804F = {
+                       fileEncoding = 30;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       name = text_granularity.h;
+                       path = editing/text_granularity.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               932B9835070297DC0032804F = {
+                       fileRef = 932B9834070297DC0032804F;
+                       isa = PBXBuildFile;
+                       settings = {
+                       };
+               };
                93386B90037045B3008635CE = {
                        fileEncoding = 4;
                        isa = PBXFileReference;
                };
                BEB1DD0805C197DF00DD1F43 = {
                        children = (
-                               BE9185E005EE59B80081354D,
                                BE9185DD05EE59B80081354D,
+                               BE9185E005EE59B80081354D,
                                BE9185DE05EE59B80081354D,
                                BE9185DF05EE59B80081354D,
                                BE02D4E6066F908A0076809F,
                                BE02D4E7066F908A0076809F,
                                93ABE067070285F600BD91F9,
                                93ABE066070285F600BD91F9,
+                               932B9834070297DC0032804F,
                                93ABE069070285F600BD91F9,
                                93ABE068070285F600BD91F9,
                                93ABE06B070285F600BD91F9,
index 613671f9d0fcc28f42fc4697a86a848bb92c2ec0..9ed50a2cdc6250e541fb9236269f4918c2b752c8 100644 (file)
@@ -56,6 +56,7 @@
 #include "dom/dom_string.h"
 #include "dom/dom_node.h"
 #include "editing/htmlediting.h"
+#include "editing/selection.h"
 #include "xml/dom2_eventsimpl.h"
 #include "xml/dom_docimpl.h"
 #include "xml/dom_position.h"
@@ -2242,11 +2243,11 @@ Value Selection::get(ExecState *exec, const Identifier &p) const
             return Boolean(!m_part->selection().isRange());
         case _Type: {
             switch (m_part->selection().state()) {
-                case DOM::Selection::NONE:
+                case khtml::Selection::NONE:
                     return String("None");
-                case DOM::Selection::CARET:
+                case khtml::Selection::CARET:
                     return String("Caret");
-                case DOM::Selection::RANGE:
+                case khtml::Selection::RANGE:
                     return String("Range");
             }
         }
@@ -2307,15 +2308,15 @@ Value SelectionFunc::tryCall(ExecState *exec, Object &thisObj, const List &args)
         switch (id) {
             case Selection::Collapse:
                 TypingCommand::closeTyping(part->lastEditCommand());
-                part->setSelection(DOM::Selection(Position(KJS::toNode(args[0]).handle(), args[1].toInt32(exec))));
+                part->setSelection(khtml::Selection(Position(KJS::toNode(args[0]).handle(), args[1].toInt32(exec))));
                 break;
             case Selection::CollapseToEnd:
                 TypingCommand::closeTyping(part->lastEditCommand());
-                part->setSelection(DOM::Selection(part->selection().end()));
+                part->setSelection(khtml::Selection(part->selection().end()));
                 break;
             case Selection::CollapseToStart:
                 TypingCommand::closeTyping(part->lastEditCommand());
-                part->setSelection(DOM::Selection(part->selection().start()));
+                part->setSelection(khtml::Selection(part->selection().start()));
                 break;
             case Selection::Empty:
                 TypingCommand::closeTyping(part->lastEditCommand());
@@ -2325,33 +2326,35 @@ Value SelectionFunc::tryCall(ExecState *exec, Object &thisObj, const List &args)
                 TypingCommand::closeTyping(part->lastEditCommand());
                 Position base(KJS::toNode(args[0]).handle(), args[1].toInt32(exec));
                 Position extent(KJS::toNode(args[2]).handle(), args[3].toInt32(exec));
-                part->setSelection(DOM::Selection(base, extent));
+                part->setSelection(khtml::Selection(base, extent));
                 break;
             }
             case Selection::SetPosition:
                 TypingCommand::closeTyping(part->lastEditCommand());
-                part->setSelection(DOM::Selection(Position(KJS::toNode(args[0]).handle(), args[1].toInt32(exec))));
+                part->setSelection(khtml::Selection(Position(KJS::toNode(args[0]).handle(), args[1].toInt32(exec))));
                 break;
             case Selection::Modify: {
                 TypingCommand::closeTyping(part->lastEditCommand());
-                DOM::Selection s(part->selection());
-                DOM::Selection::EAlter alter = DOM::Selection::MOVE;
+                khtml::Selection s(part->selection());
+                khtml::Selection::EAlter alter = khtml::Selection::MOVE;
                 if (args[0].toString(exec).string().lower() == "extend")
-                    alter = DOM::Selection::EXTEND;
+                    alter = khtml::Selection::EXTEND;
                 DOMString directionString = args[1].toString(exec).string().lower();
-                DOM::Selection::EDirection direction = DOM::Selection::FORWARD;
+                khtml::Selection::EDirection direction = khtml::Selection::FORWARD;
                 if (directionString == "backward")
-                    direction = DOM::Selection::BACKWARD;
+                    direction = khtml::Selection::BACKWARD;
                 else if (directionString == "left")
-                    direction = DOM::Selection::LEFT;
+                    direction = khtml::Selection::LEFT;
                 if (directionString == "right")
-                    direction = DOM::Selection::RIGHT;
-                DOM::Selection::ETextGranularity granularity = DOM::Selection::CHARACTER;
+                    direction = khtml::Selection::RIGHT;
+                khtml::ETextGranularity granularity = khtml::CHARACTER;
                 DOMString granularityString = args[2].toString(exec).string().lower();
                 if (granularityString == "word")
-                    granularity = DOM::Selection::WORD;
+                    granularity = khtml::WORD;
                 else if (granularityString == "line")
-                    granularity = DOM::Selection::LINE;
+                    granularity = khtml::LINE;
+                else if (granularityString == "pargraph")
+                    granularity = khtml::PARAGRAPH;
                 s.modify(alter, direction, granularity);
                 part->setSelection(s);
             }
index 8b68e6851f3e8108b3c6eefe55743e986e952f3c..929c1f78fed29e66398214bc322cf7af9238d2ce 100644 (file)
 
 #define EDIT_DEBUG 0
 
-using khtml::findWordBoundary;
-using khtml::InlineTextBox;
-using khtml::RenderObject;
-using khtml::RenderText;
-
-namespace DOM {
+using DOM::DOMString;
+using DOM::DOWNSTREAM;
+using DOM::ElementImpl;
+using DOM::Node;
+using DOM::NodeImpl;
+using DOM::Position;
+using DOM::Range;
+using DOM::RangeImpl;
+using DOM::StayInBlock;
+
+namespace khtml {
 
 static Selection selectionForLine(const Position &position);
 
@@ -89,7 +94,7 @@ Selection::Selection(const Position &base, const Position &extent)
     validate();
 }
 
-Selection::Selection(const CaretPosition &base, const CaretPosition &extent)
+Selection::Selection(const VisiblePosition &base, const VisiblePosition &extent)
     : m_base(base.position()), m_extent(extent.position())
 {
     init();
@@ -213,9 +218,9 @@ void Selection::setModifyBias(EAlter alter, EDirection direction)
     }
 }
 
-CaretPosition Selection::modifyExtendingRightForward(ETextGranularity granularity)
+VisiblePosition Selection::modifyExtendingRightForward(ETextGranularity granularity)
 {
-    CaretPosition pos = m_extent;
+    VisiblePosition pos = m_extent;
     switch (granularity) {
         case CHARACTER:
             pos = pos.next();
@@ -244,15 +249,15 @@ CaretPosition Selection::modifyExtendingRightForward(ETextGranularity granularit
     return pos;
 }
 
-CaretPosition Selection::modifyMovingRightForward(ETextGranularity granularity)
+VisiblePosition Selection::modifyMovingRightForward(ETextGranularity granularity)
 {
-    CaretPosition pos;
+    VisiblePosition pos;
     switch (granularity) {
         case CHARACTER:
             if (isRange()) 
                 pos = m_end;
             else
-                pos = CaretPosition(m_extent).next();
+                pos = VisiblePosition(m_extent).next();
             break;
         case WORD:
             pos = nextWordPosition(m_extent);
@@ -278,9 +283,9 @@ CaretPosition Selection::modifyMovingRightForward(ETextGranularity granularity)
     return pos;
 }
 
-CaretPosition Selection::modifyExtendingLeftBackward(ETextGranularity granularity)
+VisiblePosition Selection::modifyExtendingLeftBackward(ETextGranularity granularity)
 {
-    CaretPosition pos = m_extent;
+    VisiblePosition pos = m_extent;
     switch (granularity) {
         case CHARACTER:
             pos = pos.previous();
@@ -301,21 +306,21 @@ CaretPosition Selection::modifyExtendingLeftBackward(ETextGranularity granularit
             pos = startOfParagraph(m_start);
             break;
         case DOCUMENT_BOUNDARY:
-            pos = CaretPosition(m_start.node()->getDocument()->documentElement(), 0);
+            pos = VisiblePosition(m_start.node()->getDocument()->documentElement(), 0);
             break;
     }
     return pos;
 }
 
-CaretPosition Selection::modifyMovingLeftBackward(ETextGranularity granularity)
+VisiblePosition Selection::modifyMovingLeftBackward(ETextGranularity granularity)
 {
-    CaretPosition pos;
+    VisiblePosition pos;
     switch (granularity) {
         case CHARACTER:
             if (isRange()) 
                 pos = m_start;
             else
-                pos = CaretPosition(m_extent).previous();
+                pos = VisiblePosition(m_extent).previous();
             break;
         case WORD:
             pos = previousWordPosition(m_extent);
@@ -333,7 +338,7 @@ CaretPosition Selection::modifyMovingLeftBackward(ETextGranularity granularity)
             pos = startOfParagraph(m_start).deepEquivalent();
             break;
         case DOCUMENT_BOUNDARY:
-            pos = CaretPosition(m_start.node()->getDocument()->documentElement(), 0);
+            pos = VisiblePosition(m_start.node()->getDocument()->documentElement(), 0);
             break;
     }
     return pos;
@@ -343,7 +348,7 @@ bool Selection::modify(EAlter alter, EDirection dir, ETextGranularity granularit
 {
     setModifyBias(alter, dir);
 
-    CaretPosition pos;
+    VisiblePosition pos;
 
     switch (dir) {
         // EDIT FIXME: These need to handle bidi
@@ -379,7 +384,7 @@ bool Selection::modify(EAlter alter, EDirection dir, ETextGranularity granularit
 }
 
 // FIXME: Maybe baseline would be better?
-static bool caretY(const CaretPosition &c, int &y)
+static bool caretY(const VisiblePosition &c, int &y)
 {
     Position p = c.deepEquivalent();
     NodeImpl *n = p.node();
@@ -403,7 +408,7 @@ bool Selection::modify(EAlter alter, int verticalDistance)
 
     setModifyBias(alter, verticalDistance > 0 ? FORWARD : BACKWARD);
 
-    CaretPosition pos;
+    VisiblePosition pos;
 
     int xPos = 0; /* initialized only to make compiler happy */
     switch (alter) {
@@ -424,10 +429,10 @@ bool Selection::modify(EAlter alter, int verticalDistance)
         startY = -startY;
     int lastY = startY;
 
-    CaretPosition result;
+    VisiblePosition result;
 
-    CaretPosition next;
-    for (CaretPosition p = pos; ; p = next) {
+    VisiblePosition next;
+    for (VisiblePosition p = pos; ; p = next) {
         next = verticalDistance > 0
             ? nextLinePosition(p, xPos)
             : previousLinePosition(p, xPos);
@@ -770,8 +775,8 @@ void Selection::validate(ETextGranularity granularity)
             break;
         case DOCUMENT_BOUNDARY: {
             NodeImpl *de = m_start.node()->getDocument()->documentElement();
-            m_start = CaretPosition(de, 0).deepEquivalent();
-            m_end = CaretPosition(de, de ? de->childNodeCount() : 0).deepEquivalent();
+            m_start = VisiblePosition(de, 0).deepEquivalent();
+            m_end = VisiblePosition(de, de ? de->childNodeCount() : 0).deepEquivalent();
             break;
         }
         case PARAGRAPH_BOUNDARY:
index 898ec88e83bd294f3407e43e7e98cc1463af4ef0..8cf6ea01fd20755300190c7543a34662c9087852 100644 (file)
 
 #include <qrect.h>
 #include "xml/dom_position.h"
+#include "text_granularity.h"
 
 class KHTMLPart;
 class QPainter;
 
 namespace khtml {
-    class RenderObject;
-}
-
-namespace DOM {
 
-class CaretPosition;
+class RenderObject;
+class VisiblePosition;
 
 class Selection
 {
@@ -46,24 +44,27 @@ public:
     enum EState { NONE, CARET, RANGE };
     enum EAlter { MOVE, EXTEND };
     enum EDirection { FORWARD, BACKWARD, RIGHT, LEFT };
-    enum ETextGranularity { CHARACTER, WORD, LINE, PARAGRAPH, LINE_BOUNDARY, PARAGRAPH_BOUNDARY, DOCUMENT_BOUNDARY };
+
+    typedef DOM::EAffinity EAffinity;
+    typedef DOM::Range Range;
+    typedef DOM::Position Position;
 
     Selection();
     Selection(const Range &);
-    Selection(const CaretPosition &);
-    Selection(const CaretPosition &, const CaretPosition &);
+    Selection(const VisiblePosition &);
+    Selection(const VisiblePosition &, const VisiblePosition &);
     Selection(const Position &);
     Selection(const Position &, const Position &);
     Selection(const Selection &);
 
     Selection &operator=(const Selection &o);
     Selection &operator=(const Range &r) { moveTo(r); return *this; }
-    Selection &operator=(const CaretPosition &r) { moveTo(r); return *this; }
+    Selection &operator=(const VisiblePosition &r) { moveTo(r); return *this; }
     Selection &operator=(const Position &r) { moveTo(r); return *this; }
     
     void moveTo(const Range &);
-    void moveTo(const CaretPosition &);
-    void moveTo(const CaretPosition &, const CaretPosition &);
+    void moveTo(const VisiblePosition &);
+    void moveTo(const VisiblePosition &, const VisiblePosition &);
     void moveTo(const Position &);
     void moveTo(const Position &, const Position &);
     void moveTo(const Selection &);
@@ -77,9 +78,9 @@ public:
     bool expandUsingGranularity(ETextGranularity);
     void clear();
 
-    void setBase(const CaretPosition &);
-    void setExtent(const CaretPosition &);
-    void setBaseAndExtent(const CaretPosition &base, const CaretPosition &extent);
+    void setBase(const VisiblePosition &);
+    void setExtent(const VisiblePosition &);
+    void setBaseAndExtent(const VisiblePosition &base, const VisiblePosition &extent);
 
     void setBase(const Position &pos);
     void setExtent(const Position &pos);
@@ -118,10 +119,10 @@ private:
     void init();
     void validate(ETextGranularity granularity = CHARACTER);
 
-    CaretPosition modifyExtendingRightForward(ETextGranularity);
-    CaretPosition modifyMovingRightForward(ETextGranularity);
-    CaretPosition modifyExtendingLeftBackward(ETextGranularity);
-    CaretPosition modifyMovingLeftBackward(ETextGranularity);
+    VisiblePosition modifyExtendingRightForward(ETextGranularity);
+    VisiblePosition modifyMovingRightForward(ETextGranularity);
+    VisiblePosition modifyExtendingLeftBackward(ETextGranularity);
+    VisiblePosition modifyMovingLeftBackward(ETextGranularity);
 
     void layoutCaret();
     void needsCaretRepaint();
index 490905032d0e506f0d5c3ad19dd1c6f6d99b00ff..6d318c6cff901310f6b135c0a42e3ceeebe26db4 100644 (file)
@@ -44,7 +44,6 @@ using DOM::Position;
 using DOM::DOMString;
 using DOM::NodeImpl;
 using DOM::NodeListImpl;
-using DOM::Selection;
 using DOM::TextImpl;
 
 #if !APPLE_CHANGES
index 5591d766fc8784ffaa9c525f0dbe868189442397..7aff80ab1f0e8990cfe4b090e97da361cfdd7cd5 100644 (file)
@@ -30,7 +30,6 @@
 
 namespace DOM {
     class DocumentFragmentImpl;
-    class Selection;
     class TextImpl;
 }
 
@@ -41,7 +40,6 @@ class ApplyStyleCommandImpl;
 class CompositeEditCommandImpl;
 class DeleteSelectionCommandImpl;
 class DeleteTextCommandImpl;
-class EditCommand;
 class EditCommandImpl;
 class InputNewlineCommandImpl;
 class InputTextCommandImpl;
@@ -54,6 +52,7 @@ class RemoveCSSPropertyCommandImpl;
 class RemoveNodeAttributeCommandImpl;
 class RemoveNodeCommandImpl;
 class RemoveNodePreservingChildrenCommandImpl;
+class Selection;
 class SetNodeAttributeCommandImpl;
 class SplitTextNodeCommandImpl;
 class TypingCommandImpl;
@@ -79,11 +78,11 @@ public:
 
     DOM::DocumentImpl * const document() const;
 
-    DOM::Selection startingSelection() const;
-    DOM::Selection endingSelection() const;
+    khtml::Selection startingSelection() const;
+    khtml::Selection endingSelection() const;
 
-    void setStartingSelection(const DOM::Selection &s) const;
-    void setEndingSelection(const DOM::Selection &s) const;
+    void setStartingSelection(const khtml::Selection &s) const;
+    void setEndingSelection(const khtml::Selection &s) const;
 
     DOM::CSSStyleDeclarationImpl *typingStyle() const;
     void setTypingStyle(DOM::CSSStyleDeclarationImpl *) const;
@@ -148,7 +147,7 @@ class DeleteSelectionCommand : public CompositeEditCommand
 {
 public:
     DeleteSelectionCommand(DOM::DocumentImpl *document, bool smartDelete=false);
-    DeleteSelectionCommand(DOM::DocumentImpl *document, const DOM::Selection &selection, bool smartDelete=false);
+    DeleteSelectionCommand(DOM::DocumentImpl *document, const khtml::Selection &selection, bool smartDelete=false);
 
 private:
     DeleteSelectionCommandImpl *impl() const;
index 1a617a34df6c7bc33b48d22927a2f3f24812f486..38fed4a4cf97c09b1aa3f9783b8f0b526a5c2037 100644 (file)
@@ -59,7 +59,6 @@
 #endif
 
 using DOM::AttrImpl;
-using DOM::CaretPosition;
 using DOM::CSSComputedStyleDeclarationImpl;
 using DOM::CSSPrimitiveValue;
 using DOM::CSSPrimitiveValueImpl;
@@ -75,7 +74,6 @@ using DOM::EditingTextImpl;
 using DOM::ElementImpl;
 using DOM::HTMLElementImpl;
 using DOM::HTMLImageElementImpl;
-using DOM::LeftWordIfOnBoundary;
 using DOM::NamedAttrMapImpl;
 using DOM::Node;
 using DOM::NodeImpl;
@@ -84,7 +82,6 @@ using DOM::Position;
 using DOM::PositionIterator;
 using DOM::Range;
 using DOM::RangeImpl;
-using DOM::Selection;
 using DOM::StayInBlock;
 using DOM::TextImpl;
 using DOM::TreeWalkerImpl;
@@ -102,7 +99,6 @@ using DOM::TreeWalkerImpl;
 
 namespace khtml {
 
-
 static inline bool isNBSP(const QChar &c)
 {
     return c == QChar(0xa0);
@@ -352,7 +348,7 @@ void EditCommandImpl::setEndingSelection(const Selection &s)
         cmd->m_endingSelection = s;
 }
 
-void EditCommandImpl::assignTypingStyle(DOM::CSSStyleDeclarationImpl *style)
+void EditCommandImpl::assignTypingStyle(CSSStyleDeclarationImpl *style)
 {
     CSSStyleDeclarationImpl *old = m_typingStyle;
     m_typingStyle = style;
@@ -1078,9 +1074,9 @@ void DeleteSelectionCommandImpl::doApply()
 
     if (m_smartDelete) {
         if (!m_selectionToDelete.start().leadingWhitespacePosition().isNull()) {
-            m_selectionToDelete.modify(DOM::Selection::EXTEND, DOM::Selection::LEFT, DOM::Selection::CHARACTER);
+            m_selectionToDelete.modify(Selection::EXTEND, Selection::LEFT, CHARACTER);
         } else if (!m_selectionToDelete.end().trailingWhitespacePosition().isNull()) {
-            m_selectionToDelete.modify(DOM::Selection::EXTEND, DOM::Selection::RIGHT, DOM::Selection::CHARACTER);
+            m_selectionToDelete.modify(Selection::EXTEND, Selection::RIGHT, CHARACTER);
         }
     }
     
@@ -1391,7 +1387,7 @@ void InputNewlineCommandImpl::doApply()
     Position pos(selection.start().upstream(StayInBlock));
     bool atStart = pos.offset() <= pos.node()->caretMinOffset();
     bool atEnd = pos.offset() >= pos.node()->caretMaxOffset();
-    bool atEndOfBlock = CaretPosition(pos).isLastInBlock();
+    bool atEndOfBlock = VisiblePosition(pos).isLastInBlock();
     
     if (atEndOfBlock) {
         LOG(Editing, "input newline case 1");
@@ -1825,7 +1821,7 @@ void JoinTextNodesCommandImpl::doUnapply()
 //------------------------------------------------------------------------------------------
 // ReplaceSelectionCommandImpl
 
-ReplaceSelectionCommandImpl::ReplaceSelectionCommandImpl(DocumentImpl *document, DOM::DocumentFragmentImpl *fragment, bool selectReplacement, bool smartReplace) 
+ReplaceSelectionCommandImpl::ReplaceSelectionCommandImpl(DocumentImpl *document, DocumentFragmentImpl *fragment, bool selectReplacement, bool smartReplace) 
     : CompositeEditCommandImpl(document), m_fragment(fragment), m_selectReplacement(selectReplacement), m_smartReplace(smartReplace)
 {
     ASSERT(m_fragment);
@@ -1943,7 +1939,7 @@ void ReplaceSelectionCommandImpl::doApply()
 //------------------------------------------------------------------------------------------
 // MoveSelectionCommandImpl
 
-MoveSelectionCommandImpl::MoveSelectionCommandImpl(DocumentImpl *document, DOM::DocumentFragmentImpl *fragment, DOM::Position &position, bool smartMove) 
+MoveSelectionCommandImpl::MoveSelectionCommandImpl(DocumentImpl *document, DocumentFragmentImpl *fragment, Position &position, bool smartMove) 
     : CompositeEditCommandImpl(document), m_fragment(fragment), m_position(position), m_smartMove(smartMove)
 {
     ASSERT(m_fragment);
@@ -2238,7 +2234,7 @@ void SplitTextNodeCommandImpl::doUnapply()
 //------------------------------------------------------------------------------------------
 // TypingCommandImpl
 
-TypingCommandImpl::TypingCommandImpl(DocumentImpl *document, TypingCommand::ETypingCommand commandType, const DOM::DOMString &textToInsert, bool selectInsertedText)
+TypingCommandImpl::TypingCommandImpl(DocumentImpl *document, TypingCommand::ETypingCommand commandType, const DOMString &textToInsert, bool selectInsertedText)
     : CompositeEditCommandImpl(document), m_commandType(commandType), m_textToInsert(textToInsert), m_openForMoreTyping(true), m_applyEditing(false), m_selectInsertedText(selectInsertedText)
 {
 }
@@ -2269,11 +2265,11 @@ void TypingCommandImpl::markMisspellingsAfterTyping()
     // Since the word containing the current selection is never marked, this does a check to
     // see if typing made a new word that is not in the current selection. Basically, you
     // get this by being at the end of a word and typing a space.    
-    CaretPosition start(endingSelection().start());
-    CaretPosition previous = start.previous();
+    VisiblePosition start(endingSelection().start());
+    VisiblePosition previous = start.previous();
     if (previous.isNotNull()) {
-        CaretPosition p1 = startOfWord(previous, LeftWordIfOnBoundary);
-        CaretPosition p2 = startOfWord(start, LeftWordIfOnBoundary);
+        VisiblePosition p1 = startOfWord(previous, LeftWordIfOnBoundary);
+        VisiblePosition p2 = startOfWord(start, LeftWordIfOnBoundary);
         if (p1 != p2)
             markMisspellingsInSelection(Selection(p1, start));
     }
@@ -2336,8 +2332,8 @@ void TypingCommandImpl::issueCommandForDeleteKey()
             // Do nothing in the case that the caret is at the start of a
             // root editable element or at the start of a document.
             Position pos(endingSelection().start());
-            Position start = CaretPosition(pos).previous().deepEquivalent();
-            Position end = CaretPosition(pos).deepEquivalent();
+            Position start = VisiblePosition(pos).previous().deepEquivalent();
+            Position end = VisiblePosition(pos).deepEquivalent();
             if (start.isNotNull() && end.isNotNull() && start.node()->rootEditableElement() == end.node()->rootEditableElement())
                 selectionToDelete = Selection(start, end);
             break;
index 6328d086e67fa1ba93153f1114377fdd8e1a5b69..a210a07ad53f87000d4bfd5ebb1df0ba09a06ed9 100644 (file)
@@ -85,19 +85,19 @@ public:
 
     virtual DOM::DocumentImpl * const document() const { return m_document; }
 
-    DOM::Selection startingSelection() const { return m_startingSelection; }
-    DOM::Selection endingSelection() const { return m_endingSelection; }
+    khtml::Selection startingSelection() const { return m_startingSelection; }
+    khtml::Selection endingSelection() const { return m_endingSelection; }
         
     ECommandState state() const { return m_state; }
     void setState(ECommandState state) { m_state = state; }
 
-    void setStartingSelection(const DOM::Selection &s);
-    void setEndingSelection(const DOM::Selection &s);
+    void setStartingSelection(const khtml::Selection &s);
+    void setEndingSelection(const khtml::Selection &s);
 
     DOM::CSSStyleDeclarationImpl *typingStyle() const { return m_typingStyle; };
     void setTypingStyle(DOM::CSSStyleDeclarationImpl *);
     
-    void markMisspellingsInSelection(const DOM::Selection &s);
+    void markMisspellingsInSelection(const khtml::Selection &s);
 
     virtual bool isInputTextCommand() const;
     virtual bool isTypingCommand() const;
@@ -109,8 +109,8 @@ private:
 
     DOM::DocumentImpl *m_document;
     ECommandState m_state;
-    DOM::Selection m_startingSelection;
-    DOM::Selection m_endingSelection;
+    khtml::Selection m_startingSelection;
+    khtml::Selection m_endingSelection;
     DOM::CSSStyleDeclarationImpl *m_typingStyle;
     EditCommand m_parent;
 };
@@ -134,7 +134,7 @@ protected:
     void applyCommandToComposite(EditCommand &);
     void deleteKeyPressed();
     void deleteSelection(bool smartDelete=false);
-    void deleteSelection(const DOM::Selection &selection, bool smartDelete=false);
+    void deleteSelection(const khtml::Selection &selection, bool smartDelete=false);
     void deleteText(DOM::TextImpl *node, long offset, long count);
     void inputText(const DOM::DOMString &text, bool selectInsertedText = false);
     void insertNodeAfter(DOM::NodeImpl *insertChild, DOM::NodeImpl *refChild);
@@ -217,7 +217,7 @@ class DeleteSelectionCommandImpl : public CompositeEditCommandImpl
 { 
 public:
     DeleteSelectionCommandImpl(DOM::DocumentImpl *document, bool smartDelete=false);
-    DeleteSelectionCommandImpl(DOM::DocumentImpl *document, const DOM::Selection &selection, bool smartDelete=false);
+    DeleteSelectionCommandImpl(DOM::DocumentImpl *document, const khtml::Selection &selection, bool smartDelete=false);
        
     virtual void doApply();
     
@@ -228,7 +228,7 @@ private:
     bool containsOnlyWhitespace(const DOM::Position &start, const DOM::Position &end);
     void moveNodesAfterNode(DOM::NodeImpl *startNode, DOM::NodeImpl *dstNode);
 
-    DOM::Selection m_selectionToDelete;
+    khtml::Selection m_selectionToDelete;
     bool m_hasSelectionToDelete;
     bool m_smartDelete;
 };
index 5f27071b338b80acb8a5f4c4b998a514469f28bf..8722e2dc0de0e695247feb34f53115fd48d3c485 100644 (file)
@@ -28,6 +28,7 @@
 #include <qstring.h>
 
 #include "htmlediting.h"
+#include "selection.h"
 
 #include "khtml_part.h"
 #include "css/cssproperties.h"
index 8b68e6851f3e8108b3c6eefe55743e986e952f3c..929c1f78fed29e66398214bc322cf7af9238d2ce 100644 (file)
 
 #define EDIT_DEBUG 0
 
-using khtml::findWordBoundary;
-using khtml::InlineTextBox;
-using khtml::RenderObject;
-using khtml::RenderText;
-
-namespace DOM {
+using DOM::DOMString;
+using DOM::DOWNSTREAM;
+using DOM::ElementImpl;
+using DOM::Node;
+using DOM::NodeImpl;
+using DOM::Position;
+using DOM::Range;
+using DOM::RangeImpl;
+using DOM::StayInBlock;
+
+namespace khtml {
 
 static Selection selectionForLine(const Position &position);
 
@@ -89,7 +94,7 @@ Selection::Selection(const Position &base, const Position &extent)
     validate();
 }
 
-Selection::Selection(const CaretPosition &base, const CaretPosition &extent)
+Selection::Selection(const VisiblePosition &base, const VisiblePosition &extent)
     : m_base(base.position()), m_extent(extent.position())
 {
     init();
@@ -213,9 +218,9 @@ void Selection::setModifyBias(EAlter alter, EDirection direction)
     }
 }
 
-CaretPosition Selection::modifyExtendingRightForward(ETextGranularity granularity)
+VisiblePosition Selection::modifyExtendingRightForward(ETextGranularity granularity)
 {
-    CaretPosition pos = m_extent;
+    VisiblePosition pos = m_extent;
     switch (granularity) {
         case CHARACTER:
             pos = pos.next();
@@ -244,15 +249,15 @@ CaretPosition Selection::modifyExtendingRightForward(ETextGranularity granularit
     return pos;
 }
 
-CaretPosition Selection::modifyMovingRightForward(ETextGranularity granularity)
+VisiblePosition Selection::modifyMovingRightForward(ETextGranularity granularity)
 {
-    CaretPosition pos;
+    VisiblePosition pos;
     switch (granularity) {
         case CHARACTER:
             if (isRange()) 
                 pos = m_end;
             else
-                pos = CaretPosition(m_extent).next();
+                pos = VisiblePosition(m_extent).next();
             break;
         case WORD:
             pos = nextWordPosition(m_extent);
@@ -278,9 +283,9 @@ CaretPosition Selection::modifyMovingRightForward(ETextGranularity granularity)
     return pos;
 }
 
-CaretPosition Selection::modifyExtendingLeftBackward(ETextGranularity granularity)
+VisiblePosition Selection::modifyExtendingLeftBackward(ETextGranularity granularity)
 {
-    CaretPosition pos = m_extent;
+    VisiblePosition pos = m_extent;
     switch (granularity) {
         case CHARACTER:
             pos = pos.previous();
@@ -301,21 +306,21 @@ CaretPosition Selection::modifyExtendingLeftBackward(ETextGranularity granularit
             pos = startOfParagraph(m_start);
             break;
         case DOCUMENT_BOUNDARY:
-            pos = CaretPosition(m_start.node()->getDocument()->documentElement(), 0);
+            pos = VisiblePosition(m_start.node()->getDocument()->documentElement(), 0);
             break;
     }
     return pos;
 }
 
-CaretPosition Selection::modifyMovingLeftBackward(ETextGranularity granularity)
+VisiblePosition Selection::modifyMovingLeftBackward(ETextGranularity granularity)
 {
-    CaretPosition pos;
+    VisiblePosition pos;
     switch (granularity) {
         case CHARACTER:
             if (isRange()) 
                 pos = m_start;
             else
-                pos = CaretPosition(m_extent).previous();
+                pos = VisiblePosition(m_extent).previous();
             break;
         case WORD:
             pos = previousWordPosition(m_extent);
@@ -333,7 +338,7 @@ CaretPosition Selection::modifyMovingLeftBackward(ETextGranularity granularity)
             pos = startOfParagraph(m_start).deepEquivalent();
             break;
         case DOCUMENT_BOUNDARY:
-            pos = CaretPosition(m_start.node()->getDocument()->documentElement(), 0);
+            pos = VisiblePosition(m_start.node()->getDocument()->documentElement(), 0);
             break;
     }
     return pos;
@@ -343,7 +348,7 @@ bool Selection::modify(EAlter alter, EDirection dir, ETextGranularity granularit
 {
     setModifyBias(alter, dir);
 
-    CaretPosition pos;
+    VisiblePosition pos;
 
     switch (dir) {
         // EDIT FIXME: These need to handle bidi
@@ -379,7 +384,7 @@ bool Selection::modify(EAlter alter, EDirection dir, ETextGranularity granularit
 }
 
 // FIXME: Maybe baseline would be better?
-static bool caretY(const CaretPosition &c, int &y)
+static bool caretY(const VisiblePosition &c, int &y)
 {
     Position p = c.deepEquivalent();
     NodeImpl *n = p.node();
@@ -403,7 +408,7 @@ bool Selection::modify(EAlter alter, int verticalDistance)
 
     setModifyBias(alter, verticalDistance > 0 ? FORWARD : BACKWARD);
 
-    CaretPosition pos;
+    VisiblePosition pos;
 
     int xPos = 0; /* initialized only to make compiler happy */
     switch (alter) {
@@ -424,10 +429,10 @@ bool Selection::modify(EAlter alter, int verticalDistance)
         startY = -startY;
     int lastY = startY;
 
-    CaretPosition result;
+    VisiblePosition result;
 
-    CaretPosition next;
-    for (CaretPosition p = pos; ; p = next) {
+    VisiblePosition next;
+    for (VisiblePosition p = pos; ; p = next) {
         next = verticalDistance > 0
             ? nextLinePosition(p, xPos)
             : previousLinePosition(p, xPos);
@@ -770,8 +775,8 @@ void Selection::validate(ETextGranularity granularity)
             break;
         case DOCUMENT_BOUNDARY: {
             NodeImpl *de = m_start.node()->getDocument()->documentElement();
-            m_start = CaretPosition(de, 0).deepEquivalent();
-            m_end = CaretPosition(de, de ? de->childNodeCount() : 0).deepEquivalent();
+            m_start = VisiblePosition(de, 0).deepEquivalent();
+            m_end = VisiblePosition(de, de ? de->childNodeCount() : 0).deepEquivalent();
             break;
         }
         case PARAGRAPH_BOUNDARY:
index 898ec88e83bd294f3407e43e7e98cc1463af4ef0..8cf6ea01fd20755300190c7543a34662c9087852 100644 (file)
 
 #include <qrect.h>
 #include "xml/dom_position.h"
+#include "text_granularity.h"
 
 class KHTMLPart;
 class QPainter;
 
 namespace khtml {
-    class RenderObject;
-}
-
-namespace DOM {
 
-class CaretPosition;
+class RenderObject;
+class VisiblePosition;
 
 class Selection
 {
@@ -46,24 +44,27 @@ public:
     enum EState { NONE, CARET, RANGE };
     enum EAlter { MOVE, EXTEND };
     enum EDirection { FORWARD, BACKWARD, RIGHT, LEFT };
-    enum ETextGranularity { CHARACTER, WORD, LINE, PARAGRAPH, LINE_BOUNDARY, PARAGRAPH_BOUNDARY, DOCUMENT_BOUNDARY };
+
+    typedef DOM::EAffinity EAffinity;
+    typedef DOM::Range Range;
+    typedef DOM::Position Position;
 
     Selection();
     Selection(const Range &);
-    Selection(const CaretPosition &);
-    Selection(const CaretPosition &, const CaretPosition &);
+    Selection(const VisiblePosition &);
+    Selection(const VisiblePosition &, const VisiblePosition &);
     Selection(const Position &);
     Selection(const Position &, const Position &);
     Selection(const Selection &);
 
     Selection &operator=(const Selection &o);
     Selection &operator=(const Range &r) { moveTo(r); return *this; }
-    Selection &operator=(const CaretPosition &r) { moveTo(r); return *this; }
+    Selection &operator=(const VisiblePosition &r) { moveTo(r); return *this; }
     Selection &operator=(const Position &r) { moveTo(r); return *this; }
     
     void moveTo(const Range &);
-    void moveTo(const CaretPosition &);
-    void moveTo(const CaretPosition &, const CaretPosition &);
+    void moveTo(const VisiblePosition &);
+    void moveTo(const VisiblePosition &, const VisiblePosition &);
     void moveTo(const Position &);
     void moveTo(const Position &, const Position &);
     void moveTo(const Selection &);
@@ -77,9 +78,9 @@ public:
     bool expandUsingGranularity(ETextGranularity);
     void clear();
 
-    void setBase(const CaretPosition &);
-    void setExtent(const CaretPosition &);
-    void setBaseAndExtent(const CaretPosition &base, const CaretPosition &extent);
+    void setBase(const VisiblePosition &);
+    void setExtent(const VisiblePosition &);
+    void setBaseAndExtent(const VisiblePosition &base, const VisiblePosition &extent);
 
     void setBase(const Position &pos);
     void setExtent(const Position &pos);
@@ -118,10 +119,10 @@ private:
     void init();
     void validate(ETextGranularity granularity = CHARACTER);
 
-    CaretPosition modifyExtendingRightForward(ETextGranularity);
-    CaretPosition modifyMovingRightForward(ETextGranularity);
-    CaretPosition modifyExtendingLeftBackward(ETextGranularity);
-    CaretPosition modifyMovingLeftBackward(ETextGranularity);
+    VisiblePosition modifyExtendingRightForward(ETextGranularity);
+    VisiblePosition modifyMovingRightForward(ETextGranularity);
+    VisiblePosition modifyExtendingLeftBackward(ETextGranularity);
+    VisiblePosition modifyMovingLeftBackward(ETextGranularity);
 
     void layoutCaret();
     void needsCaretRepaint();
index 3a6198fb9d2504b0faf552bdd86f386085cbd32d..82608231a07e653f481e7c91581e266976af175f 100644 (file)
 #define LOG(channel, formatAndArgs...) ((void)0)
 #endif
 
-using khtml::InlineTextBox;
-using khtml::RenderObject;
-using khtml::RenderText;
-using khtml::VISIBLE;
+using DOM::CharacterDataImpl;
+using DOM::offsetInCharacters;
+using DOM::Position;
+using DOM::Range;
+using DOM::RangeImpl;
 
-namespace DOM {
+namespace khtml {
 
-CaretPosition::CaretPosition(NodeImpl *node, long offset)
+VisiblePosition::VisiblePosition(NodeImpl *node, long offset)
 {
     init(Position(node, offset));
 }
 
-CaretPosition::CaretPosition(const Position &pos)
+VisiblePosition::VisiblePosition(const Position &pos)
 {
     init(pos);
 }
 
-void CaretPosition::init(const Position &pos)
+void VisiblePosition::init(const Position &pos)
 {
     Position deepPos = deepEquivalent(pos);
     
     if (isCandidate(deepPos)) {
         m_deepPosition = deepPos;
-        Position previous = previousCaretPosition(deepPos);
+        Position previous = previousVisiblePosition(deepPos);
         if (previous.isNotNull()) {
-            Position next = nextCaretPosition(previous);
+            Position next = nextVisiblePosition(previous);
             if (next.isNotNull())
                 m_deepPosition = next;
         }
     }
     else {
-        Position next = nextCaretPosition(deepPos);
+        Position next = nextVisiblePosition(deepPos);
         if (next.isNotNull()) {
             m_deepPosition = next;
         }
         else {
-            Position previous = previousCaretPosition(deepPos);
+            Position previous = previousVisiblePosition(deepPos);
             if (previous.isNotNull())
                 m_deepPosition = previous;
         }
     }
 }
 
-bool CaretPosition::isLastInBlock() const
+bool VisiblePosition::isLastInBlock() const
 {
     if (isNull())
         return false;
         
-    CaretPosition n = next();
+    VisiblePosition n = next();
     return n.isNull() || (n.deepEquivalent().node()->enclosingBlockFlowElement() != m_deepPosition.node()->enclosingBlockFlowElement());
 }
 
-CaretPosition CaretPosition::next() const
+VisiblePosition VisiblePosition::next() const
 {
-    CaretPosition result;
-    result.m_deepPosition = nextCaretPosition(m_deepPosition);
+    VisiblePosition result;
+    result.m_deepPosition = nextVisiblePosition(m_deepPosition);
     return result;
 }
 
-CaretPosition CaretPosition::previous() const
+VisiblePosition VisiblePosition::previous() const
 {
-    CaretPosition result;
-    result.m_deepPosition = previousCaretPosition(m_deepPosition);
+    VisiblePosition result;
+    result.m_deepPosition = previousVisiblePosition(m_deepPosition);
     return result;
 }
 
-Position CaretPosition::previousCaretPosition(const Position &pos)
+Position VisiblePosition::previousVisiblePosition(const Position &pos)
 {
     if (pos.isNull() || atStart(pos))
         return Position();
 
     Position test = deepEquivalent(pos);
-    bool acceptAnyCaretPosition = !isCandidate(test) || pos.isFirstRenderedPositionOnLine();
+    bool acceptAnyVisiblePosition = !isCandidate(test) || pos.isFirstRenderedPositionOnLine();
 
     Position current = test;
     while (!atStart(current)) {
         current = previousPosition(current);
-        if (isCandidate(current) && (acceptAnyCaretPosition || current.rendersInDifferentPosition(test))) {
+        if (isCandidate(current) && (acceptAnyVisiblePosition || current.rendersInDifferentPosition(test))) {
             return current;
         }
     }
@@ -122,18 +123,18 @@ Position CaretPosition::previousCaretPosition(const Position &pos)
     return Position();
 }
 
-Position CaretPosition::nextCaretPosition(const Position &pos)
+Position VisiblePosition::nextVisiblePosition(const Position &pos)
 {
     if (pos.isNull() || atEnd(pos))
         return Position();
 
     Position test = deepEquivalent(pos);
-    bool acceptAnyCaretPosition = !isCandidate(test) || pos.isLastRenderedPositionOnLine();
+    bool acceptAnyVisiblePosition = !isCandidate(test) || pos.isLastRenderedPositionOnLine();
 
     Position current = test;
     while (!atEnd(current)) {
         current = nextPosition(current);
-        if (isCandidate(current) && (acceptAnyCaretPosition || current.rendersInDifferentPosition(test))) {
+        if (isCandidate(current) && (acceptAnyVisiblePosition || current.rendersInDifferentPosition(test))) {
             return current;
         }
     }
@@ -141,7 +142,7 @@ Position CaretPosition::nextCaretPosition(const Position &pos)
     return Position();
 }
 
-Position CaretPosition::previousPosition(const Position &pos)
+Position VisiblePosition::previousPosition(const Position &pos)
 {
     if (pos.isNull())
         return pos;
@@ -160,7 +161,7 @@ Position CaretPosition::previousPosition(const Position &pos)
     return result;
 }
 
-Position CaretPosition::nextPosition(const Position &pos)
+Position VisiblePosition::nextPosition(const Position &pos)
 {
     if (pos.isNull())
         return pos;
@@ -179,7 +180,7 @@ Position CaretPosition::nextPosition(const Position &pos)
     return result;
 }
 
-bool CaretPosition::atStart(const Position &pos)
+bool VisiblePosition::atStart(const Position &pos)
 {
     if (pos.isNull())
         return true;
@@ -187,7 +188,7 @@ bool CaretPosition::atStart(const Position &pos)
     return pos.offset() <= 0 && pos.node()->previousLeafNode() == 0;
 }
 
-bool CaretPosition::atEnd(const Position &pos)
+bool VisiblePosition::atEnd(const Position &pos)
 {
     if (pos.isNull())
         return true;
@@ -195,7 +196,7 @@ bool CaretPosition::atEnd(const Position &pos)
     return pos.offset() >= pos.node()->maxOffset() && pos.node()->nextLeafNode() == 0;
 }
 
-bool CaretPosition::isCandidate(const Position &pos)
+bool VisiblePosition::isCandidate(const Position &pos)
 {
     if (pos.isNull())
         return false;
@@ -238,7 +239,7 @@ bool CaretPosition::isCandidate(const Position &pos)
     return false;
 }
 
-Position CaretPosition::deepEquivalent(const Position &pos)
+Position VisiblePosition::deepEquivalent(const Position &pos)
 {
     NodeImpl *node = pos.node();
     long offset = pos.offset();
@@ -278,7 +279,7 @@ Position CaretPosition::deepEquivalent(const Position &pos)
     return Position(node, 0);
 }
 
-Position CaretPosition::rangeCompliantEquivalent(const Position &pos)
+Position VisiblePosition::rangeCompliantEquivalent(const Position &pos)
 {
     NodeImpl *node = pos.node();
     if (!node)
@@ -294,17 +295,17 @@ Position CaretPosition::rangeCompliantEquivalent(const Position &pos)
     return Position(node, kMax(0L, kMin(offset, maxOffset(node))));
 }
 
-long CaretPosition::maxOffset(const NodeImpl *node)
+long VisiblePosition::maxOffset(const NodeImpl *node)
 {
     return offsetInCharacters(node->nodeType()) ? (long)static_cast<const CharacterDataImpl *>(node)->length() : (long)node->childNodeCount();
 }
 
-bool CaretPosition::isAtomicNode(const NodeImpl *node)
+bool VisiblePosition::isAtomicNode(const NodeImpl *node)
 {
     return node && (!node->hasChildNodes() || (node->id() == ID_OBJECT && node->renderer() && node->renderer()->isReplaced()));
 }
 
-void CaretPosition::debugPosition(const char *msg) const
+void VisiblePosition::debugPosition(const char *msg) const
 {
     if (isNull())
         fprintf(stderr, "Position [%s]: null\n", msg);
@@ -313,30 +314,30 @@ void CaretPosition::debugPosition(const char *msg) const
 }
 
 #ifndef NDEBUG
-void CaretPosition::formatForDebugger(char *buffer, unsigned length) const
+void VisiblePosition::formatForDebugger(char *buffer, unsigned length) const
 {
     m_deepPosition.formatForDebugger(buffer, length);
 }
 #endif
 
-Range makeRange(const CaretPosition &start, const CaretPosition &end)
+Range makeRange(const VisiblePosition &start, const VisiblePosition &end)
 {
     Position s = start.position();
     Position e = end.position();
     return Range(s.node(), s.offset(), e.node(), e.offset());
 }
 
-CaretPosition start(const Range &r)
+VisiblePosition startVisiblePosition(const Range &r)
 {
-    return CaretPosition(r.startContainer().handle(), r.startOffset());
+    return VisiblePosition(r.startContainer().handle(), r.startOffset());
 }
 
-CaretPosition end(const Range &r)
+VisiblePosition endVisiblePosition(const Range &r)
 {
-    return CaretPosition(r.endContainer().handle(), r.endOffset());
+    return VisiblePosition(r.endContainer().handle(), r.endOffset());
 }
 
-bool setStart(Range &r, const CaretPosition &c)
+bool setStart(Range &r, const VisiblePosition &c)
 {
     RangeImpl *ri = r.handle();
     if (!ri)
@@ -347,7 +348,7 @@ bool setStart(Range &r, const CaretPosition &c)
     return code == 0;
 }
 
-bool setEnd(Range &r, const CaretPosition &c)
+bool setEnd(Range &r, const VisiblePosition &c)
 {
     RangeImpl *ri = r.handle();
     if (!ri)
index a029c9ac010495456aad9889d11c99b09acc0198..7e4743ec5f05d55fec8ee8af00d07f266f01c48d 100644 (file)
 #include "xml/dom_position.h"
 
 namespace DOM {
+    class Range;
+    class RangeImpl;
+}
 
-class Range;
-class RangeImpl;
+namespace khtml {
 
-class CaretPosition
+class VisiblePosition
 {
 public:
-    CaretPosition() { }
-    CaretPosition(NodeImpl *, long offset);
-    CaretPosition(const Position &);
+    typedef DOM::NodeImpl NodeImpl;
+    typedef DOM::Position Position;
+
+    VisiblePosition() { }
+    VisiblePosition(NodeImpl *, long offset);
+    VisiblePosition(const Position &);
 
     void clear() { m_deepPosition.clear(); }
 
@@ -48,10 +53,10 @@ public:
     Position position() const { return rangeCompliantEquivalent(m_deepPosition); }
     Position deepEquivalent() const { return m_deepPosition; }
 
-    friend inline bool operator==(const CaretPosition &a, const CaretPosition &b);
+    friend inline bool operator==(const VisiblePosition &a, const VisiblePosition &b);
 
-    CaretPosition next() const;
-    CaretPosition previous() const;
+    VisiblePosition next() const;
+    VisiblePosition previous() const;
 
     bool isLastInBlock() const;
 
@@ -70,8 +75,8 @@ private:
     static long maxOffset(const NodeImpl *);
     static bool isAtomicNode(const NodeImpl *);
     
-    static Position previousCaretPosition(const Position &);
-    static Position nextCaretPosition(const Position &);
+    static Position previousVisiblePosition(const Position &);
+    static Position nextVisiblePosition(const Position &);
 
     static Position previousPosition(const Position &);
     static Position nextPosition(const Position &);
@@ -84,25 +89,25 @@ private:
     Position m_deepPosition;
 };
 
-inline bool operator==(const CaretPosition &a, const CaretPosition &b)
+inline bool operator==(const VisiblePosition &a, const VisiblePosition &b)
 {
     return a.m_deepPosition == b.m_deepPosition;
 }
 
-inline bool operator!=(const CaretPosition &a, const CaretPosition &b)
+inline bool operator!=(const VisiblePosition &a, const VisiblePosition &b)
 {
     return !(a == b);
 }
 
-Range makeRange(const CaretPosition &start, const CaretPosition &end);
-bool setStart(Range &, const CaretPosition &start);
-bool setStart(RangeImpl *, const CaretPosition &start);
-bool setEnd(Range &, const CaretPosition &start);
-bool setEnd(RangeImpl *, const CaretPosition &start);
-CaretPosition start(const Range &);
-CaretPosition start(const RangeImpl *);
-CaretPosition end(const Range &);
-CaretPosition end(const RangeImpl *);
+DOM::Range makeRange(const VisiblePosition &start, const VisiblePosition &end);
+bool setStart(DOM::Range &, const VisiblePosition &start);
+bool setStart(DOM::RangeImpl *, const VisiblePosition &start);
+bool setEnd(DOM::Range &, const VisiblePosition &start);
+bool setEnd(DOM::RangeImpl *, const VisiblePosition &start);
+VisiblePosition startVisiblePosition(const DOM::Range &);
+VisiblePosition startVisiblePosition(const DOM::RangeImpl *);
+VisiblePosition endVisiblePosition(const DOM::Range &);
+VisiblePosition endVisiblePosition(const DOM::RangeImpl *);
 
 } // namespace DOM
 
index 99e25bc3f231c1bd4570c1a5db21bebe32b81923..e5fb86f9c6d79d1ca8c24524eb02f45b374a23b9 100644 (file)
@@ -168,7 +168,6 @@ private:
     TextIterator m_textIterator;
 };
     
-
 // Very similar to the TextIterator, except that the chunks of text returned are "well behaved",
 // meaning they never end split up a word.  This is useful for spellcheck or (perhaps one day) searching.
 class WordAwareIterator {
index 590e19ff3c34d2071fae7d84cce8de476a6cb036..fe7a470cc51aa528d751315877b6d4cce76d201d 100644 (file)
 #include "visible_text.h"
 #include "xml/dom_docimpl.h"
 
-using khtml::CharacterIterator;
-using khtml::findWordBoundary;
-using khtml::nextWordFromIndex;
-using khtml::PRE;
-using khtml::RenderObject;
-using khtml::RenderStyle;
-using khtml::RenderText;
-using khtml::SimplifiedBackwardsTextIterator;
-using khtml::TextIterator;
-using khtml::VISIBLE;
-
-namespace DOM {
-
-static CaretPosition previousWordBoundary(const CaretPosition &c, unsigned (*searchFunction)(const QChar *, unsigned))
+using DOM::DocumentImpl;
+using DOM::DOWNSTREAM;
+using DOM::NodeImpl;
+using DOM::Position;
+using DOM::Range;
+using DOM::UPSTREAM;
+
+namespace khtml {
+
+static VisiblePosition previousWordBoundary(const VisiblePosition &c, unsigned (*searchFunction)(const QChar *, unsigned))
 {
     Position pos = c.deepEquivalent();
     NodeImpl *n = pos.node();
     if (!n)
-        return CaretPosition();
+        return VisiblePosition();
     DocumentImpl *d = n->getDocument();
     if (!d)
-        return CaretPosition();
+        return VisiblePosition();
     NodeImpl *de = d->documentElement();
     if (!de)
-        return CaretPosition();
+        return VisiblePosition();
 
     Range searchRange(d);
     searchRange.setStartBefore(de);
@@ -117,18 +113,18 @@ static CaretPosition previousWordBoundary(const CaretPosition &c, unsigned (*sea
     return pos.equivalentDeepPosition().closestRenderedPosition(DOWNSTREAM);
 }
 
-static CaretPosition nextWordBoundary(const CaretPosition &c, unsigned (*searchFunction)(const QChar *, unsigned))
+static VisiblePosition nextWordBoundary(const VisiblePosition &c, unsigned (*searchFunction)(const QChar *, unsigned))
 {
     Position pos = c.deepEquivalent();
     NodeImpl *n = pos.node();
     if (!n)
-        return CaretPosition();
+        return VisiblePosition();
     DocumentImpl *d = n->getDocument();
     if (!d)
-        return CaretPosition();
+        return VisiblePosition();
     NodeImpl *de = d->documentElement();
     if (!de)
-        return CaretPosition();
+        return VisiblePosition();
 
     Range searchRange(d);
     Position start(pos.equivalentRangeCompliantPosition());
@@ -184,9 +180,9 @@ static unsigned startWordBoundary(const QChar *characters, unsigned length)
     return start;
 }
 
-CaretPosition startOfWord(const CaretPosition &c, EWordSide side)
+VisiblePosition startOfWord(const VisiblePosition &c, EWordSide side)
 {
-    CaretPosition p = c;
+    VisiblePosition p = c;
     if (side == RightWordIfOnBoundary) {
         p = c.next();
         if (p.isNull())
@@ -202,9 +198,9 @@ static unsigned endWordBoundary(const QChar *characters, unsigned length)
     return end;
 }
 
-CaretPosition endOfWord(const CaretPosition &c, EWordSide side)
+VisiblePosition endOfWord(const VisiblePosition &c, EWordSide side)
 {
-    CaretPosition p = c;
+    VisiblePosition p = c;
     if (side == LeftWordIfOnBoundary) {
         p = c.previous();
         if (p.isNull())
@@ -218,7 +214,7 @@ static unsigned previousWordPositionBoundary(const QChar *characters, unsigned l
     return nextWordFromIndex(characters, length, length, false);
 }
 
-CaretPosition previousWordPosition(const CaretPosition &c)
+VisiblePosition previousWordPosition(const VisiblePosition &c)
 {
     return previousWordBoundary(c, previousWordPositionBoundary);
 }
@@ -228,27 +224,27 @@ static unsigned nextWordPositionBoundary(const QChar *characters, unsigned lengt
     return nextWordFromIndex(characters, length, 0, true);
 }
 
-CaretPosition nextWordPosition(const CaretPosition &c)
+VisiblePosition nextWordPosition(const VisiblePosition &c)
 {
     return nextWordBoundary(c, nextWordPositionBoundary);
 }
 
-CaretPosition previousLinePosition(const CaretPosition &c, int x)
+VisiblePosition previousLinePosition(const VisiblePosition &c, int x)
 {
     return c.deepEquivalent().previousLinePosition(x);
 }
 
-CaretPosition nextLinePosition(const CaretPosition &c, int x)
+VisiblePosition nextLinePosition(const VisiblePosition &c, int x)
 {
     return c.deepEquivalent().nextLinePosition(x);
 }
 
-CaretPosition startOfParagraph(const CaretPosition &c)
+VisiblePosition startOfParagraph(const VisiblePosition &c)
 {
     Position p = c.deepEquivalent();
     NodeImpl *startNode = p.node();
     if (!startNode)
-        return CaretPosition();
+        return VisiblePosition();
 
     NodeImpl *startBlock = startNode->enclosingBlockFlowElement();
 
@@ -273,7 +269,7 @@ CaretPosition startOfParagraph(const CaretPosition &c)
                     i = kMax(0L, o);
                 while (--i >= 0)
                     if (text[i] == '\n')
-                        return CaretPosition(n, i + 1);
+                        return VisiblePosition(n, i + 1);
             }
             node = n;
             offset = 0;
@@ -283,16 +279,16 @@ CaretPosition startOfParagraph(const CaretPosition &c)
         }
     }
 
-    return CaretPosition(node, offset);
+    return VisiblePosition(node, offset);
 }
 
-CaretPosition endOfParagraph(const CaretPosition &c, EIncludeLineBreak includeLineBreak)
+VisiblePosition endOfParagraph(const VisiblePosition &c, EIncludeLineBreak includeLineBreak)
 {
     Position p = c.deepEquivalent();
 
     NodeImpl *startNode = p.node();
     if (!startNode)
-        return CaretPosition();
+        return VisiblePosition();
 
     NodeImpl *startBlock = startNode->enclosingBlockFlowElement();
 
@@ -308,12 +304,12 @@ CaretPosition endOfParagraph(const CaretPosition &c, EIncludeLineBreak includeLi
             continue;
         if (r->isBR()) {
             if (includeLineBreak)
-                return CaretPosition(n, 1);
+                return VisiblePosition(n, 1);
             break;
         }
         if (r->isBlockFlow()) {
             if (includeLineBreak)
-                return CaretPosition(n, 0);
+                return VisiblePosition(n, 0);
             break;
         }
         if (r->isText()) {
@@ -325,7 +321,7 @@ CaretPosition endOfParagraph(const CaretPosition &c, EIncludeLineBreak includeLi
                     o = offset;
                 for (long i = o; i < length; ++i)
                     if (text[i] == '\n')
-                        return CaretPosition(n, i + includeLineBreak);
+                        return VisiblePosition(n, i + includeLineBreak);
             }
             node = n;
             offset = length;
@@ -335,19 +331,19 @@ CaretPosition endOfParagraph(const CaretPosition &c, EIncludeLineBreak includeLi
         }
     }
 
-    return CaretPosition(node, offset);
+    return VisiblePosition(node, offset);
 }
 
-bool inSameParagraph(const CaretPosition &a, const CaretPosition &b)
+bool inSameParagraph(const VisiblePosition &a, const VisiblePosition &b)
 {
     return a == b || startOfParagraph(a) == startOfParagraph(b);
 }
 
-CaretPosition previousParagraphPosition(const CaretPosition &p, int x)
+VisiblePosition previousParagraphPosition(const VisiblePosition &p, int x)
 {
-    CaretPosition pos = p;
+    VisiblePosition pos = p;
     do {
-        CaretPosition n = previousLinePosition(pos, x);
+        VisiblePosition n = previousLinePosition(pos, x);
         if (n.isNull() || n == pos)
             return p;
         pos = n;
@@ -355,11 +351,11 @@ CaretPosition previousParagraphPosition(const CaretPosition &p, int x)
     return pos;
 }
 
-CaretPosition nextParagraphPosition(const CaretPosition &p, int x)
+VisiblePosition nextParagraphPosition(const VisiblePosition &p, int x)
 {
-    CaretPosition pos = p;
+    VisiblePosition pos = p;
     do {
-        CaretPosition n = nextLinePosition(pos, x);
+        VisiblePosition n = nextLinePosition(pos, x);
         if (n.isNull() || n == pos)
             return p;
         pos = n;
index 247304799085714051043e134084a9dff5fb0e9f..99d7b30ab8ebcfb56ae5dd86fffa9d78caf05bec 100644 (file)
 #ifndef KHTML_EDITING_VISIBLE_UNITS_H
 #define KHTML_EDITING_VISIBLE_UNITS_H
 
-namespace DOM {
+namespace khtml {
 
-class CaretPosition;
+class VisiblePosition;
 
 enum EWordSide { RightWordIfOnBoundary = false, LeftWordIfOnBoundary = true };
 enum EIncludeLineBreak { DoNotIncludeLineBreak = false, IncludeLineBreak = true };
 
 // words
-CaretPosition startOfWord(const CaretPosition &, EWordSide = RightWordIfOnBoundary);
-CaretPosition endOfWord(const CaretPosition &, EWordSide = RightWordIfOnBoundary);
-CaretPosition previousWordPosition(const CaretPosition &);
-CaretPosition nextWordPosition(const CaretPosition &);
+VisiblePosition startOfWord(const VisiblePosition &, EWordSide = RightWordIfOnBoundary);
+VisiblePosition endOfWord(const VisiblePosition &, EWordSide = RightWordIfOnBoundary);
+VisiblePosition previousWordPosition(const VisiblePosition &);
+VisiblePosition nextWordPosition(const VisiblePosition &);
 
 // lines
-CaretPosition startOfLine(const CaretPosition &);
-CaretPosition endOfLine(const CaretPosition &, EIncludeLineBreak = DoNotIncludeLineBreak);
-CaretPosition previousLinePosition(const CaretPosition &, int x);
-CaretPosition nextLinePosition(const CaretPosition &, int x);
+VisiblePosition startOfLine(const VisiblePosition &);
+VisiblePosition endOfLine(const VisiblePosition &, EIncludeLineBreak = DoNotIncludeLineBreak);
+VisiblePosition previousLinePosition(const VisiblePosition &, int x);
+VisiblePosition nextLinePosition(const VisiblePosition &, int x);
 
 // paragraphs
-CaretPosition startOfParagraph(const CaretPosition &);
-CaretPosition endOfParagraph(const CaretPosition &, EIncludeLineBreak = DoNotIncludeLineBreak);
-CaretPosition previousParagraphPosition(const CaretPosition &, int x);
-CaretPosition nextParagraphPosition(const CaretPosition &, int x);
-bool inSameParagraph(const CaretPosition &, const CaretPosition &);
+VisiblePosition startOfParagraph(const VisiblePosition &);
+VisiblePosition endOfParagraph(const VisiblePosition &, EIncludeLineBreak = DoNotIncludeLineBreak);
+VisiblePosition previousParagraphPosition(const VisiblePosition &, int x);
+VisiblePosition nextParagraphPosition(const VisiblePosition &, int x);
+bool inSameParagraph(const VisiblePosition &, const VisiblePosition &);
 
 } // namespace DOM
 
index 6c205be7e1c1e132131ad0bd081a5edd0644c746..5210e0b69e1f069847b8ff7fa09832a6e70f36a7 100644 (file)
@@ -40,6 +40,9 @@
 #include "dom/dom_element.h"
 #include "dom/html_document.h"
 #include "editing/htmlediting.h"
+#include "editing/selection.h"
+#include "editing/visible_position.h"
+#include "editing/visible_text.h"
 #include "html/html_documentimpl.h"
 #include "html/html_baseimpl.h"
 #include "html/html_miscimpl.h"
 #include "rendering/render_frames.h"
 #include "misc/htmlhashes.h"
 #include "misc/loader.h"
-#include "editing/visible_position.h"
 #include "xml/dom2_eventsimpl.h"
 #include "xml/xml_tokenizer.h"
 #include "css/css_computedstyle.h"
 #include "css/cssstyleselector.h"
 #include "css/csshelper.h"
-#include "editing/visible_text.h"
 #include "css/css_computedstyle.h"
 
 using namespace DOM;
@@ -92,7 +93,6 @@ using namespace DOM;
 #include <ksslcertchain.h>
 #include <ksslinfodlg.h>
 
-
 #include <qclipboard.h>
 #include <qfile.h>
 #include <qmetaobject.h>
@@ -105,21 +105,27 @@ using namespace DOM;
 #endif
 
 using khtml::ApplyStyleCommand;
+using khtml::CHARACTER;
 using khtml::ChildFrame;
 using khtml::Decoder;
 using khtml::DeleteSelectionCommand;
 using khtml::EditCommand;
+using khtml::ETextGranularity;
 using khtml::FormData;
 using khtml::InlineTextBox;
+using khtml::PARAGRAPH;
 using khtml::plainText;
 using khtml::RenderObject;
 using khtml::RenderText;
+using khtml::Selection;
 using khtml::Tokenizer;
 using khtml::TypingCommand;
+using khtml::VisiblePosition;
+using khtml::WORD;
 
 using KParts::BrowserInterface;
 
-enum { CARET_BLINK_FREQUENCY = 500 };
+const int CARET_BLINK_FREQUENCY = 500;
 
 namespace khtml {
     class PartStyleSheetLoader : public CachedObjectClient
@@ -146,8 +152,7 @@ namespace khtml {
         QGuardedPtr<KHTMLPart> m_part;
         khtml::CachedCSSStyleSheet *m_cachedSheet;
     };
-};
-
+}
 
 FrameList::Iterator FrameList::find( const QString &name )
 {
@@ -2317,7 +2322,7 @@ const Selection &KHTMLPart::selection() const
     return d->m_selection;
 }
 
-DOM::Selection::ETextGranularity KHTMLPart::selectionGranularity() const
+ETextGranularity KHTMLPart::selectionGranularity() const
 {
     return d->m_selectionGranularity;
 }
@@ -2354,7 +2359,7 @@ void KHTMLPart::setSelection(const Selection &s, bool closeTyping, bool unmarkOl
     }
 }
 
-void KHTMLPart::setDragCaret(const DOM::Selection &dragCaret)
+void KHTMLPart::setDragCaret(const Selection &dragCaret)
 {
     if (d->m_dragCaret != dragCaret) {
         d->m_dragCaret.needsCaretRepaint();
@@ -4405,12 +4410,12 @@ void KHTMLPart::selectClosestWordFromMouseEvent(QMouseEvent *mouse, DOM::Node &i
         Position pos(innerNode.handle()->positionForCoordinates(x, y));
         if (pos.isNotNull()) {
             selection.moveTo(pos);
-            selection.expandUsingGranularity(Selection::WORD);
+            selection.expandUsingGranularity(WORD);
         }
     }
     
     if (selection.isRange()) {
-        d->m_selectionGranularity = Selection::WORD;
+        d->m_selectionGranularity = WORD;
         d->m_beganSelectingText = true;
     }
     
@@ -4438,12 +4443,12 @@ void KHTMLPart::handleMousePressEventTripleClick(khtml::MousePressEvent *event)
         Position pos(innerNode.handle()->positionForCoordinates(event->x(), event->y()));
         if (pos.isNotNull()) {
             selection.moveTo(pos);
-            selection.expandUsingGranularity(Selection::PARAGRAPH);
+            selection.expandUsingGranularity(PARAGRAPH);
         }
     }
     
     if (selection.isRange()) {
-        d->m_selectionGranularity = Selection::PARAGRAPH;
+        d->m_selectionGranularity = PARAGRAPH;
         d->m_beganSelectingText = true;
     }
     
@@ -4477,13 +4482,13 @@ void KHTMLPart::handleMousePressEventSingleClick(khtml::MousePressEvent *event)
             if (extendSelection && sel.isCaretOrRange()) {
                 sel.clearModifyBias();
                 sel.setExtent(pos);
-                if (d->m_selectionGranularity != Selection::CHARACTER) {
+                if (d->m_selectionGranularity != CHARACTER) {
                     sel.expandUsingGranularity(d->m_selectionGranularity);
                 }
                 d->m_beganSelectingText = true;
             } else {
                 sel = pos;
-                d->m_selectionGranularity = Selection::CHARACTER;
+                d->m_selectionGranularity = CHARACTER;
             }
         }
 
@@ -4694,7 +4699,7 @@ void KHTMLPart::handleMouseMoveEventSelection(khtml::MouseMoveEvent *event)
     }
 
     sel.setExtent(pos);
-    if (d->m_selectionGranularity != Selection::CHARACTER) {
+    if (d->m_selectionGranularity != CHARACTER) {
         sel.expandUsingGranularity(d->m_selectionGranularity);
     }
     setSelection(sel);
@@ -4928,10 +4933,8 @@ void KHTMLPart::selectAll()
     if (!d->m_doc)
         return;
     NodeImpl *de = d->m_doc->documentElement();
-    CaretPosition start(de, 0);
-    CaretPosition end(de, de ? de->childNodeCount() : 0);
-    Selection selection(start.deepEquivalent(), end.deepEquivalent());
-    setSelection(selection);
+    int n = de ? de->childNodeCount() : 0;
+    setSelection(Selection(VisiblePosition(de, 0), VisiblePosition(de, n)));
 }
 
 bool KHTMLPart::shouldBeginEditing(const Range &range) const
index a98f1a7923cdb8e8ca24568f1d6c1e7cfcf28a8d..09143c1325b3c0d884ff30ac48285f8b06e4e37c 100644 (file)
@@ -27,7 +27,7 @@
 #ifndef __khtml_part_h__
 #define __khtml_part_h__
 
-#include "editing/selection.h" // only for text granularity -- should fix this to reduce dependencies
+#include "editing/text_granularity.h"
 
 #include <kparts/part.h>
 #include <kparts/browserextension.h>
@@ -61,7 +61,6 @@ namespace DOM
   class Node;
   class NodeImpl;
   class Range;
-  class Selection;
 }
 
 namespace khtml
@@ -82,6 +81,7 @@ namespace khtml
   class RenderPart;
   class RenderPartObject;
   class RenderWidget;
+  class Selection;
   class XMLTokenizer;
 }
 
@@ -574,34 +574,37 @@ public:
   /**
    * Returns the selected part of the HTML.
    */
-  const DOM::Selection &selection() const;
+  const khtml::Selection &selection() const;
 
-  DOM::Selection::ETextGranularity selectionGranularity() const;
+  /**
+   * Returns the granularity of the selection (character, word, line, paragraph).
+   */
+  khtml::ETextGranularity selectionGranularity() const;
   
   /**
    * Returns the drag caret of the HTML.
    */
-  const DOM::Selection &dragCaret() const;
+  const khtml::Selection &dragCaret() const;
 
   /**
    * Sets the current selection.
    */
-  void setSelection(const DOM::Selection &, bool closeTyping = true, bool unmarkOldSelection = true);
+  void setSelection(const khtml::Selection &, bool closeTyping = true, bool unmarkOldSelection = true);
 
   /**
    * Returns a mark, to be used as emacs uses it.
    */
-  const DOM::Selection &mark() const;
+  const khtml::Selection &mark() const;
 
   /**
    * Returns the mark.
    */
-  void setMark(const DOM::Selection &);
+  void setMark(const khtml::Selection &);
 
   /**
    * Sets the current drag cart.
    */
-  void setDragCaret(const DOM::Selection &);
+  void setDragCaret(const khtml::Selection &);
   
   /**
    * Clears the current selection.
@@ -1313,7 +1316,7 @@ private:
 
   KHTMLPartPrivate *d;
   friend class KHTMLPartPrivate;
-  friend class DOM::Selection;
+  friend class khtml::Selection;
 
 #if APPLE_CHANGES
 public:  
index b07982a8c315a92d35038002236e4a436b9607a8..c4759cd03d0e1e418cc5ee6664c5d74a08cc4c72 100644 (file)
@@ -352,16 +352,16 @@ public:
   bool m_bMousePressed;
   DOM::Node m_mousePressNode; //node under the mouse when the mouse was pressed (set in the mouse handler)
 
-  DOM::Selection::ETextGranularity m_selectionGranularity;
+  khtml::ETextGranularity m_selectionGranularity;
   bool m_beganSelectingText;
 #if !APPLE_CHANGES
   QString m_overURL;
   QString m_overURLTarget;
 #endif
 
-  DOM::Selection m_selection;
-  DOM::Selection m_dragCaret;
-  DOM::Selection m_mark;
+  khtml::Selection m_selection;
+  khtml::Selection m_dragCaret;
+  khtml::Selection m_mark;
   int m_caretBlinkTimer;
 
   bool m_caretVisible:1;
index 18cb73a5f43c78653d0c55b6f06f70f665fa4946..0de323cf8dc212337773f76534496bdaff35f732 100644 (file)
@@ -36,6 +36,7 @@
 #include "xml/dom_position.h"
 #include "html/html_formimpl.h"
 #include "render_block.h"
+#include "editing/selection.h"
 
 #include "khtmlview.h"
 #include "khtml_part.h"
index 51faa094fc02665fd81d8a7fad07e6fce0cef046..4d831b67df686186815a5ad9eb9f53f39508205b 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
  *           (C) 1999 Antti Koivisto (koivisto@kde.org)
  *           (C) 2001 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003 Apple Computer, Inc.
+ * Copyright (C) 2004 Apple Computer, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -110,7 +110,6 @@ namespace DOM {
     class ProcessingInstructionImpl;
     class RangeImpl;
     class RegisteredEventListener;
-    class Selection;
     class StyleSheetImpl;
     class StyleSheetListImpl;
     class TextImpl;
index 0c031f6420e04497298a4553dd27c78f58e31c1e..afa4aa6d88815bee5fa5ec6180d9409d816f0275 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 #include "xml/dom_nodeimpl.h"
+
 #include "dom/dom_exception.h"
 #include "misc/htmlattrs.h"
 #include "misc/htmltags.h"
@@ -34,6 +35,7 @@
 #include "xml/dom2_rangeimpl.h"
 #include "css/csshelper.h"
 #include "css/cssstyleselector.h"
+#include "editing/selection.h"
 
 #include <kglobal.h>
 #include <kdebug.h>
@@ -2064,8 +2066,7 @@ void NodeBaseImpl::setFocus(bool received)
     NodeImpl::setFocus(received);
 
     if (received && isEditableBlock() && !hasChildNodes()) {
-        KHTMLPart *part = getDocument()->part();
-        part->setSelection(Selection(Position(this, 0)));
+        getDocument()->part()->setSelection(Position(this, 0));
     }
 
     // note that we need to recalc the style
index 704c0195f90b5d385a12ada7c8535029951ed7c4..33e26298c2a3ba62d01c3b2fd2481a127a066901 100644 (file)
@@ -229,7 +229,7 @@ public:
     NSImage *snapshotDragImage(DOM::Node node, NSRect *imageRect, NSRect *elementRect) const;
 
     NSFont *fontForSelection(bool *hasMultipleFonts) const;
-    void markMisspellingsInSelection(const DOM::Selection &selection);
+    void markMisspellingsInSelection(const khtml::Selection &selection);
     void updateSpellChecking();
 
     NSFileWrapper *fileWrapperForElement(DOM::ElementImpl *);
index 3924566c48912e1295ecbb079bab384433c69990..25eeca82dcb9b449e9d9af3658c1a8e17bd497c8 100644 (file)
@@ -82,7 +82,6 @@
 #undef _KWQ_TIMING
 
 using DOM::AtomicString;
-using DOM::CaretPosition;
 using DOM::ClipboardEventImpl;
 using DOM::DocumentFragmentImpl;
 using DOM::DocumentImpl;
@@ -96,14 +95,11 @@ using DOM::HTMLFormElementImpl;
 using DOM::HTMLFrameElementImpl;
 using DOM::HTMLGenericFormElementImpl;
 using DOM::HTMLTableCellElementImpl;
-using DOM::LeftWordIfOnBoundary;
 using DOM::Node;
 using DOM::NodeImpl;
 using DOM::Position;
 using DOM::Range;
 using DOM::RangeImpl;
-using DOM::RightWordIfOnBoundary;
-using DOM::Selection;
 using DOM::TextImpl;
 using DOM::UPSTREAM;
 
@@ -112,8 +108,10 @@ using khtml::CharacterIterator;
 using khtml::ChildFrame;
 using khtml::Decoder;
 using khtml::DashboardRegionValue;
+using khtml::endOfWord;
 using khtml::findPlainText;
 using khtml::InlineTextBox;
+using khtml::LeftWordIfOnBoundary;
 using khtml::MouseDoubleClickEvent;
 using khtml::MouseMoveEvent;
 using khtml::MousePressEvent;
@@ -130,8 +128,15 @@ using khtml::RenderStyle;
 using khtml::RenderTableCell;
 using khtml::RenderText;
 using khtml::RenderWidget;
+using khtml::RightWordIfOnBoundary;
+using khtml::Selection;
+using khtml::setEnd;
+using khtml::setStart;
+using khtml::startOfWord;
+using khtml::startVisiblePosition;
 using khtml::TextIterator;
 using khtml::VISIBLE;
+using khtml::VisiblePosition;
 using khtml::WordAwareIterator;
 
 using KIO::Job;
@@ -912,12 +917,12 @@ QString KWQKHTMLPart::advanceToNextMisspelling(bool startBeforeSelection)
     if (selectionStart()) {
         startedWithSelection = true;
         if (startBeforeSelection) {
-            CaretPosition start = selection().start();
+            VisiblePosition start = selection().start();
             // We match AppKit's rule: Start 1 character before the selection.
-            CaretPosition oneBeforeStart = start.previous();
+            VisiblePosition oneBeforeStart = start.previous();
             setStart(searchRange, oneBeforeStart.isNotNull() ? oneBeforeStart : start);
         } else {
-            setStart(searchRange, CaretPosition(selection().end()));
+            setStart(searchRange, VisiblePosition(selection().end()));
         }
     }
 
@@ -939,7 +944,7 @@ QString KWQKHTMLPart::advanceToNextMisspelling(bool startBeforeSelection)
     // Make sure start of searchRange is not in the middle of a word.  Jumping back a char and then
     // forward by a word happens to do the trick.
     if (startedWithSelection) {
-        CaretPosition oneBeforeStart = start(searchRange).previous();
+        VisiblePosition oneBeforeStart = startVisiblePosition(searchRange).previous();
         if (oneBeforeStart.isNotNull()) {
             setStart(searchRange, endOfWord(oneBeforeStart));
         } // else we were already at the start of the editable node
@@ -3791,7 +3796,7 @@ void KWQKHTMLPart::markMisspellingsInSelection(const Selection &selection)
     // So, for now, the idea is to mimic AppKit behavior and limit the selection to the first word 
     // of the selection passed in.
     // This is not ideal by any means, but this is the convention.
-    CaretPosition end = endOfWord(selection.start());
+    VisiblePosition end = endOfWord(selection.start());
     if (end == selection.start())
         end = endOfWord(end.next());
     Selection s(startOfWord(selection.start()), end);
@@ -3855,8 +3860,8 @@ void KWQKHTMLPart::updateSpellChecking()
         if ([_bridge isContinuousSpellCheckingEnabled]) {
             // This only erases a marker in the first word of the selection.  Perhaps peculiar, but it
             // matches AppKit.
-            CaretPosition start(startOfWord(selection().start(), LeftWordIfOnBoundary));
-            CaretPosition end(endOfWord(selection().start(), LeftWordIfOnBoundary));
+            VisiblePosition start(startOfWord(selection().start(), LeftWordIfOnBoundary));
+            VisiblePosition end(endOfWord(selection().start(), LeftWordIfOnBoundary));
             if (end == selection().start())
                 end = endOfWord(end, RightWordIfOnBoundary);
             Selection selection(start, end);
index dc8471911c1e19d9a99731de71defe06cfb2141b..5087d30508113fca2184c343b0c9177b8df316e9 100644 (file)
 
 #include "KWQRenderTreeDebug.h"
 
+#include "dom_docimpl.h"
+#include "dom_position.h"
 #include "htmltags.h"
 #include "khtmlview.h"
+#include "render_canvas.h"
 #include "render_replaced.h"
 #include "render_table.h"
 #include "render_text.h"
-#include "render_canvas.h"
-#include "xml/dom_docimpl.h"
-#include "xml/dom_nodeimpl.h"
-#include "xml/dom_position.h"
+#include "selection.h"
 
 #include "KWQKHTMLPart.h"
 #include "KWQTextStream.h"
 using DOM::DocumentImpl;
 using DOM::NodeImpl;
 using DOM::Position;
-using DOM::Selection;
+
+using khtml::BorderValue;
+using khtml::EBorderStyle;
+using khtml::InlineTextBox;
 using khtml::RenderLayer;
 using khtml::RenderObject;
 using khtml::RenderTableCell;
 using khtml::RenderWidget;
 using khtml::RenderText;
 using khtml::RenderCanvas;
-using khtml::InlineTextBox;
-using khtml::BorderValue;
-using khtml::EBorderStyle;
+using khtml::Selection;
 using khtml::transparentColor;
 
 static void writeLayers(QTextStream &ts, const RenderLayer* rootLayer, RenderLayer* l,
index 4bb30b8ab94bf7178ac8c33bdd6129efe8ab38c8..da2780b0050ac7e14b4c9b42c3c11c071f28f80d 100644 (file)
@@ -84,7 +84,6 @@
 @class NSView;
 
 using DOM::AtomicString;
-using DOM::CaretPosition;
 using DOM::DocumentFragmentImpl;
 using DOM::DocumentImpl;
 using DOM::DocumentTypeImpl;
@@ -100,7 +99,6 @@ using DOM::Node;
 using DOM::NodeImpl;
 using DOM::Position;
 using DOM::Range;
-using DOM::Selection;
 using DOM::UPSTREAM;
 
 using khtml::ApplyStyleCommand;
@@ -108,6 +106,7 @@ using khtml::Decoder;
 using khtml::DeleteSelectionCommand;
 using khtml::EditCommand;
 using khtml::EditCommandImpl;
+using khtml::ETextGranularity;
 using khtml::MoveSelectionCommand;
 using khtml::parseURL;
 using khtml::RenderCanvas;
@@ -117,7 +116,9 @@ using khtml::RenderPart;
 using khtml::RenderStyle;
 using khtml::RenderWidget;
 using khtml::ReplaceSelectionCommand;
+using khtml::Selection;
 using khtml::TypingCommand;
+using khtml::VisiblePosition;
 
 using KJS::ExecState;
 using KJS::ObjectImp;
@@ -1350,7 +1351,7 @@ static HTMLFormElementImpl *formElementFromDOMElement(DOMElement *element)
         
     // NOTE: The enums *must* match the very similar ones declared in ktml_selection.h
     Selection selection(_part->selection());
-    selection.expandUsingGranularity(static_cast<Selection::ETextGranularity>(granularity));
+    selection.expandUsingGranularity(static_cast<ETextGranularity>(granularity));
     return [DOMRange _rangeWithImpl:selection.toRange().handle()];
 }
 
@@ -1363,7 +1364,7 @@ static HTMLFormElementImpl *formElementFromDOMElement(DOMElement *element)
     Selection selection(_part->selection());
     selection.modify(static_cast<Selection::EAlter>(alteration), 
                      static_cast<Selection::EDirection>(direction), 
-                     static_cast<Selection::ETextGranularity>(granularity));
+                     static_cast<ETextGranularity>(granularity));
     return [DOMRange _rangeWithImpl:selection.toRange().handle()];
 }
 
@@ -1376,7 +1377,7 @@ static HTMLFormElementImpl *formElementFromDOMElement(DOMElement *element)
     Selection selection(_part->selection());
     selection.modify(static_cast<Selection::EAlter>(alteration), 
                      static_cast<Selection::EDirection>(direction), 
-                     static_cast<Selection::ETextGranularity>(granularity));
+                     static_cast<ETextGranularity>(granularity));
 
     // save vertical navigation x position if necessary
     int xPos = KHTMLPart::NoXPosForVerticalArrowNavigation;
@@ -1805,9 +1806,9 @@ static HTMLFormElementImpl *formElementFromDOMElement(DOMElement *element)
     if (!selection.isCaret())
         return nil;
 
-    CaretPosition caret(selection.start());
-    CaretPosition next = caret.next();
-    CaretPosition previous = caret.previous();
+    VisiblePosition caret(selection.start());
+    VisiblePosition next = caret.next();
+    VisiblePosition previous = caret.previous();
     if (caret == next || caret == previous)
         return nil;