Changeset 70945 in webkit
- Timestamp:
- Oct 29, 2010 4:15:57 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r70935 r70945 1 2010-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 1 27 2010-10-29 Carlos Garcia Campos <cgarcia@igalia.com> 2 28 -
trunk/WebCore/accessibility/AccessibilityRenderObject.cpp
r70256 r70945 1990 1990 { 1991 1991 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); 1994 1993 return; 1995 1994 } 1996 1995 1997 1996 Document* document = m_renderer->document(); 1998 1997 if (!document) -
trunk/WebCore/dom/InputElement.cpp
r69437 r70945 108 108 return; 109 109 110 element->document()->updateLayoutIgnorePendingStylesheets(); 111 112 if (RenderTextControl* renderer = toRenderTextControl(element->renderer())) 113 renderer->setSelectionRange(start, end); 110 setSelectionRange(element, start, end); 114 111 } 115 112 -
trunk/WebCore/html/HTMLFormControlElement.cpp
r70027 r70945 47 47 #include "ScriptEventListener.h" 48 48 #include "ValidityState.h" 49 #include <limits> 49 50 #include <wtf/Vector.h> 50 51 … … 52 53 53 54 using namespace HTMLNames; 55 using namespace std; 54 56 55 57 HTMLFormControlElement::HTMLFormControlElement(const QualifiedName& tagName, Document* document, HTMLFormElement* form) … … 549 551 void HTMLTextFormControlElement::setSelectionStart(int start) 550 552 { 551 if (RenderTextControl* renderer = textRendererAfterUpdateLayout()) 552 renderer->setSelectionStart(start); 553 setSelectionRange(start, max(start, selectionEnd())); 553 554 } 554 555 555 556 void HTMLTextFormControlElement::setSelectionEnd(int end) 556 557 { 557 if (RenderTextControl* renderer = textRendererAfterUpdateLayout()) 558 renderer->setSelectionEnd(end); 558 setSelectionRange(min(end, selectionStart()), end); 559 559 } 560 560 561 561 void HTMLTextFormControlElement::select() 562 562 { 563 if (RenderTextControl* renderer = textRendererAfterUpdateLayout()) 564 renderer->select(); 563 setSelectionRange(0, numeric_limits<int>::max()); 565 564 } 566 565 567 566 void HTMLTextFormControlElement::setSelectionRange(int start, int end) 568 567 { 569 if (RenderTextControl* renderer = textRendererAfterUpdateLayout()) 570 renderer->setSelectionRange(start, end); 568 WebCore::setSelectionRange(this, start, end); 571 569 } 572 570 -
trunk/WebCore/rendering/RenderTextControl.cpp
r70072 r70945 217 217 } 218 218 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 { 219 bool RenderTextControl::hasVisibleTextArea() const 220 { 221 return style()->visibility() == HIDDEN || !m_innerText || !m_innerText->renderer() || !m_innerText->renderBox()->height(); 222 } 223 224 void 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 238 232 end = max(end, 0); 239 233 start = min(max(start, 0), end); 240 234 241 ASSERT(!document()->childNeedsAndNotInStyleRecalc());242 243 if ( style()->visibility() == HIDDEN || !m_innerText || !m_innerText->renderer() || !m_innerText->renderBox()->height()) {244 c acheSelection(start, end);235 RenderTextControl* control = toRenderTextControl(node->renderer()); 236 237 if (control->hasVisibleTextArea()) { 238 control->cacheSelection(start, end); 245 239 return; 246 240 } 247 VisiblePosition startPosition = visiblePositionForIndex(start);241 VisiblePosition startPosition = control->visiblePositionForIndex(start); 248 242 VisiblePosition endPosition; 249 243 if (start == end) 250 244 endPosition = startPosition; 251 245 else 252 endPosition = visiblePositionForIndex(end);246 endPosition = control->visiblePositionForIndex(end); 253 247 254 248 // startPosition and endPosition can be null position for example when 255 249 // "-webkit-user-select: none" style attribute is specified. 256 250 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); 258 252 } 259 253 VisibleSelection newSelection = VisibleSelection(startPosition, endPosition); 260 254 261 if (Frame* frame = this->frame())255 if (Frame* frame = node->document()->frame()) 262 256 frame->selection()->setSelection(newSelection); 263 257 } -
trunk/WebCore/rendering/RenderTextControl.h
r69831 r70945 43 43 int selectionStart(); 44 44 int selectionEnd(); 45 void setSelectionStart(int);46 void setSelectionEnd(int);47 void select();48 void setSelectionRange(int start, int end);49 45 PassRefPtr<Range> selection(int start, int end) const; 50 46 … … 110 106 String finishText(Vector<UChar>&) const; 111 107 108 bool hasVisibleTextArea() const; 109 friend void setSelectionRange(Node*, int start, int end); 110 112 111 bool m_wasChangedSinceLastChangeEvent; 113 112 bool m_lastChangeWasUserEdit; 114 113 RefPtr<TextControlInnerTextElement> m_innerText; 115 114 }; 115 116 void setSelectionRange(Node*, int start, int end); 116 117 117 118 inline RenderTextControl* toRenderTextControl(RenderObject* object) -
trunk/WebKit/qt/Api/qwebpage.cpp
r70931 r70945 1026 1026 1027 1027 RenderObject* renderer = 0; 1028 RenderTextControl* renderTextControl = 0;1029 1030 1028 if (frame->selection()->rootEditableElement()) 1031 1029 renderer = frame->selection()->rootEditableElement()->shadowAncestorNode()->renderer(); 1032 1033 if (renderer && renderer->isTextControl())1034 renderTextControl = toRenderTextControl(renderer);1035 1030 1036 1031 Vector<CompositionUnderline> underlines; … … 1060 1055 hasSelection = true; 1061 1056 // 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))); 1066 1059 1067 1060 if (!ev->preeditString().isEmpty()) { -
trunk/WebKit/qt/ChangeLog
r70931 r70945 1 2010-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 1 13 2010-10-29 Darin Adler <darin@apple.com> 2 14
Note: See TracChangeset
for help on using the changeset viewer.