Changeset 70945 in webkit


Ignore:
Timestamp:
Oct 29, 2010 4:15:57 PM (13 years ago)
Author:
rniwa@webkit.org
Message:

2010-10-29 Ryosuke Niwa <rniwa@webkit.org>

Reviewed by Darin Adler.

Remove RenderTextControl::setSelectionRange
https://bugs.webkit.org/show_bug.cgi?id=47870

Converted RenderTextControll::setSelectionRange to a global function.

  • Api/qwebpage.cpp: (QWebPagePrivate::inputMethodEvent): Calls setSelectionRange.

2010-10-29 Ryosuke Niwa <rniwa@webkit.org>

Reviewed by Darin Adler.

Remove RenderTextControl::setSelectionRange
https://bugs.webkit.org/show_bug.cgi?id=47870

Made RenderTextControl::setSelectionRange a global function.
Removed setSelectionStart, setSelectionEnd, and select from RenderTextControl.

No new tests are added since there is no behavioral change.

  • accessibility/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::setSelectedTextRange): Calls setSelectedTextRange.
  • dom/InputElement.cpp: (WebCore::InputElement::updateSelectionRange): Ditto.
  • html/HTMLFormControlElement.cpp: (WebCore::HTMLTextFormControlElement::setSelectionStart): Ditto. (WebCore::HTMLTextFormControlElement::setSelectionEnd): Ditto. (WebCore::HTMLTextFormControlElement::select): Ditto. (WebCore::HTMLTextFormControlElement::setSelectionRange): Ditto.
  • rendering/RenderTextControl.cpp: (WebCore::RenderTextControl::hasVisibleTextArea): Added. (WebCore::setSelectionRange): See above.
  • rendering/RenderTextControl.h:
Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r70935 r70945  
     12010-10-29  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Remove RenderTextControl::setSelectionRange
     6        https://bugs.webkit.org/show_bug.cgi?id=47870
     7
     8        Made RenderTextControl::setSelectionRange a global function.
     9        Removed setSelectionStart, setSelectionEnd, and select from RenderTextControl.
     10
     11        No new tests are added since there is no behavioral change.
     12
     13        * accessibility/AccessibilityRenderObject.cpp:
     14        (WebCore::AccessibilityRenderObject::setSelectedTextRange): Calls setSelectedTextRange.
     15        * dom/InputElement.cpp:
     16        (WebCore::InputElement::updateSelectionRange): Ditto.
     17        * html/HTMLFormControlElement.cpp:
     18        (WebCore::HTMLTextFormControlElement::setSelectionStart): Ditto.
     19        (WebCore::HTMLTextFormControlElement::setSelectionEnd): Ditto.
     20        (WebCore::HTMLTextFormControlElement::select): Ditto.
     21        (WebCore::HTMLTextFormControlElement::setSelectionRange): Ditto.
     22        * rendering/RenderTextControl.cpp:
     23        (WebCore::RenderTextControl::hasVisibleTextArea): Added.
     24        (WebCore::setSelectionRange): See above.
     25        * rendering/RenderTextControl.h:
     26
    1272010-10-29  Carlos Garcia Campos  <cgarcia@igalia.com>
    228
  • trunk/WebCore/accessibility/AccessibilityRenderObject.cpp

    r70256 r70945  
    19901990{
    19911991    if (isNativeTextControl()) {
    1992         RenderTextControl* textControl = toRenderTextControl(m_renderer);
    1993         textControl->setSelectionRange(range.start, range.start + range.length);
     1992        setSelectionRange(m_renderer->node(), range.start, range.start + range.length);
    19941993        return;
    19951994    }
    1996    
     1995
    19971996    Document* document = m_renderer->document();
    19981997    if (!document)
  • trunk/WebCore/dom/InputElement.cpp

    r69437 r70945  
    108108        return;
    109109
    110     element->document()->updateLayoutIgnorePendingStylesheets();
    111 
    112     if (RenderTextControl* renderer = toRenderTextControl(element->renderer()))
    113         renderer->setSelectionRange(start, end);
     110    setSelectionRange(element, start, end);
    114111}
    115112
  • trunk/WebCore/html/HTMLFormControlElement.cpp

    r70027 r70945  
    4747#include "ScriptEventListener.h"
    4848#include "ValidityState.h"
     49#include <limits>
    4950#include <wtf/Vector.h>
    5051
     
    5253
    5354using namespace HTMLNames;
     55using namespace std;
    5456
    5557HTMLFormControlElement::HTMLFormControlElement(const QualifiedName& tagName, Document* document, HTMLFormElement* form)
     
    549551void HTMLTextFormControlElement::setSelectionStart(int start)
    550552{
    551     if (RenderTextControl* renderer = textRendererAfterUpdateLayout())
    552         renderer->setSelectionStart(start);
     553    setSelectionRange(start, max(start, selectionEnd()));
    553554}
    554555
    555556void HTMLTextFormControlElement::setSelectionEnd(int end)
    556557{
    557     if (RenderTextControl* renderer = textRendererAfterUpdateLayout())
    558         renderer->setSelectionEnd(end);
     558    setSelectionRange(min(end, selectionStart()), end);
    559559}
    560560
    561561void HTMLTextFormControlElement::select()
    562562{
    563     if (RenderTextControl* renderer = textRendererAfterUpdateLayout())
    564         renderer->select();
     563    setSelectionRange(0, numeric_limits<int>::max());
    565564}
    566565
    567566void HTMLTextFormControlElement::setSelectionRange(int start, int end)
    568567{
    569     if (RenderTextControl* renderer = textRendererAfterUpdateLayout())
    570         renderer->setSelectionRange(start, end);
     568    WebCore::setSelectionRange(this, start, end);
    571569}
    572570
  • trunk/WebCore/rendering/RenderTextControl.cpp

    r70072 r70945  
    217217}
    218218
    219 void RenderTextControl::setSelectionStart(int start)
    220 {
    221     HTMLTextFormControlElement* element = static_cast<HTMLTextFormControlElement*>(node());
    222     setSelectionRange(start, max(start, element->selectionEnd()));
    223 }
    224 
    225 void RenderTextControl::setSelectionEnd(int end)
    226 {
    227     HTMLTextFormControlElement* element = static_cast<HTMLTextFormControlElement*>(node());
    228     setSelectionRange(min(end, element->selectionStart()), end);
    229 }
    230 
    231 void RenderTextControl::select()
    232 {
    233     setSelectionRange(0, text().length());
    234 }
    235 
    236 void RenderTextControl::setSelectionRange(int start, int end)
    237 {
     219bool RenderTextControl::hasVisibleTextArea() const
     220{
     221    return style()->visibility() == HIDDEN || !m_innerText || !m_innerText->renderer() || !m_innerText->renderBox()->height();
     222}
     223
     224void setSelectionRange(Node* node, int start, int end)
     225{
     226    ASSERT(node);
     227    node->document()->updateLayoutIgnorePendingStylesheets();
     228
     229    if (!node->renderer() || !node->renderer()->isTextControl())
     230        return;
     231
    238232    end = max(end, 0);
    239233    start = min(max(start, 0), end);
    240234
    241     ASSERT(!document()->childNeedsAndNotInStyleRecalc());
    242 
    243     if (style()->visibility() == HIDDEN || !m_innerText || !m_innerText->renderer() || !m_innerText->renderBox()->height()) {
    244         cacheSelection(start, end);
     235    RenderTextControl* control = toRenderTextControl(node->renderer());
     236
     237    if (control->hasVisibleTextArea()) {
     238        control->cacheSelection(start, end);
    245239        return;
    246240    }
    247     VisiblePosition startPosition = visiblePositionForIndex(start);
     241    VisiblePosition startPosition = control->visiblePositionForIndex(start);
    248242    VisiblePosition endPosition;
    249243    if (start == end)
    250244        endPosition = startPosition;
    251245    else
    252         endPosition = visiblePositionForIndex(end);
     246        endPosition = control->visiblePositionForIndex(end);
    253247
    254248    // startPosition and endPosition can be null position for example when
    255249    // "-webkit-user-select: none" style attribute is specified.
    256250    if (startPosition.isNotNull() && endPosition.isNotNull()) {
    257         ASSERT(startPosition.deepEquivalent().node()->shadowAncestorNode() == node() && endPosition.deepEquivalent().node()->shadowAncestorNode() == node());
     251        ASSERT(startPosition.deepEquivalent().node()->shadowAncestorNode() == node && endPosition.deepEquivalent().node()->shadowAncestorNode() == node);
    258252    }
    259253    VisibleSelection newSelection = VisibleSelection(startPosition, endPosition);
    260254
    261     if (Frame* frame = this->frame())
     255    if (Frame* frame = node->document()->frame())
    262256        frame->selection()->setSelection(newSelection);
    263257}
  • trunk/WebCore/rendering/RenderTextControl.h

    r69831 r70945  
    4343    int selectionStart();
    4444    int selectionEnd();
    45     void setSelectionStart(int);
    46     void setSelectionEnd(int);
    47     void select();
    48     void setSelectionRange(int start, int end);
    4945    PassRefPtr<Range> selection(int start, int end) const;
    5046
     
    110106    String finishText(Vector<UChar>&) const;
    111107
     108    bool hasVisibleTextArea() const;
     109    friend void setSelectionRange(Node*, int start, int end);
     110
    112111    bool m_wasChangedSinceLastChangeEvent;
    113112    bool m_lastChangeWasUserEdit;
    114113    RefPtr<TextControlInnerTextElement> m_innerText;
    115114};
     115
     116void setSelectionRange(Node*, int start, int end);
    116117
    117118inline RenderTextControl* toRenderTextControl(RenderObject* object)
  • trunk/WebKit/qt/Api/qwebpage.cpp

    r70931 r70945  
    10261026
    10271027    RenderObject* renderer = 0;
    1028     RenderTextControl* renderTextControl = 0;
    1029 
    10301028    if (frame->selection()->rootEditableElement())
    10311029        renderer = frame->selection()->rootEditableElement()->shadowAncestorNode()->renderer();
    1032 
    1033     if (renderer && renderer->isTextControl())
    1034         renderTextControl = toRenderTextControl(renderer);
    10351030
    10361031    Vector<CompositionUnderline> underlines;
     
    10601055            hasSelection = true;
    10611056            // A selection in the inputMethodEvent is always reflected in the visible text
    1062             if (renderTextControl) {
    1063                 renderTextControl->setSelectionStart(qMin(a.start, (a.start + a.length)));
    1064                 renderTextControl->setSelectionEnd(qMax(a.start, (a.start + a.length)));
    1065             }
     1057            if (renderer && renderer->node())
     1058                setSelectionRange(renderer->node(), qMin(a.start, (a.start + a.length)), qMax(a.start, (a.start + a.length)));
    10661059
    10671060            if (!ev->preeditString().isEmpty()) {
  • trunk/WebKit/qt/ChangeLog

    r70931 r70945  
     12010-10-29  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        Reviewed by Darin Adler.
     4
     5        Remove RenderTextControl::setSelectionRange
     6        https://bugs.webkit.org/show_bug.cgi?id=47870
     7
     8        Converted RenderTextControll::setSelectionRange to a global function.
     9
     10        * Api/qwebpage.cpp:
     11        (QWebPagePrivate::inputMethodEvent): Calls setSelectionRange.
     12
    1132010-10-29  Darin Adler  <darin@apple.com>
    214
Note: See TracChangeset for help on using the changeset viewer.