Home | History | Annotate | Download | only in editing

Lines Matching defs:node

133 void CompositeEditCommand::insertNodeBefore(PassRefPtr<Node> insertChild, PassRefPtr<Node> refChild)
139 void CompositeEditCommand::insertNodeAfter(PassRefPtr<Node> insertChild, PassRefPtr<Node> refChild)
154 void CompositeEditCommand::insertNodeAt(PassRefPtr<Node> insertChild, const Position& editingPosition)
160 Node* refChild = p.node();
164 Node* child = refChild->firstChild();
176 // Mutation events (bug 22634) from the text node insertion may have removed the refChild
184 void CompositeEditCommand::appendNode(PassRefPtr<Node> node, PassRefPtr<Element> parent)
187 applyCommandToComposite(AppendNodeCommand::create(parent, node));
190 void CompositeEditCommand::removeChildrenInRange(PassRefPtr<Node> node, unsigned from, unsigned to)
192 Vector<RefPtr<Node> > children;
193 Node* child = node->childNode(from);
202 void CompositeEditCommand::removeNode(PassRefPtr<Node> node)
204 applyCommandToComposite(RemoveNodeCommand::create(node));
207 void CompositeEditCommand::removeNodePreservingChildren(PassRefPtr<Node> node)
209 applyCommandToComposite(RemoveNodePreservingChildrenCommand::create(node));
212 void CompositeEditCommand::removeNodeAndPruneAncestors(PassRefPtr<Node> node)
214 RefPtr<Node> parent = node->parentNode();
215 removeNode(node);
219 HTMLElement* CompositeEditCommand::replaceNodeWithSpanPreservingChildrenAndAttributes(PassRefPtr<Node> node)
224 RefPtr<ReplaceNodeWithSpanCommand> command = ReplaceNodeWithSpanCommand::create(node);
233 static bool hasARenderedDescendant(Node* node)
235 Node* n = node->firstChild();
239 n = n->traverseNextNode(node);
244 void CompositeEditCommand::prune(PassRefPtr<Node> node)
246 while (node) {
248 RenderObject* renderer = node->renderer();
249 if (renderer && (!renderer->canHaveChildren() || hasARenderedDescendant(node.get()) || node->rootEditableElement() == node))
252 RefPtr<Node> next = node->parentNode();
253 removeNode(node);
254 node = next;
258 void CompositeEditCommand::splitTextNode(PassRefPtr<Text> node, unsigned offset)
260 applyCommandToComposite(SplitTextNodeCommand::create(node, offset));
263 void CompositeEditCommand::splitElement(PassRefPtr<Element> element, PassRefPtr<Node> atChild)
322 void CompositeEditCommand::insertTextIntoNode(PassRefPtr<Text> node, unsigned offset, const String& text)
324 applyCommandToComposite(InsertIntoTextNodeCommand::create(node, offset, text));
327 void CompositeEditCommand::deleteTextFromNode(PassRefPtr<Text> node, unsigned offset, unsigned count)
329 applyCommandToComposite(DeleteFromTextNodeCommand::create(node, offset, count));
332 void CompositeEditCommand::replaceTextInNode(PassRefPtr<Text> node, unsigned offset, unsigned count, const String& replacementText)
334 applyCommandToComposite(DeleteFromTextNodeCommand::create(node.get(), offset, count));
335 applyCommandToComposite(InsertIntoTextNodeCommand::create(node, offset, replacementText));
340 if (!isTabSpanTextNode(pos.node()))
343 Node* tabSpan = tabSpanNode(pos.node());
345 if (pos.deprecatedEditingOffset() <= caretMinOffset(pos.node()))
348 if (pos.deprecatedEditingOffset() >= caretMaxOffset(pos.node()))
351 splitTextNodeContainingElement(static_cast<Text *>(pos.node()), pos.deprecatedEditingOffset());
355 void CompositeEditCommand::insertNodeAtTabSpanPosition(PassRefPtr<Node> node, const Position& pos)
357 // insert node before, after, or at split of tab span
358 insertNodeAt(node, positionOutsideTabSpan(pos));
396 Node* node = position.node();
397 if (!node || !node->isTextNode())
399 Text* textNode = static_cast<Text*>(node);
430 VisiblePosition visibleUpstreamPos(Position(position.node(), upstream));
431 VisiblePosition visibleDownstreamPos(Position(position.node(), downstream + 1));
436 // this function doesn't get all surrounding whitespace, just the whitespace in the current text node.
446 Node* node = position.node();
447 if (!node || !node->isTextNode())
449 Text* textNode = static_cast<Text*>(node);
466 if (isCollapsibleWhitespace(previousVisiblePos.characterAfter()) && previous.node()->isTextNode() && !previous.node()->hasTagName(brTag))
467 replaceTextInNode(static_cast<Text*>(previous.node()), previous.deprecatedEditingOffset(), 1, nonBreakingSpaceString());
468 if (isCollapsibleWhitespace(visiblePos.characterAfter()) && position.node()->isTextNode() && !position.node()->hasTagName(brTag))
469 replaceTextInNode(static_cast<Text*>(position.node()), position.deprecatedEditingOffset(), 1, nonBreakingSpaceString());
494 // whole text node is empty
538 // Assert that we are not going to delete all of the text in the node.
555 Node* next;
556 for (Node* node = start.node(); node; node = next) {
557 next = node->traverseNextNode();
558 if (node->isTextNode()) {
559 Text* textNode = static_cast<Text*>(node);
560 int startOffset = node == start.node() ? start.deprecatedEditingOffset() : 0;
561 int endOffset = node == end.node() ? end.deprecatedEditingOffset() : textNode->length();
564 if (node == end.node())
575 PassRefPtr<Node> CompositeEditCommand::appendBlockPlaceholder(PassRefPtr<Element> container)
583 RefPtr<Node> placeholder = createBlockPlaceholderElement(document());
588 PassRefPtr<Node> CompositeEditCommand::insertBlockPlaceholder(const Position& pos)
594 ASSERT(pos.node()->renderer());
596 RefPtr<Node> placeholder = createBlockPlaceholderElement(document());
601 PassRefPtr<Node> CompositeEditCommand::addBlockPlaceholderIfNeeded(Element* container)
635 PassRefPtr<Node> CompositeEditCommand::insertNewDefaultParagraphElementAt(const Position& position)
646 PassRefPtr<Node> CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary(const Position& pos)
670 if (isBlock(upstreamStart.node())) {
673 if (upstreamStart.node() == editableRootForPosition(upstreamStart)) {
676 if (!Position::hasRenderedNonAnonymousDescendantsWithHeight(upstreamStart.node()->renderer()))
678 } else if (isBlock(upstreamEnd.node())) {
679 if (!upstreamEnd.node()->isDescendantOf(upstreamStart.node())) {
685 else if (enclosingBlock(upstreamEnd.node()) != upstreamStart.node()) {
688 ASSERT(upstreamStart.node()->isDescendantOf(enclosingBlock(upstreamEnd.node())));
697 RefPtr<Node> newBlock = insertNewDefaultParagraphElementAt(upstreamStart);
704 void CompositeEditCommand::pushAnchorElementDown(Node* anchorNode)
728 Node* startAnchor = enclosingAnchorElement(originalSelection.start());
733 Node* endAnchor = enclosingAnchorElement(originalSelection.end());
738 ASSERT(originalSelection.start().node()->inDocument() && originalSelection.end().node()->inDocument());
745 void CompositeEditCommand::cloneParagraphUnderNewElement(Position& start, Position& end, Node* outerNode, Element* blockElement)
749 RefPtr<Node> topNode = outerNode->cloneNode(isTableElement(outerNode));
751 RefPtr<Node> lastNode = topNode;
753 if (start.node() != outerNode) {
754 Vector<RefPtr<Node> > ancestors;
756 // Insert each node from innerNode to outerNode (excluded) in a list.
757 for (Node* n = start.node(); n && n != outerNode; n = n->parentNode())
760 // Clone every node between start.node() and outerBlock.
763 Node* item = ancestors[i - 1].get();
764 RefPtr<Node> child = item->cloneNode(isTableElement(item));
770 // Handle the case of paragraphs with more than one node,
771 // cloning all the siblings until end.node() is reached.
773 if (start.node() != end.node() && !start.node()->isDescendantOf(end.node())) {
777 while (!end.node()->isDescendantOf(outerNode)) {
782 for (Node* n = start.node()->traverseNextSibling(outerNode); n; n = n->nextSibling()) {
783 if (n->parentNode() != start.node()->parentNode())
786 RefPtr<Node> clonedNode = n->cloneNode(true);
789 if (n == end.node() || end.node()->isDescendantOf(n))
808 Node* node = position.node();
810 if (node->hasTagName(brTag))
811 removeNodeAndPruneAncestors(node);
816 else if (isBlock(node))
817 removeNodeAndPruneAncestors(node);
820 // We can safely assume this is a text node.
821 Text* textNode = static_cast<Text*>(node);
823 removeNodeAndPruneAncestors(node);
836 void CompositeEditCommand::moveParagraphWithClones(const VisiblePosition& startOfParagraphToMove, const VisiblePosition& endOfParagraphToMove, Element* blockElement, Node* outerNode)
870 if (beforeParagraph.isNotNull() && !isTableElement(beforeParagraph.deepEquivalent().node()) && (!isEndOfParagraph(beforeParagraph) || beforeParagraph == afterParagraph)) {
929 RefPtr<Range> range = Range::create(document(), startRangeCompliant.node(), startRangeCompliant.deprecatedEditingOffset(), endRangeCompliant.node(), endRangeCompliant.deprecatedEditingOffset());
950 ASSERT(destination.deepEquivalent().node()->inDocument());
966 // Need an updateLayout here in case inserting the br has split a text node.
997 Node* emptyListItem = enclosingEmptyListItem(endingSelection().visibleStart());
1003 Node* listNode = emptyListItem->parentNode();
1004 // FIXME: Can't we do something better when the immediate parent wasn't a list node?
1011 if (Node* blockEnclosingList = listNode->parentNode()) {
1030 // If emptyListItem follows another list item, split the list node.
1034 // If emptyListItem is followed by other list item, then insert newBlock before the list node.
1035 // Because we have splitted the element, emptyListItem is the first element in the list node.
1040 // When emptyListItem does not follow any list item, insert newBlock after the enclosing list node.
1041 // Remove the enclosing node if emptyListItem is the only child; otherwise just remove emptyListItem.
1064 Node* highestBlockquote = highestEnclosingNodeOfType(caret.deepEquivalent(), &isMailBlockquote);
1076 RefPtr<Node> br = createBreakElement(document());
1093 ASSERT(caretPos.node()->hasTagName(brTag) || (caretPos.node()->isTextNode() && caretPos.node()->renderer()->style()->preserveNewline()));
1095 if (caretPos.node()->hasTagName(brTag)) {
1096 Position beforeBR(positionInParentBeforeNode(caretPos.node()));
1097 removeNode(caretPos.node());
1098 prune(beforeBR.node());
1101 Text* textNode = static_cast<Text*>(caretPos.node());
1102 Node* parentNode = textNode->parentNode();
1103 // The preserved newline must be the first thing in the node, since otherwise the previous
1122 Node* enclosingAnchor = enclosingAnchorElement(original);
1137 if (original.node() != enclosingAnchor && original.node()->parentNode() != enclosingAnchor) {
1146 if (lineBreakExistsAtVisiblePosition(visiblePos) && downstream.node()->isDescendantOf(enclosingAnchor))
1156 if (original.node() != enclosingAnchor && original.node()->parentNode() != enclosingAnchor) {
1174 // to determine if the split is necessary. Returns the last split node.
1175 PassRefPtr<Node> CompositeEditCommand::splitTreeToNode(Node* start, Node* end, bool splitAncestor)
1179 RefPtr<Node> node;
1180 for (node = start; node && node->parent() != end; node = node->parent()) {
1181 VisiblePosition positionInParent(Position(node->parent(), 0), DOWNSTREAM);
1182 VisiblePosition positionInNode(Position(node, 0), DOWNSTREAM);
1184 applyCommandToComposite(SplitElementCommand::create(static_cast<Element*>(node->parent()), node));
1187 splitElement(static_cast<Element*>(end), node);
1188 return node->parent();
1190 return node.release();