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 1186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1197 // the event as handled. | 1197 // the event as handled. |
1198 if (!renderer() || !renderer()->isMenuList() || isDisabledFormControl()) | 1198 if (!renderer() || !renderer()->isMenuList() || isDisabledFormControl()) |
1199 return; | 1199 return; |
1200 // Save the selection so it can be compared to the new selection | 1200 // Save the selection so it can be compared to the new selection |
1201 // when dispatching change events during selectOption, which | 1201 // when dispatching change events during selectOption, which |
1202 // gets called from RenderMenuList::valueChanged, which gets called | 1202 // gets called from RenderMenuList::valueChanged, which gets called |
1203 // after the user makes a selection from the menu. | 1203 // after the user makes a selection from the menu. |
1204 saveLastSelection(); | 1204 saveLastSelection(); |
1205 if (RenderMenuList* menuList = toRenderMenuList(renderer())) | 1205 if (RenderMenuList* menuList = toRenderMenuList(renderer())) |
1206 menuList->showPopup(); | 1206 menuList->showPopup(); |
1207 int index = selectedIndex(); | |
1208 ASSERT(index >= 0); | |
1209 ASSERT_WITH_SECURITY_IMPLICATION(index < static_cast<int>(listItems().size()
)); | |
1210 setSelectedIndex(index); | |
1211 event->setDefaultHandled(); | 1207 event->setDefaultHandled(); |
1212 return; | 1208 return; |
1213 } | 1209 } |
1214 | 1210 |
1215 bool HTMLSelectElement::shouldOpenPopupForKeyDownEvent(KeyboardEvent* keyEvent) | 1211 bool HTMLSelectElement::shouldOpenPopupForKeyDownEvent(KeyboardEvent* keyEvent) |
1216 { | 1212 { |
1217 const String& keyIdentifier = keyEvent->keyIdentifier(); | 1213 const String& keyIdentifier = keyEvent->keyIdentifier(); |
1218 RenderTheme& renderTheme = RenderTheme::theme(); | 1214 RenderTheme& renderTheme = RenderTheme::theme(); |
1219 | 1215 |
1220 if (isSpatialNavigationEnabled(document().frame())) | 1216 if (isSpatialNavigationEnabled(document().frame())) |
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1755 { | 1751 { |
1756 #if ENABLE(OILPAN) | 1752 #if ENABLE(OILPAN) |
1757 visitor->trace(m_listItems); | 1753 visitor->trace(m_listItems); |
1758 #endif | 1754 #endif |
1759 HTMLFormControlElementWithState::trace(visitor); | 1755 HTMLFormControlElementWithState::trace(visitor); |
1760 } | 1756 } |
1761 | 1757 |
1762 void HTMLSelectElement::didAddUserAgentShadowRoot(ShadowRoot& root) | 1758 void HTMLSelectElement::didAddUserAgentShadowRoot(ShadowRoot& root) |
1763 { | 1759 { |
1764 RefPtrWillBeRawPtr<HTMLContentElement> content = HTMLContentElement::create(
document()); | 1760 RefPtrWillBeRawPtr<HTMLContentElement> content = HTMLContentElement::create(
document()); |
1765 content->setAttribute(selectAttr, "option,optgroup"); | 1761 content->setAttribute(selectAttr, "option,optgroup,hr"); |
1766 root.appendChild(content); | 1762 root.appendChild(content); |
1767 } | 1763 } |
1768 | 1764 |
1769 HTMLOptionElement* HTMLSelectElement::spatialNavigationFocusedOption() | 1765 HTMLOptionElement* HTMLSelectElement::spatialNavigationFocusedOption() |
1770 { | 1766 { |
1771 if (!isSpatialNavigationEnabled(document().frame())) | 1767 if (!isSpatialNavigationEnabled(document().frame())) |
1772 return nullptr; | 1768 return nullptr; |
1773 int focusedIndex = activeSelectionEndListIndex(); | 1769 int focusedIndex = activeSelectionEndListIndex(); |
1774 if (focusedIndex < 0) | 1770 if (focusedIndex < 0) |
1775 focusedIndex = firstSelectableListIndex(); | 1771 focusedIndex = firstSelectableListIndex(); |
1776 if (focusedIndex < 0) | 1772 if (focusedIndex < 0) |
1777 return nullptr; | 1773 return nullptr; |
1778 HTMLElement* focused = listItems()[focusedIndex]; | 1774 HTMLElement* focused = listItems()[focusedIndex]; |
1779 return isHTMLOptionElement(focused) ? toHTMLOptionElement(focused) : nullptr
; | 1775 return isHTMLOptionElement(focused) ? toHTMLOptionElement(focused) : nullptr
; |
1780 } | 1776 } |
1781 | 1777 |
1782 } // namespace | 1778 } // namespace |
OLD | NEW |