| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. |
| 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 #include "core/html/HTMLBRElement.h" | 41 #include "core/html/HTMLBRElement.h" |
| 42 #include "core/html/shadow/ShadowElementNames.h" | 42 #include "core/html/shadow/ShadowElementNames.h" |
| 43 #include "core/rendering/RenderBlock.h" | 43 #include "core/rendering/RenderBlock.h" |
| 44 #include "core/rendering/RenderTheme.h" | 44 #include "core/rendering/RenderTheme.h" |
| 45 #include "platform/heap/Handle.h" | 45 #include "platform/heap/Handle.h" |
| 46 #include "wtf/text/StringBuilder.h" | 46 #include "wtf/text/StringBuilder.h" |
| 47 | 47 |
| 48 namespace WebCore { | 48 namespace WebCore { |
| 49 | 49 |
| 50 using namespace HTMLNames; | 50 using namespace HTMLNames; |
| 51 using namespace std; | |
| 52 | 51 |
| 53 HTMLTextFormControlElement::HTMLTextFormControlElement(const QualifiedName& tagN
ame, Document& doc, HTMLFormElement* form) | 52 HTMLTextFormControlElement::HTMLTextFormControlElement(const QualifiedName& tagN
ame, Document& doc, HTMLFormElement* form) |
| 54 : HTMLFormControlElementWithState(tagName, doc, form) | 53 : HTMLFormControlElementWithState(tagName, doc, form) |
| 55 , m_lastChangeWasUserEdit(false) | 54 , m_lastChangeWasUserEdit(false) |
| 56 , m_cachedSelectionStart(0) | 55 , m_cachedSelectionStart(0) |
| 57 , m_cachedSelectionEnd(0) | 56 , m_cachedSelectionEnd(0) |
| 58 , m_cachedSelectionDirection(SelectionHasNoDirection) | 57 , m_cachedSelectionDirection(SelectionHasNoDirection) |
| 59 { | 58 { |
| 60 } | 59 } |
| 61 | 60 |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 if (!placeholderElement() || placeholderValueChanged) | 156 if (!placeholderElement() || placeholderValueChanged) |
| 158 updatePlaceholderText(); | 157 updatePlaceholderText(); |
| 159 HTMLElement* placeholder = placeholderElement(); | 158 HTMLElement* placeholder = placeholderElement(); |
| 160 if (!placeholder) | 159 if (!placeholder) |
| 161 return; | 160 return; |
| 162 placeholder->setInlineStyleProperty(CSSPropertyVisibility, placeholderShould
BeVisible() ? CSSValueVisible : CSSValueHidden); | 161 placeholder->setInlineStyleProperty(CSSPropertyVisibility, placeholderShould
BeVisible() ? CSSValueVisible : CSSValueHidden); |
| 163 } | 162 } |
| 164 | 163 |
| 165 void HTMLTextFormControlElement::setSelectionStart(int start) | 164 void HTMLTextFormControlElement::setSelectionStart(int start) |
| 166 { | 165 { |
| 167 setSelectionRange(start, max(start, selectionEnd()), selectionDirection()); | 166 setSelectionRange(start, std::max(start, selectionEnd()), selectionDirection
()); |
| 168 } | 167 } |
| 169 | 168 |
| 170 void HTMLTextFormControlElement::setSelectionEnd(int end) | 169 void HTMLTextFormControlElement::setSelectionEnd(int end) |
| 171 { | 170 { |
| 172 setSelectionRange(min(end, selectionStart()), end, selectionDirection()); | 171 setSelectionRange(std::min(end, selectionStart()), end, selectionDirection()
); |
| 173 } | 172 } |
| 174 | 173 |
| 175 void HTMLTextFormControlElement::setSelectionDirection(const String& direction) | 174 void HTMLTextFormControlElement::setSelectionDirection(const String& direction) |
| 176 { | 175 { |
| 177 setSelectionRange(selectionStart(), selectionEnd(), direction); | 176 setSelectionRange(selectionStart(), selectionEnd(), direction); |
| 178 } | 177 } |
| 179 | 178 |
| 180 void HTMLTextFormControlElement::select() | 179 void HTMLTextFormControlElement::select() |
| 181 { | 180 { |
| 182 setSelectionRange(0, numeric_limits<int>::max(), SelectionHasNoDirection); | 181 setSelectionRange(0, std::numeric_limits<int>::max(), SelectionHasNoDirectio
n); |
| 183 } | 182 } |
| 184 | 183 |
| 185 bool HTMLTextFormControlElement::shouldDispatchFormControlChangeEvent(String& ol
dValue, String& newValue) | 184 bool HTMLTextFormControlElement::shouldDispatchFormControlChangeEvent(String& ol
dValue, String& newValue) |
| 186 { | 185 { |
| 187 return !equalIgnoringNullity(oldValue, newValue); | 186 return !equalIgnoringNullity(oldValue, newValue); |
| 188 } | 187 } |
| 189 | 188 |
| 190 void HTMLTextFormControlElement::dispatchFormControlChangeEvent() | 189 void HTMLTextFormControlElement::dispatchFormControlChangeEvent() |
| 191 { | 190 { |
| 192 String newValue = value(); | 191 String newValue = value(); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 return setSelectionRange(start, end, direction); | 275 return setSelectionRange(start, end, direction); |
| 277 } | 276 } |
| 278 | 277 |
| 279 void HTMLTextFormControlElement::setSelectionRange(int start, int end, TextField
SelectionDirection direction) | 278 void HTMLTextFormControlElement::setSelectionRange(int start, int end, TextField
SelectionDirection direction) |
| 280 { | 279 { |
| 281 document().updateLayoutIgnorePendingStylesheets(); | 280 document().updateLayoutIgnorePendingStylesheets(); |
| 282 | 281 |
| 283 if (!renderer() || !renderer()->isTextControl()) | 282 if (!renderer() || !renderer()->isTextControl()) |
| 284 return; | 283 return; |
| 285 | 284 |
| 286 end = max(end, 0); | 285 end = std::max(end, 0); |
| 287 start = min(max(start, 0), end); | 286 start = std::min(std::max(start, 0), end); |
| 288 | 287 |
| 289 if (!hasVisibleTextArea(renderer(), innerTextElement())) { | 288 if (!hasVisibleTextArea(renderer(), innerTextElement())) { |
| 290 cacheSelection(start, end, direction); | 289 cacheSelection(start, end, direction); |
| 291 return; | 290 return; |
| 292 } | 291 } |
| 293 VisiblePosition startPosition = visiblePositionForIndex(start); | 292 VisiblePosition startPosition = visiblePositionForIndex(start); |
| 294 VisiblePosition endPosition; | 293 VisiblePosition endPosition; |
| 295 if (start == end) | 294 if (start == end) |
| 296 endPosition = startPosition; | 295 endPosition = startPosition; |
| 297 else | 296 else |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 654 | 653 |
| 655 return "ltr"; | 654 return "ltr"; |
| 656 } | 655 } |
| 657 | 656 |
| 658 HTMLElement* HTMLTextFormControlElement::innerTextElement() const | 657 HTMLElement* HTMLTextFormControlElement::innerTextElement() const |
| 659 { | 658 { |
| 660 return toHTMLElement(userAgentShadowRoot()->getElementById(ShadowElementName
s::innerEditor())); | 659 return toHTMLElement(userAgentShadowRoot()->getElementById(ShadowElementName
s::innerEditor())); |
| 661 } | 660 } |
| 662 | 661 |
| 663 } // namespace Webcore | 662 } // namespace Webcore |
| OLD | NEW |