Title: [150879] trunk/Source/WebCore
- Revision
- 150879
- Author
- [email protected]
- Date
- 2013-05-29 01:57:42 -0700 (Wed, 29 May 2013)
Log Message
Move leaf Node traversal helpers to htmlediting.cpp
<http://webkit.org/b/116940>
Reviewed by Antti Koivisto.
Move Node::previousLeafNode() and Node::nextLeafNode() to htmlediting.cpp along with their helpers.
Fixes an 8-year old FIXME. \o/
* dom/Node.h:
* dom/Node.cpp:
* dom/Position.cpp:
(WebCore::nextRenderedEditable):
(WebCore::previousRenderedEditable):
* editing/VisibleUnits.cpp:
(WebCore::previousLeafWithSameEditability):
(WebCore::nextLeafWithSameEditability):
* editing/htmlediting.h:
* editing/htmlediting.cpp:
(WebCore::previousNodeConsideringAtomicNodes):
(WebCore::nextNodeConsideringAtomicNodes):
(WebCore::previousLeafNode):
(WebCore::nextLeafNode):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (150878 => 150879)
--- trunk/Source/WebCore/ChangeLog 2013-05-29 08:56:07 UTC (rev 150878)
+++ trunk/Source/WebCore/ChangeLog 2013-05-29 08:57:42 UTC (rev 150879)
@@ -1,3 +1,28 @@
+2013-05-29 Andreas Kling <[email protected]>
+
+ Move leaf Node traversal helpers to htmlediting.cpp
+ <http://webkit.org/b/116940>
+
+ Reviewed by Antti Koivisto.
+
+ Move Node::previousLeafNode() and Node::nextLeafNode() to htmlediting.cpp along with their helpers.
+ Fixes an 8-year old FIXME. \o/
+
+ * dom/Node.h:
+ * dom/Node.cpp:
+ * dom/Position.cpp:
+ (WebCore::nextRenderedEditable):
+ (WebCore::previousRenderedEditable):
+ * editing/VisibleUnits.cpp:
+ (WebCore::previousLeafWithSameEditability):
+ (WebCore::nextLeafWithSameEditability):
+ * editing/htmlediting.h:
+ * editing/htmlediting.cpp:
+ (WebCore::previousNodeConsideringAtomicNodes):
+ (WebCore::nextNodeConsideringAtomicNodes):
+ (WebCore::previousLeafNode):
+ (WebCore::nextLeafNode):
+
2013-05-29 Peter Gal <[email protected]>
[Qt] Missing files from build after r150853
Modified: trunk/Source/WebCore/dom/Node.cpp (150878 => 150879)
--- trunk/Source/WebCore/dom/Node.cpp 2013-05-29 08:56:07 UTC (rev 150878)
+++ trunk/Source/WebCore/dom/Node.cpp 2013-05-29 08:57:42 UTC (rev 150879)
@@ -1090,59 +1090,6 @@
return lastChild();
}
-// FIXME: This code is used by editing. Seems like it could move over there and not pollute Node.
-Node *Node::previousNodeConsideringAtomicNodes() const
-{
- if (previousSibling()) {
- Node *n = previousSibling();
- while (!isAtomicNode(n) && n->lastChild())
- n = n->lastChild();
- return n;
- }
- else if (parentNode()) {
- return parentNode();
- }
- else {
- return 0;
- }
-}
-
-Node *Node::nextNodeConsideringAtomicNodes() const
-{
- if (!isAtomicNode(this) && firstChild())
- return firstChild();
- if (nextSibling())
- return nextSibling();
- const Node *n = this;
- while (n && !n->nextSibling())
- n = n->parentNode();
- if (n)
- return n->nextSibling();
- return 0;
-}
-
-Node *Node::previousLeafNode() const
-{
- Node *node = previousNodeConsideringAtomicNodes();
- while (node) {
- if (isAtomicNode(node))
- return node;
- node = node->previousNodeConsideringAtomicNodes();
- }
- return 0;
-}
-
-Node *Node::nextLeafNode() const
-{
- Node *node = nextNodeConsideringAtomicNodes();
- while (node) {
- if (isAtomicNode(node))
- return node;
- node = node->nextNodeConsideringAtomicNodes();
- }
- return 0;
-}
-
ContainerNode* Node::parentNodeForRenderingAndStyle()
{
return NodeRenderingContext(this).parentNodeForRenderingAndStyle();
Modified: trunk/Source/WebCore/dom/Node.h (150878 => 150879)
--- trunk/Source/WebCore/dom/Node.h 2013-05-29 08:56:07 UTC (rev 150878)
+++ trunk/Source/WebCore/dom/Node.h 2013-05-29 08:57:42 UTC (rev 150879)
@@ -309,22 +309,6 @@
virtual bool canContainRangeEndPoint() const { return false; }
- // FIXME: These two functions belong in editing -- "atomic node" is an editing concept.
- Node* previousNodeConsideringAtomicNodes() const;
- Node* nextNodeConsideringAtomicNodes() const;
-
- // Returns the next leaf node or 0 if there are no more.
- // Delivers leaf nodes as if the whole DOM tree were a linear chain of its leaf nodes.
- // Uses an editing-specific concept of what a leaf node is, and should probably be moved
- // out of the Node class into an editing-specific source file.
- Node* nextLeafNode() const;
-
- // Returns the previous leaf node or 0 if there are no more.
- // Delivers leaf nodes as if the whole DOM tree were a linear chain of its leaf nodes.
- // Uses an editing-specific concept of what a leaf node is, and should probably be moved
- // out of the Node class into an editing-specific source file.
- Node* previousLeafNode() const;
-
bool isRootEditableElement() const;
Element* rootEditableElement() const;
Element* rootEditableElement(EditableType) const;
Modified: trunk/Source/WebCore/dom/Position.cpp (150878 => 150879)
--- trunk/Source/WebCore/dom/Position.cpp 2013-05-29 08:56:07 UTC (rev 150878)
+++ trunk/Source/WebCore/dom/Position.cpp 2013-05-29 08:57:42 UTC (rev 150879)
@@ -51,7 +51,7 @@
static Node* nextRenderedEditable(Node* node)
{
- while ((node = node->nextLeafNode())) {
+ while ((node = nextLeafNode(node))) {
if (!node->rendererIsEditable())
continue;
RenderObject* renderer = node->renderer();
@@ -65,7 +65,7 @@
static Node* previousRenderedEditable(Node* node)
{
- while ((node = node->previousLeafNode())) {
+ while ((node = previousLeafNode(node))) {
if (!node->rendererIsEditable())
continue;
RenderObject* renderer = node->renderer();
Modified: trunk/Source/WebCore/editing/VisibleUnits.cpp (150878 => 150879)
--- trunk/Source/WebCore/editing/VisibleUnits.cpp 2013-05-29 08:56:07 UTC (rev 150878)
+++ trunk/Source/WebCore/editing/VisibleUnits.cpp 2013-05-29 08:57:42 UTC (rev 150879)
@@ -51,11 +51,11 @@
static Node* previousLeafWithSameEditability(Node* node, EditableType editableType)
{
bool editable = node->rendererIsEditable(editableType);
- node = node->previousLeafNode();
+ node = previousLeafNode(node);
while (node) {
if (editable == node->rendererIsEditable(editableType))
return node;
- node = node->previousLeafNode();
+ node = previousLeafNode(node);
}
return 0;
}
@@ -66,11 +66,11 @@
return 0;
bool editable = node->rendererIsEditable(editableType);
- node = node->nextLeafNode();
+ node = nextLeafNode(node);
while (node) {
if (editable == node->rendererIsEditable(editableType))
return node;
- node = node->nextLeafNode();
+ node = nextLeafNode(node);
}
return 0;
}
Modified: trunk/Source/WebCore/editing/htmlediting.cpp (150878 => 150879)
--- trunk/Source/WebCore/editing/htmlediting.cpp 2013-05-29 08:56:07 UTC (rev 150878)
+++ trunk/Source/WebCore/editing/htmlediting.cpp 2013-05-29 08:57:42 UTC (rev 150879)
@@ -802,6 +802,55 @@
return parent;
}
+static Node* previousNodeConsideringAtomicNodes(const Node* node)
+{
+ if (node->previousSibling()) {
+ Node* n = node->previousSibling();
+ while (!isAtomicNode(n) && n->lastChild())
+ n = n->lastChild();
+ return n;
+ }
+ if (node->parentNode())
+ return node->parentNode();
+ return 0;
+}
+
+static Node* nextNodeConsideringAtomicNodes(const Node* node)
+{
+ if (!isAtomicNode(node) && node->firstChild())
+ return node->firstChild();
+ if (node->nextSibling())
+ return node->nextSibling();
+ const Node* n = node;
+ while (n && !n->nextSibling())
+ n = n->parentNode();
+ if (n)
+ return n->nextSibling();
+ return 0;
+}
+
+Node* previousLeafNode(const Node* node)
+{
+ Node* n = previousNodeConsideringAtomicNodes(node);
+ while (n) {
+ if (isAtomicNode(n))
+ return n;
+ n = previousNodeConsideringAtomicNodes(n);
+ }
+ return 0;
+}
+
+Node* nextLeafNode(const Node* node)
+{
+ Node* n = nextNodeConsideringAtomicNodes(node);
+ while (node) {
+ if (isAtomicNode(n))
+ return n;
+ n = nextNodeConsideringAtomicNodes(n);
+ }
+ return 0;
+}
+
// FIXME: do not require renderer, so that this can be used within fragments, or rename to isRenderedTable()
bool isTableElement(Node* n)
{
Modified: trunk/Source/WebCore/editing/htmlediting.h (150878 => 150879)
--- trunk/Source/WebCore/editing/htmlediting.h 2013-05-29 08:56:07 UTC (rev 150878)
+++ trunk/Source/WebCore/editing/htmlediting.h 2013-05-29 08:57:42 UTC (rev 150879)
@@ -73,6 +73,10 @@
Node* isLastPositionBeforeTable(const VisiblePosition&);
Node* isFirstPositionAfterTable(const VisiblePosition&);
+// These two deliver leaf nodes as if the whole DOM tree were a linear chain of its leaf nodes.
+Node* nextLeafNode(const Node*);
+Node* previousLeafNode(const Node*);
+
// offset functions on Node
int lastOffsetForEditing(const Node*);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes