Changeset 93068 in webkit
- Timestamp:
- Aug 15, 2011, 4:34:29 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/editing/deleting/delete-3928305-fix.html (modified) (1 diff)
-
LayoutTests/editing/deleting/regional-indicators-expected.txt (added)
-
LayoutTests/editing/deleting/regional-indicators.html (added)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/rendering/RenderText.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r93054 r93068 1 2011-08-15 Alexey Proskuryakov <ap@apple.com> 2 3 Regional indicator symbols that are combined should behave as a single character when editing 4 https://bugs.webkit.org/show_bug.cgi?id=65395 5 6 Reviewed by Dan Bernstein. 7 8 * editing/deleting/regional-indicators-expected.txt: Added. 9 * editing/deleting/regional-indicators.html: Added. 10 1 11 2011-08-15 Chris Rogers <crogers@google.com> 2 12 -
trunk/LayoutTests/editing/deleting/delete-3928305-fix.html
r11995 r93068 14 14 <script> 15 15 16 function editi ngTest() {16 function editisngTest() { 17 17 for (i = 0; i < 4; i++) 18 18 moveSelectionForwardByCharacterCommand(); -
trunk/Source/WebCore/ChangeLog
r93067 r93068 1 2011-08-15 Alexey Proskuryakov <ap@apple.com> 2 3 Regional indicator symbols that are combined should behave as a single character when editing 4 https://bugs.webkit.org/show_bug.cgi?id=65395 5 6 Reviewed by Dan Bernstein. 7 8 Part one: make backspace work. 9 10 Test: editing/deleting/regional-indicators.html 11 12 * rendering/RenderText.cpp: 13 (WebCore::isRegionalIndicator): 14 (WebCore::RenderText::previousOffsetForBackwardDeletion): Added a special case for regional 15 indicator symbols. 16 1 17 2011-08-15 Jeffrey Pfau <jpfau@apple.com> 2 18 -
trunk/Source/WebCore/rendering/RenderText.cpp
r92625 r93068 1500 1500 } 1501 1501 1502 inline bool isRegionalIndicator(UChar32 c) 1503 { 1504 // National flag emoji each consists of a pair of regional indicator symbols. 1505 return 0x1F1E6 <= c && c <= 0x1F1FF; 1506 } 1507 1502 1508 #endif 1503 1509 … … 1508 1514 StringImpl& text = *m_text.impl(); 1509 1515 UChar32 character; 1516 bool sawRegionalIndicator = false; 1510 1517 while (current > 0) { 1511 1518 if (U16_IS_TRAIL(text[--current])) … … 1516 1523 UChar32 character = text.characterStartingAt(current); 1517 1524 1525 if (sawRegionalIndicator) { 1526 // We don't check if the pair of regional indicator symbols before current position can actually be combined 1527 // into a flag, and just delete it. This may not agree with how the pair is rendered in edge cases, 1528 // but is good enough in practice. 1529 if (isRegionalIndicator(character)) 1530 break; 1531 // Don't delete a preceding character that isn't a regional indicator symbol. 1532 U16_FWD_1_UNSAFE(text, current); 1533 } 1534 1518 1535 // We don't combine characters in Armenian ... Limbu range for backward deletion. 1519 1536 if ((character >= 0x0530) && (character < 0x1950)) 1520 1537 break; 1538 1539 if (isRegionalIndicator(character)) { 1540 sawRegionalIndicator = true; 1541 continue; 1542 } 1521 1543 1522 1544 if (!isMark(character) && (character != 0xFF9E) && (character != 0xFF9F))
Note:
See TracChangeset
for help on using the changeset viewer.