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

Unified Diff: chrome/browser/chromeos/login/webui_login_view.cc

Issue 14827004: cros: Arrow key traversal in views. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/webui_login_view.cc
diff --git a/chrome/browser/chromeos/login/webui_login_view.cc b/chrome/browser/chromeos/login/webui_login_view.cc
index 1edeab6987ae416f21e284fcd78ba8cc99624e27..fc7ba2aa4c7494aaa40a4714248dfa0f1eb59488 100644
--- a/chrome/browser/chromeos/login/webui_login_view.cc
+++ b/chrome/browser/chromeos/login/webui_login_view.cc
@@ -108,6 +108,25 @@ void RightAlignedView::ChildPreferredSizeChanged(View* child) {
Layout();
}
+// A class to change arrow key traversal behavior when it's alive.
+class ScopedArrowKeyTraversal {
+ public:
+ explicit ScopedArrowKeyTraversal(bool new_arrow_key_tranversal_enabled)
+ : previous_arrow_key_traversal_enabled_(
+ views::FocusManager::arrow_key_traversal_enabled()) {
+ views::FocusManager::set_arrow_key_traversal_enabled(
+ new_arrow_key_tranversal_enabled);
+ }
+ ~ScopedArrowKeyTraversal() {
+ views::FocusManager::set_arrow_key_traversal_enabled(
+ previous_arrow_key_traversal_enabled_);
+ }
+
+ private:
+ const bool previous_arrow_key_traversal_enabled_;
+ DISALLOW_COPY_AND_ASSIGN(ScopedArrowKeyTraversal);
+};
+
} // namespace
namespace chromeos {
@@ -328,6 +347,10 @@ bool WebUILoginView::HandleContextMenu(
void WebUILoginView::HandleKeyboardEvent(content::WebContents* source,
const NativeWebKeyboardEvent& event) {
if (forward_keyboard_event_) {
+ // Disable arrow key traversal because arrow keys are handled via
+ // accelerator when this view has focus.
+ ScopedArrowKeyTraversal arrow_key_traversal(false);
+
unhandled_keyboard_event_handler_.HandleKeyboardEvent(event,
GetFocusManager());
}

Powered by Google App Engine
This is Rietveld 408576698