| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). | 2 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). |
| 3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 4 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 4 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 5 * (C) 2001 Dirk Mueller (mueller@kde.org) | 5 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 6 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights
reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2009, 2010, 2011 Apple Inc. All rights
reserved. |
| 7 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 7 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 8 * Copyright (C) 2010 Google Inc. All rights reserved. | 8 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 9 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) | 9 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
bile.com/) |
| 10 * | 10 * |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 , m_size(0) | 77 , m_size(0) |
| 78 , m_lastOnChangeIndex(-1) | 78 , m_lastOnChangeIndex(-1) |
| 79 , m_activeSelectionAnchorIndex(-1) | 79 , m_activeSelectionAnchorIndex(-1) |
| 80 , m_activeSelectionEndIndex(-1) | 80 , m_activeSelectionEndIndex(-1) |
| 81 , m_isProcessingUserDrivenChange(false) | 81 , m_isProcessingUserDrivenChange(false) |
| 82 , m_multiple(false) | 82 , m_multiple(false) |
| 83 , m_activeSelectionState(false) | 83 , m_activeSelectionState(false) |
| 84 , m_shouldRecalcListItems(false) | 84 , m_shouldRecalcListItems(false) |
| 85 , m_suggestedIndex(-1) | 85 , m_suggestedIndex(-1) |
| 86 , m_isAutofilledByPreview(false) | 86 , m_isAutofilledByPreview(false) |
| 87 , m_scrollToSelectionLater(false) | |
| 88 { | 87 { |
| 89 } | 88 } |
| 90 | 89 |
| 91 PassRefPtrWillBeRawPtr<HTMLSelectElement> HTMLSelectElement::create(Document& do
cument) | 90 PassRefPtrWillBeRawPtr<HTMLSelectElement> HTMLSelectElement::create(Document& do
cument) |
| 92 { | 91 { |
| 93 RefPtrWillBeRawPtr<HTMLSelectElement> select = adoptRefWillBeNoop(new HTMLSe
lectElement(document, 0)); | 92 RefPtrWillBeRawPtr<HTMLSelectElement> select = adoptRefWillBeNoop(new HTMLSe
lectElement(document, 0)); |
| 94 select->ensureUserAgentShadowRoot(); | 93 select->ensureUserAgentShadowRoot(); |
| 95 return select.release(); | 94 return select.release(); |
| 96 } | 95 } |
| 97 | 96 |
| (...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 setNeedsValidityCheck(); | 411 setNeedsValidityCheck(); |
| 413 } | 412 } |
| 414 | 413 |
| 415 void HTMLSelectElement::childrenChanged(const ChildrenChange& change) | 414 void HTMLSelectElement::childrenChanged(const ChildrenChange& change) |
| 416 { | 415 { |
| 417 setRecalcListItems(); | 416 setRecalcListItems(); |
| 418 setNeedsValidityCheck(); | 417 setNeedsValidityCheck(); |
| 419 m_lastOnChangeSelection.clear(); | 418 m_lastOnChangeSelection.clear(); |
| 420 | 419 |
| 421 HTMLFormControlElementWithState::childrenChanged(change); | 420 HTMLFormControlElementWithState::childrenChanged(change); |
| 422 | |
| 423 if (m_scrollToSelectionLater) { | |
| 424 m_scrollToSelectionLater = false; | |
| 425 scrollToSelection(); | |
| 426 } | |
| 427 } | 421 } |
| 428 | 422 |
| 429 void HTMLSelectElement::optionElementChildrenChanged() | 423 void HTMLSelectElement::optionElementChildrenChanged() |
| 430 { | 424 { |
| 431 setRecalcListItems(); | 425 setRecalcListItems(); |
| 432 setNeedsValidityCheck(); | 426 setNeedsValidityCheck(); |
| 433 | 427 |
| 434 if (renderer()) { | 428 if (renderer()) { |
| 435 if (AXObjectCache* cache = renderer()->document().existingAXObjectCache(
)) | 429 if (AXObjectCache* cache = renderer()->document().existingAXObjectCache(
)) |
| 436 cache->childrenChanged(this); | 430 cache->childrenChanged(this); |
| (...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 921 else if (!usesMenuList() || multiple()) | 915 else if (!usesMenuList() || multiple()) |
| 922 selectOption(-1); | 916 selectOption(-1); |
| 923 else | 917 else |
| 924 selectOption(nextSelectableListIndex(-1)); | 918 selectOption(nextSelectableListIndex(-1)); |
| 925 } | 919 } |
| 926 | 920 |
| 927 void HTMLSelectElement::optionInserted(const HTMLOptionElement& option, bool opt
ionIsSelected) | 921 void HTMLSelectElement::optionInserted(const HTMLOptionElement& option, bool opt
ionIsSelected) |
| 928 { | 922 { |
| 929 ASSERT(option.ownerSelectElement() == this); | 923 ASSERT(option.ownerSelectElement() == this); |
| 930 if (optionIsSelected) | 924 if (optionIsSelected) |
| 931 selectOption(option.index(), DelayScrollToSelection); | 925 selectOption(option.index()); |
| 932 } | 926 } |
| 933 | 927 |
| 934 void HTMLSelectElement::optionRemoved(const HTMLOptionElement& option) | 928 void HTMLSelectElement::optionRemoved(const HTMLOptionElement& option) |
| 935 { | 929 { |
| 936 if (m_activeSelectionAnchorIndex < 0 && m_activeSelectionEndIndex < 0) | 930 if (m_activeSelectionAnchorIndex < 0 && m_activeSelectionEndIndex < 0) |
| 937 return; | 931 return; |
| 938 int listIndex = optionToListIndex(option.index()); | 932 int listIndex = optionToListIndex(option.index()); |
| 939 if (listIndex <= m_activeSelectionAnchorIndex) | 933 if (listIndex <= m_activeSelectionAnchorIndex) |
| 940 m_activeSelectionAnchorIndex--; | 934 m_activeSelectionAnchorIndex--; |
| 941 if (listIndex <= m_activeSelectionEndIndex) | 935 if (listIndex <= m_activeSelectionEndIndex) |
| (...skipping 24 matching lines...) Expand all Loading... |
| 966 } | 960 } |
| 967 } | 961 } |
| 968 | 962 |
| 969 if (shouldDeselect) | 963 if (shouldDeselect) |
| 970 deselectItemsWithoutValidation(element); | 964 deselectItemsWithoutValidation(element); |
| 971 | 965 |
| 972 // For the menu list case, this is what makes the selected element appear. | 966 // For the menu list case, this is what makes the selected element appear. |
| 973 if (RenderObject* renderer = this->renderer()) | 967 if (RenderObject* renderer = this->renderer()) |
| 974 renderer->updateFromElement(); | 968 renderer->updateFromElement(); |
| 975 | 969 |
| 976 if (flags & DelayScrollToSelection) | 970 scrollToSelection(); |
| 977 m_scrollToSelectionLater = true; | |
| 978 else | |
| 979 scrollToSelection(); | |
| 980 | |
| 981 setNeedsValidityCheck(); | 971 setNeedsValidityCheck(); |
| 982 | 972 |
| 983 if (usesMenuList()) { | 973 if (usesMenuList()) { |
| 984 m_isProcessingUserDrivenChange = flags & UserDriven; | 974 m_isProcessingUserDrivenChange = flags & UserDriven; |
| 985 if (flags & DispatchInputAndChangeEvent) | 975 if (flags & DispatchInputAndChangeEvent) |
| 986 dispatchInputAndChangeEventForMenuList(); | 976 dispatchInputAndChangeEventForMenuList(); |
| 987 if (RenderObject* renderer = this->renderer()) { | 977 if (RenderObject* renderer = this->renderer()) { |
| 988 if (usesMenuList()) { | 978 if (usesMenuList()) { |
| 989 toRenderMenuList(renderer)->didSetSelectedIndex(listIndex); | 979 toRenderMenuList(renderer)->didSetSelectedIndex(listIndex); |
| 990 } else if (renderer->isListBox()) { | 980 } else if (renderer->isListBox()) { |
| (...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1785 int focusedIndex = activeSelectionEndListIndex(); | 1775 int focusedIndex = activeSelectionEndListIndex(); |
| 1786 if (focusedIndex < 0) | 1776 if (focusedIndex < 0) |
| 1787 focusedIndex = firstSelectableListIndex(); | 1777 focusedIndex = firstSelectableListIndex(); |
| 1788 if (focusedIndex < 0) | 1778 if (focusedIndex < 0) |
| 1789 return nullptr; | 1779 return nullptr; |
| 1790 HTMLElement* focused = listItems()[focusedIndex]; | 1780 HTMLElement* focused = listItems()[focusedIndex]; |
| 1791 return isHTMLOptionElement(focused) ? toHTMLOptionElement(focused) : nullptr
; | 1781 return isHTMLOptionElement(focused) ? toHTMLOptionElement(focused) : nullptr
; |
| 1792 } | 1782 } |
| 1793 | 1783 |
| 1794 } // namespace | 1784 } // namespace |
| OLD | NEW |