| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2005, 2006, 2008, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2005, 2006, 2008, 2009 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 489 } | 489 } |
| 490 return unsplitAncestor; | 490 return unsplitAncestor; |
| 491 } | 491 } |
| 492 | 492 |
| 493 void ApplyStyleCommand::removeEmbeddingUpToEnclosingBlock(Node* node, Node* unsp
litAncestor) | 493 void ApplyStyleCommand::removeEmbeddingUpToEnclosingBlock(Node* node, Node* unsp
litAncestor) |
| 494 { | 494 { |
| 495 Node* block = enclosingBlock(node); | 495 Node* block = enclosingBlock(node); |
| 496 if (!block) | 496 if (!block) |
| 497 return; | 497 return; |
| 498 | 498 |
| 499 Node* parent = 0; | 499 for (Node* n = node->parentNode(); n != block && n != unsplitAncestor; n = n
->parentNode()) { |
| 500 for (Node* n = node->parentNode(); n != block && n != unsplitAncestor; n = p
arent) { | |
| 501 parent = n->parentNode(); | |
| 502 if (!n->isStyledElement()) | 500 if (!n->isStyledElement()) |
| 503 continue; | 501 continue; |
| 504 | 502 |
| 505 Element* element = toElement(n); | 503 Element* element = toElement(n); |
| 506 int unicodeBidi = getIdentifierValue(CSSComputedStyleDeclaration::create
(element).get(), CSSPropertyUnicodeBidi); | 504 int unicodeBidi = getIdentifierValue(CSSComputedStyleDeclaration::create
(element).get(), CSSPropertyUnicodeBidi); |
| 507 if (!unicodeBidi || unicodeBidi == CSSValueNormal) | 505 if (!unicodeBidi || unicodeBidi == CSSValueNormal) |
| 508 continue; | 506 continue; |
| 509 | 507 |
| 510 // FIXME: This code should really consider the mapped attribute 'dir', t
he inline style declaration, | 508 // FIXME: This code should really consider the mapped attribute 'dir', t
he inline style declaration, |
| 511 // and all matching style rules in order to determine how to best set th
e unicode-bidi property to 'normal'. | 509 // and all matching style rules in order to determine how to best set th
e unicode-bidi property to 'normal'. |
| (...skipping 814 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1326 } | 1324 } |
| 1327 | 1325 |
| 1328 return false; | 1326 return false; |
| 1329 } | 1327 } |
| 1330 | 1328 |
| 1331 void ApplyStyleCommand::surroundNodeRangeWithElement(PassRefPtr<Node> passedStar
tNode, PassRefPtr<Node> endNode, PassRefPtr<Element> elementToInsert) | 1329 void ApplyStyleCommand::surroundNodeRangeWithElement(PassRefPtr<Node> passedStar
tNode, PassRefPtr<Node> endNode, PassRefPtr<Element> elementToInsert) |
| 1332 { | 1330 { |
| 1333 ASSERT(passedStartNode); | 1331 ASSERT(passedStartNode); |
| 1334 ASSERT(endNode); | 1332 ASSERT(endNode); |
| 1335 ASSERT(elementToInsert); | 1333 ASSERT(elementToInsert); |
| 1336 RefPtr<Node> startNode = passedStartNode; | 1334 RefPtr<Node> node = passedStartNode; |
| 1337 RefPtr<Element> element = elementToInsert; | 1335 RefPtr<Element> element = elementToInsert; |
| 1338 | 1336 |
| 1339 insertNodeBefore(element, startNode); | 1337 insertNodeBefore(element, node); |
| 1340 | 1338 |
| 1341 RefPtr<Node> node = startNode; | |
| 1342 while (node) { | 1339 while (node) { |
| 1343 RefPtr<Node> next = node->nextSibling(); | 1340 RefPtr<Node> next = node->nextSibling(); |
| 1344 if (node->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable)) { | 1341 if (node->isContentEditable(Node::UserSelectAllIsAlwaysNonEditable)) { |
| 1345 removeNode(node); | 1342 removeNode(node); |
| 1346 appendNode(node, element); | 1343 appendNode(node, element); |
| 1347 } | 1344 } |
| 1348 if (node == endNode) | 1345 if (node == endNode) |
| 1349 break; | 1346 break; |
| 1350 node = next; | 1347 node = next; |
| 1351 } | 1348 } |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1543 String textToMove = nextText->data(); | 1540 String textToMove = nextText->data(); |
| 1544 insertTextIntoNode(childText, childText->length(), textToMove); | 1541 insertTextIntoNode(childText, childText->length(), textToMove); |
| 1545 removeNode(next); | 1542 removeNode(next); |
| 1546 // don't move child node pointer. it may want to merge with more text no
des. | 1543 // don't move child node pointer. it may want to merge with more text no
des. |
| 1547 } | 1544 } |
| 1548 | 1545 |
| 1549 updateStartEnd(newStart, newEnd); | 1546 updateStartEnd(newStart, newEnd); |
| 1550 } | 1547 } |
| 1551 | 1548 |
| 1552 } | 1549 } |
| OLD | NEW |