зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1574852 - part 32: Move `HTMLEditRules::MaybeSplitAncestorsForInsertWithTransaction()` to `HTMLEditor` r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D43193 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
337e804b70
Коммит
337a97617a
|
@ -4071,8 +4071,9 @@ nsresult HTMLEditRules::MakeList(nsAtom& aListType, bool aEntireList,
|
||||||
}
|
}
|
||||||
|
|
||||||
SplitNodeResult splitAtSelectionStartResult =
|
SplitNodeResult splitAtSelectionStartResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(aListType,
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
atStartOfSelection);
|
.MaybeSplitAncestorsForInsertWithTransaction(aListType,
|
||||||
|
atStartOfSelection);
|
||||||
if (NS_WARN_IF(splitAtSelectionStartResult.Failed())) {
|
if (NS_WARN_IF(splitAtSelectionStartResult.Failed())) {
|
||||||
return splitAtSelectionStartResult.Rv();
|
return splitAtSelectionStartResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -4356,7 +4357,9 @@ nsresult HTMLEditRules::MakeList(nsAtom& aListType, bool aEntireList,
|
||||||
// need to make a list to put things in if we haven't already,
|
// need to make a list to put things in if we haven't already,
|
||||||
if (!curList) {
|
if (!curList) {
|
||||||
SplitNodeResult splitCurNodeResult =
|
SplitNodeResult splitCurNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(aListType, atCurNode);
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
|
.MaybeSplitAncestorsForInsertWithTransaction(aListType,
|
||||||
|
atCurNode);
|
||||||
if (NS_WARN_IF(splitCurNodeResult.Failed())) {
|
if (NS_WARN_IF(splitCurNodeResult.Failed())) {
|
||||||
return splitCurNodeResult.Rv();
|
return splitCurNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -4670,8 +4673,9 @@ nsresult HTMLEditRules::MakeBasicBlock(nsAtom& blockType) {
|
||||||
}
|
}
|
||||||
// Make sure we can put a block here.
|
// Make sure we can put a block here.
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(blockType,
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
pointToInsertBlock);
|
.MaybeSplitAncestorsForInsertWithTransaction(blockType,
|
||||||
|
pointToInsertBlock);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -4866,8 +4870,9 @@ nsresult HTMLEditRules::IndentAroundSelectionWithCSS() {
|
||||||
|
|
||||||
// make sure we can put a block here
|
// make sure we can put a block here
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
atStartOfSelection);
|
.MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
||||||
|
atStartOfSelection);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -4989,8 +4994,9 @@ nsresult HTMLEditRules::IndentAroundSelectionWithCSS() {
|
||||||
atCurNode.GetContainer()->NodeInfo()->NameAtom();
|
atCurNode.GetContainer()->NodeInfo()->NameAtom();
|
||||||
// Create a new nested list of correct type.
|
// Create a new nested list of correct type.
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
MOZ_KnownLive(*containerName), atCurNode);
|
.MaybeSplitAncestorsForInsertWithTransaction(
|
||||||
|
MOZ_KnownLive(*containerName), atCurNode);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -5042,8 +5048,9 @@ nsresult HTMLEditRules::IndentAroundSelectionWithCSS() {
|
||||||
}
|
}
|
||||||
|
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
atCurNode);
|
.MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
||||||
|
atCurNode);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -5159,8 +5166,9 @@ nsresult HTMLEditRules::IndentAroundSelectionWithHTML() {
|
||||||
|
|
||||||
// Make sure we can put a block here.
|
// Make sure we can put a block here.
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::blockquote,
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
atStartOfSelection);
|
.MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::blockquote,
|
||||||
|
atStartOfSelection);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -5275,8 +5283,9 @@ nsresult HTMLEditRules::IndentAroundSelectionWithHTML() {
|
||||||
atCurNode.GetContainer()->NodeInfo()->NameAtom();
|
atCurNode.GetContainer()->NodeInfo()->NameAtom();
|
||||||
// Create a new nested list of correct type.
|
// Create a new nested list of correct type.
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
MOZ_KnownLive(*containerName), atCurNode);
|
.MaybeSplitAncestorsForInsertWithTransaction(
|
||||||
|
MOZ_KnownLive(*containerName), atCurNode);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -5339,8 +5348,9 @@ nsresult HTMLEditRules::IndentAroundSelectionWithHTML() {
|
||||||
atListItem.GetContainer()->NodeInfo()->NameAtom();
|
atListItem.GetContainer()->NodeInfo()->NameAtom();
|
||||||
// Create a new nested list of correct type.
|
// Create a new nested list of correct type.
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
MOZ_KnownLive(*containerName), atListItem);
|
.MaybeSplitAncestorsForInsertWithTransaction(
|
||||||
|
MOZ_KnownLive(*containerName), atListItem);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -5386,8 +5396,9 @@ nsresult HTMLEditRules::IndentAroundSelectionWithHTML() {
|
||||||
}
|
}
|
||||||
|
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::blockquote,
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
atCurNode);
|
.MaybeSplitAncestorsForInsertWithTransaction(
|
||||||
|
*nsGkAtoms::blockquote, atCurNode);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -6210,8 +6221,9 @@ nsresult HTMLEditRules::AlignContentsAtSelection(const nsAString& aAlignType) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
atStartOfSelection);
|
.MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
||||||
|
atStartOfSelection);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -6381,8 +6393,9 @@ nsresult HTMLEditRules::AlignContentsAtSelection(const nsAString& aAlignType) {
|
||||||
}
|
}
|
||||||
|
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
atCurNode);
|
.MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
||||||
|
atCurNode);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -8730,8 +8743,9 @@ nsresult HTMLEditRules::MakeBlockquote(
|
||||||
// If no curBlock, make one
|
// If no curBlock, make one
|
||||||
if (!curBlock) {
|
if (!curBlock) {
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::blockquote,
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
EditorDOMPoint(curNode));
|
.MaybeSplitAncestorsForInsertWithTransaction(
|
||||||
|
*nsGkAtoms::blockquote, EditorDOMPoint(curNode));
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -8962,7 +8976,9 @@ nsresult HTMLEditRules::ApplyBlockStyle(
|
||||||
|
|
||||||
// Make sure we can put a block here
|
// Make sure we can put a block here
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(aBlockTag, atCurNode);
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
|
.MaybeSplitAncestorsForInsertWithTransaction(aBlockTag,
|
||||||
|
atCurNode);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -9015,7 +9031,9 @@ nsresult HTMLEditRules::ApplyBlockStyle(
|
||||||
// The break is the first (or even only) node we encountered. Create a
|
// The break is the first (or even only) node we encountered. Create a
|
||||||
// block for it.
|
// block for it.
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(aBlockTag, atCurNode);
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
|
.MaybeSplitAncestorsForInsertWithTransaction(aBlockTag,
|
||||||
|
atCurNode);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -9074,7 +9092,9 @@ nsresult HTMLEditRules::ApplyBlockStyle(
|
||||||
// If no curBlock, make one
|
// If no curBlock, make one
|
||||||
if (!curBlock) {
|
if (!curBlock) {
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(aBlockTag, atCurNode);
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
|
.MaybeSplitAncestorsForInsertWithTransaction(aBlockTag,
|
||||||
|
atCurNode);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -9134,16 +9154,16 @@ nsresult HTMLEditRules::ApplyBlockStyle(
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
SplitNodeResult HTMLEditRules::MaybeSplitAncestorsForInsertWithTransaction(
|
SplitNodeResult HTMLEditor::MaybeSplitAncestorsForInsertWithTransaction(
|
||||||
nsAtom& aTag, const EditorDOMPoint& aStartOfDeepestRightNode) {
|
nsAtom& aTag, const EditorDOMPoint& aStartOfDeepestRightNode) {
|
||||||
MOZ_ASSERT(IsEditorDataAvailable());
|
MOZ_ASSERT(IsEditActionDataAvailable());
|
||||||
|
|
||||||
if (NS_WARN_IF(!aStartOfDeepestRightNode.IsSet())) {
|
if (NS_WARN_IF(!aStartOfDeepestRightNode.IsSet())) {
|
||||||
return SplitNodeResult(NS_ERROR_INVALID_ARG);
|
return SplitNodeResult(NS_ERROR_INVALID_ARG);
|
||||||
}
|
}
|
||||||
MOZ_ASSERT(aStartOfDeepestRightNode.IsSetAndValid());
|
MOZ_ASSERT(aStartOfDeepestRightNode.IsSetAndValid());
|
||||||
|
|
||||||
RefPtr<Element> host = HTMLEditorRef().GetActiveEditingHost();
|
RefPtr<Element> host = GetActiveEditingHost();
|
||||||
if (NS_WARN_IF(!host)) {
|
if (NS_WARN_IF(!host)) {
|
||||||
return SplitNodeResult(NS_ERROR_FAILURE);
|
return SplitNodeResult(NS_ERROR_FAILURE);
|
||||||
}
|
}
|
||||||
|
@ -9165,7 +9185,7 @@ SplitNodeResult HTMLEditRules::MaybeSplitAncestorsForInsertWithTransaction(
|
||||||
return SplitNodeResult(NS_ERROR_FAILURE);
|
return SplitNodeResult(NS_ERROR_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HTMLEditorRef().CanContainTag(*pointToInsert.GetContainer(), aTag)) {
|
if (CanContainTag(*pointToInsert.GetContainer(), aTag)) {
|
||||||
// Found an ancestor node which can contain the element.
|
// Found an ancestor node which can contain the element.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -9180,13 +9200,10 @@ SplitNodeResult HTMLEditRules::MaybeSplitAncestorsForInsertWithTransaction(
|
||||||
return SplitNodeResult(aStartOfDeepestRightNode);
|
return SplitNodeResult(aStartOfDeepestRightNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult = SplitNodeDeepWithTransaction(
|
||||||
MOZ_KnownLive(HTMLEditorRef())
|
MOZ_KnownLive(*pointToInsert.GetChild()), aStartOfDeepestRightNode,
|
||||||
.SplitNodeDeepWithTransaction(
|
SplitAtEdges::eAllowToCreateEmptyContainer);
|
||||||
MOZ_KnownLive(*pointToInsert.GetChild()),
|
if (NS_WARN_IF(Destroyed())) {
|
||||||
aStartOfDeepestRightNode,
|
|
||||||
SplitAtEdges::eAllowToCreateEmptyContainer);
|
|
||||||
if (NS_WARN_IF(!CanHandleEditAction())) {
|
|
||||||
return SplitNodeResult(NS_ERROR_EDITOR_DESTROYED);
|
return SplitNodeResult(NS_ERROR_EDITOR_DESTROYED);
|
||||||
}
|
}
|
||||||
NS_WARNING_ASSERTION(splitNodeResult.Succeeded(),
|
NS_WARNING_ASSERTION(splitNodeResult.Succeeded(),
|
||||||
|
@ -10868,8 +10885,9 @@ nsresult HTMLEditRules::PrepareToMakeElementAbsolutePosition(
|
||||||
|
|
||||||
// Make sure we can put a block here.
|
// Make sure we can put a block here.
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
atStartOfSelection);
|
.MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
||||||
|
atStartOfSelection);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -10943,8 +10961,9 @@ nsresult HTMLEditRules::PrepareToMakeElementAbsolutePosition(
|
||||||
atCurNode.GetContainer()->NodeInfo()->NameAtom();
|
atCurNode.GetContainer()->NodeInfo()->NameAtom();
|
||||||
// Create a new nested list of correct type.
|
// Create a new nested list of correct type.
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
MOZ_KnownLive(*containerName), atCurNode);
|
.MaybeSplitAncestorsForInsertWithTransaction(
|
||||||
|
MOZ_KnownLive(*containerName), atCurNode);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -11015,8 +11034,9 @@ nsresult HTMLEditRules::PrepareToMakeElementAbsolutePosition(
|
||||||
atListItem.GetContainer()->NodeInfo()->NameAtom();
|
atListItem.GetContainer()->NodeInfo()->NameAtom();
|
||||||
// Create a new nested list of correct type
|
// Create a new nested list of correct type
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
MOZ_KnownLive(*containerName), atListItem);
|
.MaybeSplitAncestorsForInsertWithTransaction(
|
||||||
|
MOZ_KnownLive(*containerName), atListItem);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
@ -11067,8 +11087,9 @@ nsresult HTMLEditRules::PrepareToMakeElementAbsolutePosition(
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
SplitNodeResult splitNodeResult =
|
SplitNodeResult splitNodeResult =
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
MOZ_KnownLive(HTMLEditorRef())
|
||||||
atCurNode);
|
.MaybeSplitAncestorsForInsertWithTransaction(*nsGkAtoms::div,
|
||||||
|
atCurNode);
|
||||||
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
if (NS_WARN_IF(splitNodeResult.Failed())) {
|
||||||
return splitNodeResult.Rv();
|
return splitNodeResult.Rv();
|
||||||
}
|
}
|
||||||
|
|
|
@ -835,27 +835,6 @@ class HTMLEditRules : public TextEditRules {
|
||||||
MOZ_MUST_USE nsresult
|
MOZ_MUST_USE nsresult
|
||||||
MakeBlockquote(nsTArray<OwningNonNull<nsINode>>& aNodeArray);
|
MakeBlockquote(nsTArray<OwningNonNull<nsINode>>& aNodeArray);
|
||||||
|
|
||||||
/**
|
|
||||||
* MaybeSplitAncestorsForInsertWithTransaction() does nothing if container of
|
|
||||||
* aStartOfDeepestRightNode can have an element whose tag name is aTag.
|
|
||||||
* Otherwise, looks for an ancestor node which is or is in active editing
|
|
||||||
* host and can have an element whose name is aTag. If there is such
|
|
||||||
* ancestor, its descendants are split.
|
|
||||||
*
|
|
||||||
* Note that this may create empty elements while splitting ancestors.
|
|
||||||
*
|
|
||||||
* @param aTag The name of element to be inserted
|
|
||||||
* after calling this method.
|
|
||||||
* @param aStartOfDeepestRightNode The start point of deepest right node.
|
|
||||||
* This point must be descendant of
|
|
||||||
* active editing host.
|
|
||||||
* @return When succeeded, SplitPoint() returns
|
|
||||||
* the point to insert the element.
|
|
||||||
*/
|
|
||||||
MOZ_CAN_RUN_SCRIPT MOZ_MUST_USE SplitNodeResult
|
|
||||||
MaybeSplitAncestorsForInsertWithTransaction(
|
|
||||||
nsAtom& aTag, const EditorDOMPoint& aStartOfDeepestRightNode);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JoinNearestEditableNodesWithTransaction() joins two editable nodes which
|
* JoinNearestEditableNodesWithTransaction() joins two editable nodes which
|
||||||
* are themselves or the nearest editable node of aLeftNode and aRightNode.
|
* are themselves or the nearest editable node of aLeftNode and aRightNode.
|
||||||
|
|
|
@ -1595,6 +1595,27 @@ class HTMLEditor final : public TextEditor,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MaybeSplitAncestorsForInsertWithTransaction() does nothing if container of
|
||||||
|
* aStartOfDeepestRightNode can have an element whose tag name is aTag.
|
||||||
|
* Otherwise, looks for an ancestor node which is or is in active editing
|
||||||
|
* host and can have an element whose name is aTag. If there is such
|
||||||
|
* ancestor, its descendants are split.
|
||||||
|
*
|
||||||
|
* Note that this may create empty elements while splitting ancestors.
|
||||||
|
*
|
||||||
|
* @param aTag The name of element to be inserted
|
||||||
|
* after calling this method.
|
||||||
|
* @param aStartOfDeepestRightNode The start point of deepest right node.
|
||||||
|
* This point must be descendant of
|
||||||
|
* active editing host.
|
||||||
|
* @return When succeeded, SplitPoint() returns
|
||||||
|
* the point to insert the element.
|
||||||
|
*/
|
||||||
|
MOZ_CAN_RUN_SCRIPT MOZ_MUST_USE SplitNodeResult
|
||||||
|
MaybeSplitAncestorsForInsertWithTransaction(
|
||||||
|
nsAtom& aTag, const EditorDOMPoint& aStartOfDeepestRightNode);
|
||||||
|
|
||||||
protected: // Called by helper classes.
|
protected: // Called by helper classes.
|
||||||
virtual void OnStartToHandleTopLevelEditSubAction(
|
virtual void OnStartToHandleTopLevelEditSubAction(
|
||||||
EditSubAction aEditSubAction, nsIEditor::EDirection aDirection) override;
|
EditSubAction aEditSubAction, nsIEditor::EDirection aDirection) override;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче