Changeset 19412 in webkit


Ignore:
Timestamp:
Feb 5, 2007 3:07:03 PM (17 years ago)
Author:
weinig
Message:

LayoutTests:

Reviewed by Adele.

  • fast/forms/search-rtl-expected.checksum: Added.
  • fast/forms/search-rtl-expected.png: Added.
  • fast/forms/search-rtl-expected.txt: Added.
  • fast/forms/search-rtl.html: Added.

WebCore:

Reviewed by Adele.

Test: fast/forms/search-rtl.html

  • rendering/RenderTextControl.cpp: (WebCore::RenderTextControl::createInnerBlockStyle): Always make the inner block LTR so that the results button will be on the left and the cancel button will be on the right. (WebCore::RenderTextControl::createInnerTextStyle): Inherit the direction property directly from the control so that it won't be masked by the inner block's LTR override. (WebCore::RenderTextControl::nodeAtPoint): Removed code that swapped the results and cancel buttons for RTL. (WebCore::RenderTextControl::forwardEvent): Ditto. (WebCore::RenderTextControl::clientPaddingLeft): Ditto. (WebCore::RenderTextControl::clientPaddingRight): Ditto.
Location:
trunk
Files:
4 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r19411 r19412  
     12007-02-05  Mitz Pettel  <mitz@webkit.org>
     2
     3        Reviewed by Adele.
     4
     5        - test for http://bugs.webkit.org/show_bug.cgi?id=11916
     6          REGRESSION (SearchField): RTL search fields are mixed up
     7
     8        * fast/forms/search-rtl-expected.checksum: Added.
     9        * fast/forms/search-rtl-expected.png: Added.
     10        * fast/forms/search-rtl-expected.txt: Added.
     11        * fast/forms/search-rtl.html: Added.
     12
    1132007-02-05  Mitz Pettel  <mitz@webkit.org>
    214
  • trunk/WebCore/ChangeLog

    r19411 r19412  
     12007-02-05  Mitz Pettel  <mitz@webkit.org>
     2
     3        Reviewed by Adele.
     4
     5        - fix http://bugs.webkit.org/show_bug.cgi?id=11916
     6          REGRESSION (SearchField): RTL search fields are mixed up
     7
     8        Test: fast/forms/search-rtl.html
     9
     10        * rendering/RenderTextControl.cpp:
     11        (WebCore::RenderTextControl::createInnerBlockStyle): Always make the inner
     12        block LTR so that the results button will be on the left and the cancel
     13        button will be on the right.
     14        (WebCore::RenderTextControl::createInnerTextStyle): Inherit the direction
     15        property directly from the control so that it won't be masked by the inner
     16        block's LTR override.
     17        (WebCore::RenderTextControl::nodeAtPoint): Removed code that swapped the
     18        results and cancel buttons for RTL.
     19        (WebCore::RenderTextControl::forwardEvent): Ditto.
     20        (WebCore::RenderTextControl::clientPaddingLeft): Ditto.
     21        (WebCore::RenderTextControl::clientPaddingRight): Ditto.
     22
    1232007-02-05  Mitz Pettel  <mitz@webkit.org>
    224
  • trunk/WebCore/rendering/RenderTextControl.cpp

    r19336 r19412  
    116116    innerBlockStyle->inheritFrom(startStyle);
    117117    innerBlockStyle->setDisplay(BLOCK);
     118    innerBlockStyle->setDirection(LTR);
    118119    // We don't want the shadow dom to be editable, so we set this block to read-only in case the input itself is editable.
    119120    innerBlockStyle->setUserModify(READ_ONLY);
     
    128129
    129130    textBlockStyle->inheritFrom(startStyle);
     131    // The inner block, if present, always has its direction set to LTR,
     132    // so we need to inherit the direction from the element.
     133    textBlockStyle->setDirection(style()->direction());
    130134    textBlockStyle->setUserModify(element->isReadOnlyControl() || element->disabled() ? READ_ONLY : READ_WRITE_PLAINTEXT_ONLY);
    131135    if (m_innerBlock)
     
    601605        IntPoint localPoint = IntPoint(x - tx - m_x, y - ty - m_y);
    602606        if (m_innerBlock) {
    603             Node* leftNode;
    604             Node* rightNode;
    605             if (style()->direction() == LTR) {
    606                 leftNode = m_resultsButton.get();
    607                 rightNode = m_cancelButton.get();
    608             } else {
    609                 leftNode = m_cancelButton.get();
    610                 rightNode = m_resultsButton.get();
    611             }
    612            
    613607            int textLeft = tx + m_x + m_innerBlock->renderer()->xPos() + m_innerText->renderer()->xPos();
    614608            int textRight = textLeft + m_innerText->renderer()->width();
    615             if (leftNode && x < textLeft) {
    616                 result.setInnerNode(leftNode);
    617                 result.setLocalPoint(IntPoint(localPoint.x() - m_innerText->renderer()->xPos() - m_innerBlock->renderer()->xPos() - leftNode->renderer()->xPos(),
    618                                               localPoint.y() - m_innerText->renderer()->yPos() - m_innerBlock->renderer()->yPos() - leftNode->renderer()->yPos()));
     609            if (m_resultsButton && x < textLeft) {
     610                result.setInnerNode(m_resultsButton.get());
     611                result.setLocalPoint(IntPoint(localPoint.x() - m_innerText->renderer()->xPos() - m_innerBlock->renderer()->xPos() - m_resultsButton->renderer()->xPos(),
     612                                              localPoint.y() - m_innerText->renderer()->yPos() - m_innerBlock->renderer()->yPos() - m_resultsButton->renderer()->yPos()));
    619613                return true;
    620614            }
    621             if (rightNode && x > textRight) {
    622                 result.setInnerNode(rightNode);
    623                 result.setLocalPoint(IntPoint(localPoint.x() - m_innerText->renderer()->xPos() - m_innerBlock->renderer()->xPos() - rightNode->renderer()->xPos(),
    624                                               localPoint.y() - m_innerText->renderer()->yPos() - m_innerBlock->renderer()->yPos() - rightNode->renderer()->yPos()));
     615            if (m_cancelButton && x > textRight) {
     616                result.setInnerNode(m_cancelButton.get());
     617                result.setLocalPoint(IntPoint(localPoint.x() - m_innerText->renderer()->xPos() - m_innerBlock->renderer()->xPos() - m_cancelButton->renderer()->xPos(),
     618                                              localPoint.y() - m_innerText->renderer()->yPos() - m_innerBlock->renderer()->yPos() - m_cancelButton->renderer()->yPos()));
    625619                return true;
    626620            }
     
    744738        updatePlaceholder();
    745739    else {
    746         EventTargetNode* leftNode;
    747         EventTargetNode* rightNode;
    748         if (style()->direction() == LTR) {
    749             leftNode = m_resultsButton.get();
    750             rightNode = m_cancelButton.get();
    751         } else {
    752             leftNode = m_cancelButton.get();
    753             rightNode = m_resultsButton.get();
    754         }
    755         if (evt->isMouseEvent() && leftNode && static_cast<MouseEvent*>(evt)->x() < m_innerText->renderer()->absoluteBoundingBoxRect().x())
    756             leftNode->defaultEventHandler(evt);
    757         else if (evt->isMouseEvent() && rightNode && static_cast<MouseEvent*>(evt)->x() > m_innerText->renderer()->absoluteBoundingBoxRect().right())
    758             rightNode->defaultEventHandler(evt);
     740        if (evt->isMouseEvent() && m_resultsButton && static_cast<MouseEvent*>(evt)->x() < m_innerText->renderer()->absoluteBoundingBoxRect().x())
     741            m_resultsButton->defaultEventHandler(evt);
     742        else if (evt->isMouseEvent() && m_cancelButton && static_cast<MouseEvent*>(evt)->x() > m_innerText->renderer()->absoluteBoundingBoxRect().right())
     743            m_cancelButton->defaultEventHandler(evt);
    759744        else
    760745            m_innerText->defaultEventHandler(evt);
     
    943928int RenderTextControl::clientPaddingLeft() const
    944929{
    945     if (style()->direction() == LTR)
    946         return paddingLeft() + m_resultsButton->renderer()->width();
    947     return paddingLeft() + m_cancelButton->renderer()->width();
     930    return paddingLeft() + m_resultsButton->renderer()->width();
    948931}
    949932
    950933int RenderTextControl::clientPaddingRight() const
    951934{
    952     if (style()->direction() == LTR)
    953         return paddingRight() + m_cancelButton->renderer()->width();
    954     return paddingRight() + m_resultsButton->renderer()->width();
     935    return paddingRight() + m_cancelButton->renderer()->width();
    955936}
    956937
Note: See TracChangeset for help on using the changeset viewer.