mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-18 15:55:36 +00:00
Bug 1174452: Part 2 -- scan nsTextNode
's parent element for preformat in nsDocumentEncoder r=masayuki,hsivonen
This takes into account `white-space: pre` style of `nsTextNode`'s parent element when formatting the selected text of the `nsTextNode` node. Differential Revision: https://phabricator.services.mozilla.com/D29159 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
fad4ead1a4
commit
331e0a761b
@ -338,8 +338,15 @@ nsresult nsDocumentEncoder::SerializeNodeStart(nsINode& aOriginalNode,
|
||||
int32_t aEndOffset,
|
||||
nsAString& aStr,
|
||||
nsINode* aFixupNode) {
|
||||
if (mNeedsPreformatScanning && aOriginalNode.IsElement()) {
|
||||
mSerializer->ScanElementForPreformat(aOriginalNode.AsElement());
|
||||
if (mNeedsPreformatScanning) {
|
||||
if (aOriginalNode.IsElement()) {
|
||||
mSerializer->ScanElementForPreformat(aOriginalNode.AsElement());
|
||||
} else if (aOriginalNode.IsText()) {
|
||||
const nsCOMPtr<nsINode> parent = aOriginalNode.GetParent();
|
||||
if (parent && parent->IsElement()) {
|
||||
mSerializer->ScanElementForPreformat(parent->AsElement());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!IsVisibleNode(&aOriginalNode)) {
|
||||
@ -393,8 +400,15 @@ nsresult nsDocumentEncoder::SerializeNodeStart(nsINode& aOriginalNode,
|
||||
}
|
||||
|
||||
nsresult nsDocumentEncoder::SerializeNodeEnd(nsINode& aNode, nsAString& aStr) {
|
||||
if (mNeedsPreformatScanning && aNode.IsElement()) {
|
||||
mSerializer->ForgetElementForPreformat(aNode.AsElement());
|
||||
if (mNeedsPreformatScanning) {
|
||||
if (aNode.IsElement()) {
|
||||
mSerializer->ForgetElementForPreformat(aNode.AsElement());
|
||||
} else if (aNode.IsText()) {
|
||||
const nsCOMPtr<nsINode> parent = aNode.GetParent();
|
||||
if (parent && parent->IsElement()) {
|
||||
mSerializer->ForgetElementForPreformat(parent->AsElement());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!IsVisibleNode(&aNode)) {
|
||||
|
@ -293,7 +293,7 @@ function test()
|
||||
e = document.getElementById('testG');
|
||||
synthesizeMouse(e, 1, 1, {});
|
||||
synthesizeMouse(e, 400, 180, { shiftKey: true });
|
||||
checkText("aaaa bbbb", e); // XXX this doesn't seem right - bug 1247799
|
||||
checkText("aaaa\n\n\n\nbbbb", e);
|
||||
checkRanges([[0,0,-1,1],[2,0,-1,3],[4,0,-1,5],[6,0,6,5]], e);
|
||||
doneTest(e);
|
||||
|
||||
@ -303,7 +303,7 @@ function test()
|
||||
synthesizeMouse(e, 30, 90, { shiftKey: true });
|
||||
synthesizeMouse(e, 50, 90, { shiftKey: true });
|
||||
synthesizeMouse(e, 70, 90, { shiftKey: true });
|
||||
checkText("aaaa bbb", e);
|
||||
checkText("aaaa\n\nbbb", e);
|
||||
checkRanges([[0,0,-1,1],[-1,2,3,4]], e);
|
||||
|
||||
doneTest(e);
|
||||
|
Loading…
Reference in New Issue
Block a user