void RemoveNodeCommand::doApply() { ContainerNode* parent = m_node->parentNode(); if (!parent || (m_shouldAssumeContentIsAlwaysEditable == DoNotAssumeContentIsAlwaysEditable && !parent->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable) && parent->renderer())) return; ASSERT(parent->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable) || !parent->renderer()); m_parent = parent; m_refChild = m_node->nextSibling(); m_node->remove(IGNORE_EXCEPTION); }
void RemoveNodeCommand::doApply() { ContainerNode* parent = m_node->parentNode(); if (!parent || (m_shouldAssumeContentIsAlwaysEditable == DoNotAssumeContentIsAlwaysEditable && !parent->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable) && parent->attached())) return; ASSERT(parent->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable) || !parent->attached()); m_parent = parent; m_refChild = m_node->nextSibling(); ExceptionCode ec; m_node->remove(ec); }
void InsertNodeBeforeCommand::doApply() { ContainerNode* parent = m_refChild->parentNode(); if (!parent || (m_shouldAssumeContentIsAlwaysEditable == DoNotAssumeContentIsAlwaysEditable && !parent->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable))) return; ASSERT(parent->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable)); parent->insertBefore(m_insertChild.get(), m_refChild.get(), IGNORE_EXCEPTION); }
void RemoveNodeCommand::doApply(EditingState* editingState) { ContainerNode* parent = m_node->parentNode(); if (!parent || (m_shouldAssumeContentIsAlwaysEditable == DoNotAssumeContentIsAlwaysEditable && !parent->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable) && parent->inActiveDocument())) return; ASSERT(parent->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable) || !parent->inActiveDocument()); m_parent = parent; m_refChild = m_node->nextSibling(); m_node->remove(IGNORE_EXCEPTION); // Node::remove dispatch synchronous events such as IFRAME unload events, // and event handlers may break the document. We check the document state // here in order to prevent further processing in bad situation. ABORT_EDITING_COMMAND_IF(!m_node->document().frame()); ABORT_EDITING_COMMAND_IF(!m_node->document().documentElement()); }
void SplitTextNodeCommand::doReapply() { if (!m_text1 || !m_text2) return; ContainerNode* parent = m_text2->parentNode(); if (!parent || !parent->isContentEditable()) return; insertText1AndTrimText2(); }
void InsertNodeBeforeCommand::doApply() { ContainerNode* parent = m_refChild->parentNode(); if (!parent || (m_shouldAssumeContentIsAlwaysEditable == DoNotAssumeContentIsAlwaysEditable && !parent->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable))) return; ASSERT(parent->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable)); parent->insertBefore(m_insertChild.get(), m_refChild.get(), IGNORE_EXCEPTION); if (AXObjectCache* cache = document().existingAXObjectCache()) cache->nodeTextChangeNotification(m_insertChild.get(), AXObjectCache::AXTextInserted, 0, m_insertChild->nodeValue()); }
void RemoveNodeCommand::doApply() { ContainerNode* parent = m_node->parentNode(); if (!parent || !parent->isContentEditable()) return; m_parent = parent; m_refChild = m_node->nextSibling(); ExceptionCode ec; m_node->remove(ec); }
void SplitTextNodeCommand::doApply() { ContainerNode* parent = m_text2->parentNode(); if (!parent || !parent->isContentEditable()) return; ExceptionCode ec = 0; String prefixText = m_text2->substringData(0, m_offset, ec); if (prefixText.isEmpty()) return; m_text1 = Text::create(document(), prefixText); ASSERT(m_text1); document()->markers()->copyMarkers(m_text2.get(), 0, m_offset, m_text1.get(), 0); insertText1AndTrimText2(); }