Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: Source/core/html/HTMLSelectElement.cpp

Issue 16194013: Mouse press should focus on any types of form controls. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 HTMLFormControlElementWithState::parseAttribute(name, value); 315 HTMLFormControlElementWithState::parseAttribute(name, value);
316 } 316 }
317 317
318 bool HTMLSelectElement::isKeyboardFocusable(KeyboardEvent* event) const 318 bool HTMLSelectElement::isKeyboardFocusable(KeyboardEvent* event) const
319 { 319 {
320 if (renderer()) 320 if (renderer())
321 return isFocusable(); 321 return isFocusable();
322 return HTMLFormControlElementWithState::isKeyboardFocusable(event); 322 return HTMLFormControlElementWithState::isKeyboardFocusable(event);
323 } 323 }
324 324
325 bool HTMLSelectElement::isMouseFocusable() const 325 bool HTMLSelectElement::shouldShowFocusRingOnMouseFocus() const
326 { 326 {
327 if (renderer()) 327 return true;
328 return isFocusable();
329 return HTMLFormControlElementWithState::isMouseFocusable();
330 } 328 }
331 329
332 bool HTMLSelectElement::canSelectAll() const 330 bool HTMLSelectElement::canSelectAll() const
333 { 331 {
334 return !usesMenuList(); 332 return !usesMenuList();
335 } 333 }
336 334
337 RenderObject* HTMLSelectElement::createRenderer(RenderArena* arena, RenderStyle* ) 335 RenderObject* HTMLSelectElement::createRenderer(RenderArena* arena, RenderStyle* )
338 { 336 {
339 if (usesMenuList()) 337 if (usesMenuList())
(...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after
1100 #endif 1098 #endif
1101 1099
1102 void HTMLSelectElement::menuListDefaultEventHandler(Event* event) 1100 void HTMLSelectElement::menuListDefaultEventHandler(Event* event)
1103 { 1101 {
1104 const Page* page = document()->page(); 1102 const Page* page = document()->page();
1105 RefPtr<RenderTheme> renderTheme = page ? page->theme() : RenderTheme::defaul tTheme(); 1103 RefPtr<RenderTheme> renderTheme = page ? page->theme() : RenderTheme::defaul tTheme();
1106 1104
1107 if (event->type() == eventNames().keydownEvent) { 1105 if (event->type() == eventNames().keydownEvent) {
1108 if (!renderer() || !event->isKeyboardEvent()) 1106 if (!renderer() || !event->isKeyboardEvent())
1109 return; 1107 return;
1108 willHandleKeyDownEvent();
1110 1109
1111 if (platformHandleKeydownEvent(static_cast<KeyboardEvent*>(event))) 1110 if (platformHandleKeydownEvent(static_cast<KeyboardEvent*>(event)))
1112 return; 1111 return;
1113 1112
1114 // When using spatial navigation, we want to be able to navigate away 1113 // When using spatial navigation, we want to be able to navigate away
1115 // from the select element when the user hits any of the arrow keys, 1114 // from the select element when the user hits any of the arrow keys,
1116 // instead of changing the selection. 1115 // instead of changing the selection.
1117 if (isSpatialNavigationEnabled(document()->frame())) { 1116 if (isSpatialNavigationEnabled(document()->frame())) {
1118 if (!m_activeSelectionState) 1117 if (!m_activeSelectionState)
1119 return; 1118 return;
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 // We didn't start this click/drag on any options. 1340 // We didn't start this click/drag on any options.
1342 if (m_lastOnChangeSelection.isEmpty()) 1341 if (m_lastOnChangeSelection.isEmpty())
1343 return; 1342 return;
1344 // This makes sure we fire dispatchFormControlChangeEvent for a single 1343 // This makes sure we fire dispatchFormControlChangeEvent for a single
1345 // click. For drag selection, onChange will fire when the autoscroll 1344 // click. For drag selection, onChange will fire when the autoscroll
1346 // timer stops. 1345 // timer stops.
1347 listBoxOnChange(); 1346 listBoxOnChange();
1348 } else if (event->type() == eventNames().keydownEvent) { 1347 } else if (event->type() == eventNames().keydownEvent) {
1349 if (!event->isKeyboardEvent()) 1348 if (!event->isKeyboardEvent())
1350 return; 1349 return;
1350 willHandleKeyDownEvent();
1351 const String& keyIdentifier = static_cast<KeyboardEvent*>(event)->keyIde ntifier(); 1351 const String& keyIdentifier = static_cast<KeyboardEvent*>(event)->keyIde ntifier();
1352 1352
1353 bool handled = false; 1353 bool handled = false;
1354 int endIndex = 0; 1354 int endIndex = 0;
1355 if (m_activeSelectionEndIndex < 0) { 1355 if (m_activeSelectionEndIndex < 0) {
1356 // Initialize the end index 1356 // Initialize the end index
1357 if (keyIdentifier == "Down" || keyIdentifier == "PageDown") { 1357 if (keyIdentifier == "Down" || keyIdentifier == "PageDown") {
1358 int startIndex = lastSelectedListIndex(); 1358 int startIndex = lastSelectedListIndex();
1359 handled = true; 1359 handled = true;
1360 if (keyIdentifier == "Down") 1360 if (keyIdentifier == "Down")
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
1577 { 1577 {
1578 if (!value) { 1578 if (!value) {
1579 ec = TYPE_MISMATCH_ERR; 1579 ec = TYPE_MISMATCH_ERR;
1580 return false; 1580 return false;
1581 } 1581 }
1582 setOption(index, value.get(), ec); 1582 setOption(index, value.get(), ec);
1583 return true; 1583 return true;
1584 } 1584 }
1585 1585
1586 } // namespace 1586 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698