зеркало из https://github.com/mozilla/pjs.git
Bug 750063 - Allow passing null to nsTextEditRules::CreateMozBR's outparam; r=ehsan
This commit is contained in:
Родитель
aa5069c6ef
Коммит
e1087c279b
|
@ -4687,7 +4687,7 @@ nsHTMLEditRules::WillAlign(nsISelection *aSelection,
|
|||
NS_ENSURE_SUCCESS(res, res);
|
||||
*aHandled = true;
|
||||
// put in a moz-br so that it won't get deleted
|
||||
res = CreateMozBR(theDiv, 0, address_of(brNode));
|
||||
res = CreateMozBR(theDiv, 0);
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
res = aSelection->Collapse(theDiv, 0);
|
||||
selectionResetter.Abort(); // don't reset our selection in this case.
|
||||
|
@ -6538,10 +6538,8 @@ nsHTMLEditRules::ReturnInHeader(nsISelection *aSelection,
|
|||
bool bIsEmptyNode;
|
||||
res = mHTMLEditor->IsEmptyNode(prevItem, &bIsEmptyNode);
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
if (bIsEmptyNode)
|
||||
{
|
||||
nsCOMPtr<nsIDOMNode> brNode;
|
||||
res = CreateMozBR(prevItem, 0, address_of(brNode));
|
||||
if (bIsEmptyNode) {
|
||||
res = CreateMozBR(prevItem, 0);
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
}
|
||||
}
|
||||
|
@ -6853,14 +6851,10 @@ nsHTMLEditRules::ReturnInListItem(nsISelection *aSelection,
|
|||
bool bIsEmptyNode;
|
||||
res = mHTMLEditor->IsEmptyNode(prevItem, &bIsEmptyNode);
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
if (bIsEmptyNode)
|
||||
{
|
||||
nsCOMPtr<nsIDOMNode> brNode;
|
||||
res = CreateMozBR(prevItem, 0, address_of(brNode));
|
||||
if (bIsEmptyNode) {
|
||||
res = CreateMozBR(prevItem, 0);
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
res = mHTMLEditor->IsEmptyNode(aListItem, &bIsEmptyNode, true);
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
if (bIsEmptyNode)
|
||||
|
@ -7551,11 +7545,11 @@ nsHTMLEditRules::AdjustSpecialBreaks(bool aSafeToAskFrames)
|
|||
// and we want the br's to be after them. Also, we want the br
|
||||
// to be after the selection if the selection is in this node.
|
||||
PRUint32 len;
|
||||
nsCOMPtr<nsIDOMNode> brNode, theNode = arrayOfNodes[0];
|
||||
nsCOMPtr<nsIDOMNode> theNode = arrayOfNodes[0];
|
||||
arrayOfNodes.RemoveObjectAt(0);
|
||||
res = nsEditor::GetLengthOfDOMNode(theNode, len);
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
res = CreateMozBR(theNode, (PRInt32)len, address_of(brNode));
|
||||
res = CreateMozBR(theNode, (PRInt32)len);
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
}
|
||||
|
||||
|
@ -7746,9 +7740,8 @@ nsHTMLEditRules::AdjustSelection(nsISelection *aSelection, nsIEditor::EDirection
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDOMNode> brNode;
|
||||
// we know we can skip the rest of this routine given the cirumstance
|
||||
return CreateMozBR(selNode, selOffset, address_of(brNode));
|
||||
return CreateMozBR(selNode, selOffset);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7782,7 +7775,7 @@ nsHTMLEditRules::AdjustSelection(nsISelection *aSelection, nsIEditor::EDirection
|
|||
// the user will see no new line for the break. Also, things
|
||||
// like table cells won't grow in height.
|
||||
nsCOMPtr<nsIDOMNode> brNode;
|
||||
res = CreateMozBR(selNode, selOffset, address_of(brNode));
|
||||
res = CreateMozBR(selNode, selOffset, getter_AddRefs(brNode));
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
res = nsEditor::GetNodeLocation(brNode, address_of(selNode), &selOffset);
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
|
@ -8444,14 +8437,13 @@ nsHTMLEditRules::InsertMozBRIfNeeded(nsIDOMNode *aNode)
|
|||
if (!IsBlockNode(aNode)) return NS_OK;
|
||||
|
||||
bool isEmpty;
|
||||
nsCOMPtr<nsIDOMNode> brNode;
|
||||
nsresult res = mHTMLEditor->IsEmptyNode(aNode, &isEmpty);
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
if (isEmpty)
|
||||
{
|
||||
res = CreateMozBR(aNode, 0, address_of(brNode));
|
||||
if (!isEmpty) {
|
||||
return NS_OK;
|
||||
}
|
||||
return res;
|
||||
|
||||
return CreateMozBR(aNode, 0);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
|
|
@ -1103,8 +1103,7 @@ nsTextEditRules::CreateTrailingBRIfNeeded()
|
|||
if (!lastChild->IsHTML(nsGkAtoms::br)) {
|
||||
nsAutoTxnsConserveSelection dontSpazMySelection(mEditor);
|
||||
nsCOMPtr<nsIDOMNode> domBody = do_QueryInterface(body);
|
||||
nsCOMPtr<nsIDOMNode> unused;
|
||||
return CreateMozBR(domBody, body->Length(), address_of(unused));
|
||||
return CreateMozBR(domBody, body->Length());
|
||||
}
|
||||
|
||||
// Check to see if the trailing BR is a former bogus node - this will have
|
||||
|
@ -1334,21 +1333,26 @@ nsTextEditRules::FillBufWithPWChars(nsAString *aOutString, PRInt32 aLength)
|
|||
// CreateMozBR: put a BR node with moz attribute at {aNode, aOffset}
|
||||
//
|
||||
nsresult
|
||||
nsTextEditRules::CreateMozBR(nsIDOMNode *inParent, PRInt32 inOffset, nsCOMPtr<nsIDOMNode> *outBRNode)
|
||||
nsTextEditRules::CreateMozBR(nsIDOMNode* inParent, PRInt32 inOffset,
|
||||
nsIDOMNode** outBRNode)
|
||||
{
|
||||
NS_ENSURE_TRUE(inParent && outBRNode, NS_ERROR_NULL_POINTER);
|
||||
NS_ENSURE_TRUE(inParent, NS_ERROR_NULL_POINTER);
|
||||
|
||||
nsresult res = mEditor->CreateBR(inParent, inOffset, outBRNode);
|
||||
nsCOMPtr<nsIDOMNode> brNode;
|
||||
nsresult res = mEditor->CreateBR(inParent, inOffset, address_of(brNode));
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
|
||||
// give it special moz attr
|
||||
nsCOMPtr<nsIDOMElement> brElem = do_QueryInterface(*outBRNode);
|
||||
if (brElem)
|
||||
{
|
||||
nsCOMPtr<nsIDOMElement> brElem = do_QueryInterface(brNode);
|
||||
if (brElem) {
|
||||
res = mEditor->SetAttribute(brElem, NS_LITERAL_STRING("type"), NS_LITERAL_STRING("_moz"));
|
||||
NS_ENSURE_SUCCESS(res, res);
|
||||
}
|
||||
return res;
|
||||
|
||||
if (outBRNode) {
|
||||
brNode.forget(outBRNode);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
|
|
@ -226,7 +226,8 @@ protected:
|
|||
/** Remove IME composition text from password buffer */
|
||||
nsresult RemoveIMETextFromPWBuf(PRUint32 &aStart, nsAString *aIMEString);
|
||||
|
||||
nsresult CreateMozBR(nsIDOMNode *inParent, PRInt32 inOffset, nsCOMPtr<nsIDOMNode> *outBRNode);
|
||||
nsresult CreateMozBR(nsIDOMNode* inParent, PRInt32 inOffset,
|
||||
nsIDOMNode** outBRNode = nsnull);
|
||||
|
||||
nsresult CheckBidiLevelForDeletion(nsISelection *aSelection,
|
||||
nsIDOMNode *aSelNode,
|
||||
|
|
Загрузка…
Ссылка в новой задаче