Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Side by Side Diff: Source/WebCore/editing/ApplyStyleCommand.cpp

Issue 9958002: Merge 112012 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1025/
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/WebCore/editing/ApplyStyleCommand.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 689 matching lines...) Expand 10 before | Expand all | Expand 10 after
700 700
701 Node* sibling = node->traverseNextSibling(); 701 Node* sibling = node->traverseNextSibling();
702 for (Node* descendent = node->firstChild(); descendent && descendent != sibl ing; descendent = descendent->traverseNextNode()) { 702 for (Node* descendent = node->firstChild(); descendent && descendent != sibl ing; descendent = descendent->traverseNextNode()) {
703 if (!descendent->rendererIsEditable()) 703 if (!descendent->rendererIsEditable())
704 return true; 704 return true;
705 } 705 }
706 706
707 return false; 707 return false;
708 } 708 }
709 709
710 void ApplyStyleCommand::applyInlineStyleToNodeRange(EditingStyle* style, Node* n ode, Node* pastEndNode) 710 void ApplyStyleCommand::applyInlineStyleToNodeRange(EditingStyle* style, PassRef Ptr<Node> startNode, PassRefPtr<Node> pastEndNode)
711 { 711 {
712 if (m_removeOnly) 712 if (m_removeOnly)
713 return; 713 return;
714 714
715 for (RefPtr<Node> next; node && node != pastEndNode; node = next.get()) { 715 RefPtr<Node> node = startNode;
716 for (RefPtr<Node> next; node && node != pastEndNode; node = next) {
716 next = node->traverseNextNode(); 717 next = node->traverseNextNode();
717 718
718 if (!node->renderer() || !node->rendererIsEditable()) 719 if (!node->renderer() || !node->rendererIsEditable())
719 continue; 720 continue;
720 721
721 if (!node->rendererIsRichlyEditable() && node->isHTMLElement()) { 722 if (!node->rendererIsRichlyEditable() && node->isHTMLElement()) {
722 // This is a plaintext-only region. Only proceed if it's fully selec ted. 723 // This is a plaintext-only region. Only proceed if it's fully selec ted.
723 // pastEndNode is the node after the last fully selected node, so if it's inside node then 724 // pastEndNode is the node after the last fully selected node, so if it's inside node then
724 // node isn't fully selected. 725 // node isn't fully selected.
725 if (pastEndNode && pastEndNode->isDescendantOf(node)) 726 if (pastEndNode && pastEndNode->isDescendantOf(node.get()))
726 break; 727 break;
727 // Add to this element's inline style and skip over its contents. 728 // Add to this element's inline style and skip over its contents.
728 HTMLElement* element = toHTMLElement(node); 729 HTMLElement* element = toHTMLElement(node.get());
729 RefPtr<CSSMutableStyleDeclaration> inlineStyle = element->ensureInli neStyleDecl()->copy(); 730 RefPtr<CSSMutableStyleDeclaration> inlineStyle = element->ensureInli neStyleDecl()->copy();
730 inlineStyle->merge(style->style()); 731 inlineStyle->merge(style->style());
731 setNodeAttribute(element, styleAttr, inlineStyle->asText()); 732 setNodeAttribute(element, styleAttr, inlineStyle->asText());
732 next = node->traverseNextSibling(); 733 next = node->traverseNextSibling();
733 continue; 734 continue;
734 } 735 }
735 736
736 if (isBlock(node)) 737 if (isBlock(node.get()))
737 continue; 738 continue;
738 739
739 if (node->childNodeCount()) { 740 if (node->childNodeCount()) {
740 if (node->contains(pastEndNode) || containsNonEditableRegion(node) | | !node->parentNode()->rendererIsEditable()) 741 if (node->contains(pastEndNode.get()) || containsNonEditableRegion(n ode.get()) || !node->parentNode()->rendererIsEditable())
741 continue; 742 continue;
742 if (editingIgnoresContent(node)) { 743 if (editingIgnoresContent(node.get())) {
743 next = node->traverseNextSibling(); 744 next = node->traverseNextSibling();
744 continue; 745 continue;
745 } 746 }
746 } 747 }
747 748
748 RefPtr<Node> runStart = node; 749 RefPtr<Node> runStart = node;
749 RefPtr<Node> runEnd = node; 750 RefPtr<Node> runEnd = node;
750 Node* sibling = node->nextSibling(); 751 Node* sibling = node->nextSibling();
751 while (sibling && sibling != pastEndNode && !sibling->contains(pastEndNo de) 752 while (sibling && sibling != pastEndNode && !sibling->contains(pastEndNo de.get())
752 && (!isBlock(sibling) || sibling->hasTagName(brTag)) 753 && (!isBlock(sibling) || sibling->hasTagName(brTag))
753 && !containsNonEditableRegion(sibling)) { 754 && !containsNonEditableRegion(sibling)) {
754 runEnd = sibling; 755 runEnd = sibling;
755 sibling = runEnd->nextSibling(); 756 sibling = runEnd->nextSibling();
756 } 757 }
757 next = runEnd->traverseNextSibling(); 758 next = runEnd->traverseNextSibling();
758 759
759 if (!removeStyleFromRunBeforeApplyingStyle(style, runStart, runEnd)) 760 if (!removeStyleFromRunBeforeApplyingStyle(style, runStart, runEnd))
760 continue; 761 continue;
761 addInlineStyleIfNeeded(style, runStart.get(), runEnd.get(), AddStyledEle ment); 762 addInlineStyleIfNeeded(style, runStart.get(), runEnd.get(), AddStyledEle ment);
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after
1449 } 1450 }
1450 else { 1451 else {
1451 child = child->nextSibling(); 1452 child = child->nextSibling();
1452 } 1453 }
1453 } 1454 }
1454 1455
1455 updateStartEnd(newStart, newEnd); 1456 updateStartEnd(newStart, newEnd);
1456 } 1457 }
1457 1458
1458 } 1459 }
OLDNEW
« no previous file with comments | « Source/WebCore/editing/ApplyStyleCommand.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698