Changeset 151695 in webkit


Ignore:
Timestamp:
Jun 18, 2013 2:25:07 PM (11 years ago)
Author:
rniwa@webkit.org
Message:

REGRESSION(r147602): Search text field doesn't render selection when it has some :focus rules
https://bugs.webkit.org/show_bug.cgi?id=117747

Reviewed by Kent Tamura.

.:

  • ManualTests/search-select-all-with-focus-style.html: Added.

Source/WebCore:

Merge https://chromium.googlesource.com/chromium/blink/+/7ff656c8239ce3b125246abcc8b149a603fcff28

r147612 added setNeedsLayout(true, MarkOnlyThis) for
TextControlInnerTextElement renderer. It's ok for input[type=text]
because RenderTextControlSingleLine also has needsLayout flag, and it
has only the inner text renderer as a child.

As for input[type=search], it doesn't work. Renderer structure for
input[type=search] is:

RenderTextControlSingleLine
└Renderer for TextControlInnerContainer

└Renderer for TextControlInnerElement

└Renderer for TextControlInnerTextElement

After r147612, there is a case that only RenderTextControlSingleLine
and TextControlInnerTextElement renderer have needsLayout flag, and
others don't. It won't trigger layout for
TextControlInnerTextElement renderer.

We should set needsLayout flags of TextControlInnerContainer renderer
and TextControlInnerElement renderer by MarkContainingBlockChain.

Manual Tests: search-select-all-with-focus-style.html
(I tried but couldn't make a test that works in DRT)

  • rendering/RenderTextControlSingleLine.cpp:

(WebCore::RenderTextControlSingleLine::styleDidChange):

Location:
trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r151679 r151695  
     12013-06-18  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        REGRESSION(r147602): Search text field doesn't render selection when it has some :focus rules
     4        https://bugs.webkit.org/show_bug.cgi?id=117747
     5
     6        Reviewed by Kent Tamura.
     7
     8        * ManualTests/search-select-all-with-focus-style.html: Added.
     9
    1102013-06-18  Carlos Garcia Campos  <cgarcia@igalia.com>
    211
  • trunk/Source/WebCore/ChangeLog

    r151694 r151695  
     12013-06-18  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        REGRESSION(r147602): Search text field doesn't render selection when it has some :focus rules
     4        https://bugs.webkit.org/show_bug.cgi?id=117747
     5
     6        Reviewed by Kent Tamura.
     7
     8        Merge https://chromium.googlesource.com/chromium/blink/+/7ff656c8239ce3b125246abcc8b149a603fcff28
     9
     10        r147612 added setNeedsLayout(true, MarkOnlyThis) for
     11        TextControlInnerTextElement renderer. It's ok for input[type=text]
     12        because RenderTextControlSingleLine also has needsLayout flag, and it
     13        has only the inner text renderer as a child.
     14
     15        As for input[type=search], it doesn't work. Renderer structure for
     16        input[type=search] is:
     17
     18        RenderTextControlSingleLine
     19        └Renderer for TextControlInnerContainer
     20          └Renderer for TextControlInnerElement
     21            └Renderer for TextControlInnerTextElement
     22
     23        After r147612, there is a case that only RenderTextControlSingleLine
     24        and TextControlInnerTextElement renderer have needsLayout flag, and
     25        others don't.  It won't trigger layout for
     26        TextControlInnerTextElement renderer.
     27
     28        We should set needsLayout flags of TextControlInnerContainer renderer
     29        and TextControlInnerElement renderer by MarkContainingBlockChain.
     30
     31        Manual Tests: search-select-all-with-focus-style.html
     32        (I tried but couldn't make a test that works in DRT)
     33
     34        * rendering/RenderTextControlSingleLine.cpp:
     35        (WebCore::RenderTextControlSingleLine::styleDidChange):
     36
    1372013-06-18  Dean Jackson  <dino@apple.com>
    238
  • trunk/Source/WebCore/rendering/RenderTextControlSingleLine.cpp

    r150796 r151695  
    256256    RenderObject* innerTextRenderer = innerTextElement()->renderer();
    257257    if (innerTextRenderer && diff == StyleDifferenceLayout)
    258         innerTextRenderer->setNeedsLayout(true, MarkOnlyThis);
     258        innerTextRenderer->setNeedsLayout(true, MarkContainingBlockChain);
    259259    if (HTMLElement* placeholder = inputElement()->placeholderElement())
    260260        placeholder->setInlineStyleProperty(CSSPropertyTextOverflow, textShouldBeTruncated() ? CSSValueEllipsis : CSSValueClip);
Note: See TracChangeset for help on using the changeset viewer.