⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 93068 in webkit


Ignore:
Timestamp:
Aug 15, 2011, 4:34:29 PM (15 years ago)
Author:
ap@apple.com
Message:

Regional indicator symbols that are combined should behave as a single character when editing
https://bugs.webkit.org/show_bug.cgi?id=65395

Reviewed by Dan Bernstein.

Part one: make backspace work.

Test: editing/deleting/regional-indicators.html

  • rendering/RenderText.cpp: (WebCore::isRegionalIndicator): (WebCore::RenderText::previousOffsetForBackwardDeletion): Added a special case for regional indicator symbols.
Location:
trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r93054 r93068  
     12011-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
    1112011-08-15  Chris Rogers  <crogers@google.com>
    212
  • trunk/LayoutTests/editing/deleting/delete-3928305-fix.html

    r11995 r93068  
    1414<script>
    1515
    16 function editingTest() {
     16function editisngTest() {
    1717    for (i = 0; i < 4; i++)
    1818        moveSelectionForwardByCharacterCommand();
  • trunk/Source/WebCore/ChangeLog

    r93067 r93068  
     12011-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
    1172011-08-15  Jeffrey Pfau  <jpfau@apple.com>
    218
  • trunk/Source/WebCore/rendering/RenderText.cpp

    r92625 r93068  
    15001500}
    15011501
     1502inline 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
    15021508#endif
    15031509
     
    15081514    StringImpl& text = *m_text.impl();
    15091515    UChar32 character;
     1516    bool sawRegionalIndicator = false;
    15101517    while (current > 0) {
    15111518        if (U16_IS_TRAIL(text[--current]))
     
    15161523        UChar32 character = text.characterStartingAt(current);
    15171524
     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
    15181535        // We don't combine characters in Armenian ... Limbu range for backward deletion.
    15191536        if ((character >= 0x0530) && (character < 0x1950))
    15201537            break;
     1538
     1539        if (isRegionalIndicator(character)) {
     1540            sawRegionalIndicator = true;
     1541            continue;
     1542        }
    15211543
    15221544        if (!isMark(character) && (character != 0xFF9E) && (character != 0xFF9F))
Note: See TracChangeset for help on using the changeset viewer.