Changeset 25386 in webkit


Ignore:
Timestamp:
Sep 6, 2007 5:20:24 AM (17 years ago)
Author:
bdash
Message:

2007-09-06 Mitz Pettel <mitz@webkit.org>

Reviewed by Adam Roben.

  • platform/PlatformString.h: (WebCore::String::defaultWritingDirection):
  • platform/StringImpl.cpp: (WebCore::StringImpl::defaultWritingDirection): Moved textDirectionForParagraph() from RenderMenuList.cpp here.
  • platform/StringImpl.h:
  • platform/win/PopupMenuWin.cpp: (WebCore::PopupMenu::itemWritingDirectionIsNatural): Changed to return 'true'. (WebCore::PopupMenu::paint): Changed to use natural directionality for menu items.
  • rendering/RenderMenuList.cpp: (WebCore::RenderMenuList::adjustInnerStyle): Use defaultWritingDirection.
Location:
trunk/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r25383 r25386  
     12007-09-06  Mitz Pettel  <mitz@webkit.org>
     2
     3        Reviewed by Adam Roben.
     4
     5        - fix http://bugs.webkit.org/show_bug.cgi?id=14685
     6          <rdar://problem/5349755> text-align affects <select> button but not its drop-down menu
     7
     8        * platform/PlatformString.h:
     9        (WebCore::String::defaultWritingDirection):
     10        * platform/StringImpl.cpp:
     11        (WebCore::StringImpl::defaultWritingDirection): Moved textDirectionForParagraph()
     12        from RenderMenuList.cpp here.
     13        * platform/StringImpl.h:
     14        * platform/win/PopupMenuWin.cpp:
     15        (WebCore::PopupMenu::itemWritingDirectionIsNatural): Changed to return 'true'.
     16        (WebCore::PopupMenu::paint): Changed to use natural directionality for menu
     17        items.
     18        * rendering/RenderMenuList.cpp:
     19        (WebCore::RenderMenuList::adjustInnerStyle): Use defaultWritingDirection.
     20
    1212007-09-06  Maciej Stachowiak  <mjs@apple.com>
    222
  • trunk/WebCore/platform/PlatformString.h

    r24730 r25386  
    186186    CString latin1() const;
    187187    CString utf8() const;
     188
     189    // Determines the writing direction using the Unicode Bidi Algorithm rules P2 and P3.
     190    WTF::Unicode::Direction defaultWritingDirection() const { return m_impl ? m_impl->defaultWritingDirection() : WTF::Unicode::LeftToRight; }
    188191   
    189192    String(const DeprecatedString&);
  • trunk/WebCore/platform/StringImpl.cpp

    r24158 r25386  
    12201220}
    12211221
     1222WTF::Unicode::Direction StringImpl::defaultWritingDirection() const
     1223{
     1224    for (unsigned i = 0; i < m_length; ++i) {
     1225        WTF::Unicode::Direction charDirection = WTF::Unicode::direction(m_data[i]);
     1226        if (charDirection == WTF::Unicode::LeftToRight)
     1227            return WTF::Unicode::LeftToRight;
     1228        if (charDirection == WTF::Unicode::RightToLeft || charDirection == WTF::Unicode::RightToLeftArabic)
     1229            return WTF::Unicode::RightToLeft;
     1230    }
     1231    return WTF::Unicode::LeftToRight;
     1232}
     1233
    12221234StringImpl::StringImpl(const Identifier& str)
    12231235{
  • trunk/WebCore/platform/StringImpl.h

    r24158 r25386  
    138138    Vector<char> ascii() const;
    139139
     140    WTF::Unicode::Direction defaultWritingDirection() const;
     141
    140142#if PLATFORM(CF)
    141143    StringImpl(CFStringRef);
  • trunk/WebCore/platform/win/PopupMenuWin.cpp

    r24972 r25386  
    414414bool PopupMenu::itemWritingDirectionIsNatural()
    415415{
    416     return false;
     416    return true;
    417417}
    418418
     
    492492        unsigned length = itemText.length();
    493493        const UChar* string = itemText.characters();
    494         TextStyle textStyle(0, 0, 0, clientStyle->direction() == RTL, clientStyle->unicodeBidi() == Override);
     494        TextStyle textStyle(0, 0, 0, itemText.defaultWritingDirection() == WTF::Unicode::RightToLeft);
    495495        TextRun textRun(string, length);
    496496
  • trunk/WebCore/rendering/RenderMenuList.cpp

    r25322 r25386  
    7777}
    7878
    79 // Determines the writing direction using the Unicode Bidi Algorithm rules P2 and P3.
    80 static TextDirection textDirectionForParagraph(StringImpl* paragraph)
    81 {
    82     int length = paragraph->length();
    83     for (int i = 0; i < length; ++i) {
    84         WTF::Unicode::Direction charDirection = WTF::Unicode::direction((*paragraph)[i]);
    85         if (charDirection == WTF::Unicode::LeftToRight)
    86             return LTR;
    87         if (charDirection == WTF::Unicode::RightToLeft || charDirection == WTF::Unicode::RightToLeftArabic)
    88             return RTL;
    89     }
    90     return LTR;
    91 }
    92 
    9379void RenderMenuList::adjustInnerStyle()
    9480{
     
    10490        // so we must adjust our own style to match.
    10591        m_innerBlock->style()->setTextAlign(LEFT);
    106         TextDirection direction = m_buttonText ? textDirectionForParagraph(m_buttonText->text()) : LTR;
     92        TextDirection direction = (m_buttonText && m_buttonText->text()->defaultWritingDirection() == WTF::Unicode::RightToLeft) ? RTL : LTR;
    10793        m_innerBlock->style()->setDirection(direction);
    10894    }
Note: See TracChangeset for help on using the changeset viewer.