Bug 1318570 - Clean up GetTextNode into TextEditRules.
parent
b90ee96863
commit
27db95eea0
|
@ -25,7 +25,6 @@
|
||||||
#include "nsError.h"
|
#include "nsError.h"
|
||||||
#include "nsGkAtoms.h"
|
#include "nsGkAtoms.h"
|
||||||
#include "nsIContent.h"
|
#include "nsIContent.h"
|
||||||
#include "nsIDOMCharacterData.h"
|
|
||||||
#include "nsIDOMDocument.h"
|
#include "nsIDOMDocument.h"
|
||||||
#include "nsIDOMElement.h"
|
#include "nsIDOMElement.h"
|
||||||
#include "nsIDOMNode.h"
|
#include "nsIDOMNode.h"
|
||||||
|
@ -479,26 +478,24 @@ TextEditRules::CollapseSelectionToTrailingBRIfNeeded(Selection* aSelection)
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline already_AddRefed<nsIDOMNode>
|
static inline already_AddRefed<nsINode>
|
||||||
GetTextNode(Selection* selection,
|
GetTextNode(Selection* selection)
|
||||||
EditorBase* editor)
|
|
||||||
{
|
{
|
||||||
int32_t selOffset;
|
int32_t selOffset;
|
||||||
nsCOMPtr<nsIDOMNode> selNode;
|
nsCOMPtr<nsINode> selNode;
|
||||||
nsresult rv =
|
nsresult rv =
|
||||||
editor->GetStartNodeAndOffset(selection,
|
EditorBase::GetStartNodeAndOffset(selection,
|
||||||
getter_AddRefs(selNode), &selOffset);
|
getter_AddRefs(selNode), &selOffset);
|
||||||
NS_ENSURE_SUCCESS(rv, nullptr);
|
NS_ENSURE_SUCCESS(rv, nullptr);
|
||||||
if (!editor->IsTextNode(selNode)) {
|
if (!EditorBase::IsTextNode(selNode)) {
|
||||||
// Get an nsINode from the nsIDOMNode
|
|
||||||
nsCOMPtr<nsINode> node = do_QueryInterface(selNode);
|
|
||||||
// if node is null, return it to indicate there's no text
|
|
||||||
NS_ENSURE_TRUE(node, nullptr);
|
|
||||||
// This should be the root node, walk the tree looking for text nodes
|
// This should be the root node, walk the tree looking for text nodes
|
||||||
RefPtr<NodeIterator> iter =
|
RefPtr<NodeIterator> iter =
|
||||||
new NodeIterator(node, nsIDOMNodeFilter::SHOW_TEXT, NodeFilterHolder());
|
new NodeIterator(selNode, nsIDOMNodeFilter::SHOW_TEXT,
|
||||||
while (!editor->IsTextNode(selNode)) {
|
NodeFilterHolder());
|
||||||
if (NS_FAILED(iter->NextNode(getter_AddRefs(selNode))) || !selNode) {
|
while (!EditorBase::IsTextNode(selNode)) {
|
||||||
|
IgnoredErrorResult rv;
|
||||||
|
selNode = iter->NextNode(rv);
|
||||||
|
if (!selNode) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1382,13 +1379,10 @@ TextEditRules::HideLastPWInput()
|
||||||
nsContentUtils::GetSelectionInTextControl(selection, mTextEditor->GetRoot(),
|
nsContentUtils::GetSelectionInTextControl(selection, mTextEditor->GetRoot(),
|
||||||
start, end);
|
start, end);
|
||||||
|
|
||||||
nsCOMPtr<nsIDOMNode> selNode = GetTextNode(selection, mTextEditor);
|
nsCOMPtr<nsINode> selNode = GetTextNode(selection);
|
||||||
NS_ENSURE_TRUE(selNode, NS_OK);
|
NS_ENSURE_TRUE(selNode, NS_OK);
|
||||||
|
|
||||||
nsCOMPtr<nsIDOMCharacterData> nodeAsText(do_QueryInterface(selNode));
|
selNode->GetAsText()->ReplaceData(mLastStart, mLastLength, hiddenText);
|
||||||
NS_ENSURE_TRUE(nodeAsText, NS_OK);
|
|
||||||
|
|
||||||
nodeAsText->ReplaceData(mLastStart, mLastLength, hiddenText);
|
|
||||||
selection->Collapse(selNode, start);
|
selection->Collapse(selNode, start);
|
||||||
if (start != end) {
|
if (start != end) {
|
||||||
selection->Extend(selNode, end);
|
selection->Extend(selNode, end);
|
||||||
|
|
Loading…
Reference in New Issue