Reviewed by Maciej
authorkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Nov 2004 23:49:02 +0000 (23:49 +0000)
committerkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Nov 2004 23:49:02 +0000 (23:49 +0000)
        * khtml/editing/htmlediting.cpp:
        (khtml::InsertLineBreakCommand::doApply): Use new isLastVisiblePositionInBlock() helper instead
        of old isLastInBlock() member function on VisiblePosition. This is a cosmetic change in keeping
        with the prevailing style for the VisiblePosition class.
        * khtml/editing/htmlediting.h: Move isLastVisiblePositionInNode() function to visible_position.[cpp|h] files.
        * khtml/editing/visible_position.cpp: Removed isLastInBlock() helper. Renamed to isLastVisiblePositionInBlock().
        (khtml::visiblePositionsInDifferentBlocks): New helper method.
        (khtml::isLastVisiblePositionInBlock): Ditto.
        (khtml::isLastVisiblePositionInNode): Ditto.
        * khtml/editing/visible_position.h: Add declarations for new functions.

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/editing/htmlediting.cpp
WebCore/khtml/editing/htmlediting.h
WebCore/khtml/editing/visible_position.cpp
WebCore/khtml/editing/visible_position.h

index a3b53adc13fa7c75bd9c4d178ea25271523cc607..1ad8077742197f63737e5cb75ede5e1b5b7eb6ac 100644 (file)
@@ -1,3 +1,18 @@
+2004-11-11  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Maciej
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::InsertLineBreakCommand::doApply): Use new isLastVisiblePositionInBlock() helper instead
+        of old isLastInBlock() member function on VisiblePosition. This is a cosmetic change in keeping
+        with the prevailing style for the VisiblePosition class.
+        * khtml/editing/htmlediting.h: Move isLastVisiblePositionInNode() function to visible_position.[cpp|h] files. 
+        * khtml/editing/visible_position.cpp: Removed isLastInBlock() helper. Renamed to isLastVisiblePositionInBlock().
+        (khtml::visiblePositionsInDifferentBlocks): New helper method.
+        (khtml::isLastVisiblePositionInBlock): Ditto.
+        (khtml::isLastVisiblePositionInNode): Ditto.
+        * khtml/editing/visible_position.h: Add declarations for new functions.
+
 2004-11-11  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by Hyatt
index f2943ec2afe5525191e6be566c3fdf67929c8a2f..2de5c299050b22a8b5cb5d21999ca1052e1065b7 100644 (file)
@@ -915,15 +915,6 @@ bool CompositeEditCommand::removeBlockPlaceholderIfNeeded(NodeImpl *node)
     return false;
 }
 
-bool CompositeEditCommand::isLastVisiblePositionInNode(const VisiblePosition &pos, const NodeImpl *node) const
-{
-    if (pos.isNull())
-        return false;
-        
-    VisiblePosition next = pos.next();
-    return next.isNull() || !next.deepEquivalent().node()->isAncestor(node);
-}
-
 //==========================================================================================
 // Concrete commands
 //------------------------------------------------------------------------------------------
@@ -1977,7 +1968,7 @@ void InsertLineBreakCommand::doApply()
     Position pos(selection.start().upstream(StayInBlock));
     bool atStart = pos.offset() <= pos.node()->caretMinOffset();
     bool atEnd = pos.offset() >= pos.node()->caretMaxOffset();
-    bool atEndOfBlock = VisiblePosition(pos).isLastInBlock();
+    bool atEndOfBlock = isLastVisiblePositionInBlock(VisiblePosition(pos));
     
     if (atEndOfBlock) {
         LOG(Editing, "input newline case 1");
index 4fbb9da3aee0a72ba3b366b241c6101fa3690ac9..574a1aa838b08ff46bcf0c5b69cd6e7d0a7917d8 100644 (file)
@@ -211,8 +211,6 @@ protected:
     void insertBlockPlaceholderIfNeeded(DOM::NodeImpl *);
     bool removeBlockPlaceholderIfNeeded(DOM::NodeImpl *);
 
-    bool isLastVisiblePositionInNode(const VisiblePosition &, const DOM::NodeImpl *) const;
-
     QValueList<EditCommandPtr> m_cmds;
 };
 
index 431cbbd3de70b08602fa87cf755b845355698802..02dbe93596859c633fc6f3d9efcf310b410881ac 100644 (file)
@@ -30,6 +30,7 @@
 #include "rendering/render_object.h"
 #include "rendering/render_text.h"
 #include "xml/dom2_rangeimpl.h"
+#include "xml/dom_nodeimpl.h"
 #include "xml/dom_textimpl.h"
 
 #if APPLE_CHANGES
@@ -41,6 +42,7 @@
 #endif
 
 using DOM::CharacterDataImpl;
+using DOM::NodeImpl;
 using DOM::offsetInCharacters;
 using DOM::Position;
 using DOM::Range;
@@ -144,15 +146,6 @@ void VisiblePosition::initDownstream(const Position &pos)
     }
 }
 
-bool VisiblePosition::isLastInBlock() const
-{
-    if (isNull())
-        return false;
-        
-    VisiblePosition n = next();
-    return n.isNull() || (n.deepEquivalent().node()->enclosingBlockFlowElement() != m_deepPosition.node()->enclosingBlockFlowElement());
-}
-
 VisiblePosition VisiblePosition::next() const
 {
     VisiblePosition result;
@@ -478,6 +471,20 @@ bool visiblePositionsOnDifferentLines(const VisiblePosition &pos1, const Visible
     return (b1 && b2 && b1->root() != b2->root());
 }
 
+bool visiblePositionsInDifferentBlocks(const VisiblePosition &pos1, const VisiblePosition &pos2)
+{
+    if (pos1.isNull() || pos2.isNull())
+        return false;
+    if (pos1 == pos2)
+        return false;
+
+    Position p1 = pos1.deepEquivalent();
+    Position p2 = pos2.deepEquivalent();
+    NodeImpl *b1 = p1.node()->enclosingBlockFlowElement();
+    NodeImpl *b2 = p2.node()->enclosingBlockFlowElement();
+    return (b1 != b2);
+}
+
 bool isFirstVisiblePositionOnLine(const VisiblePosition &pos)
 {
     if (pos.isNull())
@@ -496,5 +503,22 @@ bool isLastVisiblePositionOnLine(const VisiblePosition &pos)
     return next.isNull() || visiblePositionsOnDifferentLines(pos, next);
 }
 
+bool isLastVisiblePositionInBlock(const VisiblePosition &pos)
+{
+    if (pos.isNull())
+        return false;
+        
+    VisiblePosition next = pos.next();
+    return next.isNull() || visiblePositionsInDifferentBlocks(pos, next);
+}
+
+bool isLastVisiblePositionInNode(const VisiblePosition &pos, const NodeImpl *node)
+{
+    if (pos.isNull())
+        return false;
+        
+    VisiblePosition next = pos.next();
+    return next.isNull() || !next.deepEquivalent().node()->isAncestor(node);
+}
 
 }  // namespace DOM
index 110dd467c0d3e8e32e1315285df903b35aee6f04..435a46f56a260814240a5d274fdba462d4ff577f 100644 (file)
@@ -32,6 +32,7 @@
 #include "text_affinity.h"
 
 namespace DOM {
+    class NodeImpl;
     class Range;
     class RangeImpl;
 }
@@ -117,9 +118,12 @@ VisiblePosition startVisiblePosition(const DOM::RangeImpl *);
 VisiblePosition endVisiblePosition(const DOM::Range &);
 VisiblePosition endVisiblePosition(const DOM::RangeImpl *);
 
-bool visiblePositionsOnSameLine(const VisiblePosition &, const VisiblePosition &);
+bool visiblePositionsOnDifferentLines(const VisiblePosition &, const VisiblePosition &);
+bool visiblePositionsInDifferentBlocks(const VisiblePosition &, const VisiblePosition &);
 bool isFirstVisiblePositionOnLine(const VisiblePosition &);
 bool isLastVisiblePositionOnLine(const VisiblePosition &);
+bool isLastVisiblePositionInBlock(const VisiblePosition &);
+bool isLastVisiblePositionInNode(const VisiblePosition &, const DOM::NodeImpl *);
 
 } // namespace khtml