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

Side by Side Diff: Source/core/editing/TextIterator.cpp

Issue 88453002: Calling isRenderedTable() instead of isTable() to maintain consistency within the Editing module. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved. 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved.
3 * Copyright (C) 2005 Alexey Proskuryakov. 3 * Copyright (C) 2005 Alexey Proskuryakov.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 854
855 if (node->renderer() && node->renderer()->isText()) 855 if (node->renderer() && node->renderer()->isText())
856 offset += collapsedSpaceLength(toRenderText(node->renderer()), offset); 856 offset += collapsedSpaceLength(toRenderText(node->renderer()), offset);
857 857
858 return offset; 858 return offset;
859 } 859 }
860 860
861 // Whether or not we should emit a character as we enter m_node (if it's a conta iner) or as we hit it (if it's atomic). 861 // Whether or not we should emit a character as we enter m_node (if it's a conta iner) or as we hit it (if it's atomic).
862 bool TextIterator::shouldRepresentNodeOffsetZero() 862 bool TextIterator::shouldRepresentNodeOffsetZero()
863 { 863 {
864 if (m_emitsCharactersBetweenAllVisiblePositions && m_node->renderer() && m_n ode->renderer()->isTable()) 864 if (m_emitsCharactersBetweenAllVisiblePositions && isRenderedTable(m_node))
865 return true; 865 return true;
866 866
867 // Leave element positioned flush with start of a paragraph 867 // Leave element positioned flush with start of a paragraph
868 // (e.g. do not insert tab before a table cell at the start of a paragraph) 868 // (e.g. do not insert tab before a table cell at the start of a paragraph)
869 if (m_lastCharacter == '\n') 869 if (m_lastCharacter == '\n')
870 return false; 870 return false;
871 871
872 // Otherwise, show the position if we have emitted any characters 872 // Otherwise, show the position if we have emitted any characters
873 if (m_hasEmitted) 873 if (m_hasEmitted)
874 return true; 874 return true;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 // and in that case we'll get null. We don't want to put in newlines at the start in that case. 910 // and in that case we'll get null. We don't want to put in newlines at the start in that case.
911 // The currPos.isNotNull() check is needed because positions in non-HTML con tent 911 // The currPos.isNotNull() check is needed because positions in non-HTML con tent
912 // (like SVG) do not have visible positions, and we don't want to emit for t hem either. 912 // (like SVG) do not have visible positions, and we don't want to emit for t hem either.
913 VisiblePosition startPos = VisiblePosition(Position(m_startContainer, m_star tOffset, Position::PositionIsOffsetInAnchor), DOWNSTREAM); 913 VisiblePosition startPos = VisiblePosition(Position(m_startContainer, m_star tOffset, Position::PositionIsOffsetInAnchor), DOWNSTREAM);
914 VisiblePosition currPos = VisiblePosition(positionBeforeNode(m_node), DOWNST REAM); 914 VisiblePosition currPos = VisiblePosition(positionBeforeNode(m_node), DOWNST REAM);
915 return startPos.isNotNull() && currPos.isNotNull() && !inSameLine(startPos, currPos); 915 return startPos.isNotNull() && currPos.isNotNull() && !inSameLine(startPos, currPos);
916 } 916 }
917 917
918 bool TextIterator::shouldEmitSpaceBeforeAndAfterNode(Node* node) 918 bool TextIterator::shouldEmitSpaceBeforeAndAfterNode(Node* node)
919 { 919 {
920 return node->renderer() && node->renderer()->isTable() && (node->renderer()- >isInline() || m_emitsCharactersBetweenAllVisiblePositions); 920 return isRenderedTable(node) && (node->renderer()->isInline() || m_emitsChar actersBetweenAllVisiblePositions);
921 } 921 }
922 922
923 void TextIterator::representNodeOffsetZero() 923 void TextIterator::representNodeOffsetZero()
924 { 924 {
925 // Emit a character to show the positioning of m_node. 925 // Emit a character to show the positioning of m_node.
926 926
927 // When we haven't been emitting any characters, shouldRepresentNodeOffsetZe ro() can 927 // When we haven't been emitting any characters, shouldRepresentNodeOffsetZe ro() can
928 // create VisiblePositions, which is expensive. So, we perform the inexpensi ve checks 928 // create VisiblePositions, which is expensive. So, we perform the inexpensi ve checks
929 // on m_node to see if it necessitates emitting a character first and will e arly return 929 // on m_node to see if it necessitates emitting a character first and will e arly return
930 // before encountering shouldRepresentNodeOffsetZero()s worse case behavior. 930 // before encountering shouldRepresentNodeOffsetZero()s worse case behavior.
(...skipping 1389 matching lines...) Expand 10 before | Expand all | Expand 10 after
2320 if (!matchLength) 2320 if (!matchLength)
2321 return collapsedToBoundary(range, !(options & Backwards)); 2321 return collapsedToBoundary(range, !(options & Backwards));
2322 } 2322 }
2323 2323
2324 // Then, find the document position of the start and the end of the text. 2324 // Then, find the document position of the start and the end of the text.
2325 CharacterIterator computeRangeIterator(range, TextIteratorEntersTextControls ); 2325 CharacterIterator computeRangeIterator(range, TextIteratorEntersTextControls );
2326 return characterSubrange(computeRangeIterator, matchStart, matchLength); 2326 return characterSubrange(computeRangeIterator, matchStart, matchLength);
2327 } 2327 }
2328 2328
2329 } 2329 }
OLDNEW
« no previous file with comments | « Source/core/editing/InsertParagraphSeparatorCommand.cpp ('k') | Source/core/editing/TypingCommand.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698