Commit c7747891 authored by Charlene Yan's avatar Charlene Yan Committed by Commit Bot

Consolidate up/down keyboard accelerator code.

Bug: 857118

Change-Id: Ibc6968701d86241a8b65785b5d4ee545198b77a3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1576265Reviewed-by: default avatarBret Sepulveda <bsep@chromium.org>
Reviewed-by: default avatarPeter Boström <pbos@chromium.org>
Commit-Queue: Charlene Yan <cyan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#653433}
parent e2f8462d
...@@ -51,8 +51,8 @@ ExtensionsMenuView::ExtensionsMenuView(views::View* anchor_view, ...@@ -51,8 +51,8 @@ ExtensionsMenuView::ExtensionsMenuView(views::View* anchor_view,
model_observer_.Add(model_); model_observer_.Add(model_);
set_margins(gfx::Insets(0)); set_margins(gfx::Insets(0));
AddAccelerator(ui::Accelerator(ui::VKEY_DOWN, ui::EF_NONE)); EnableUpDownKeyboardAccelerators();
AddAccelerator(ui::Accelerator(ui::VKEY_UP, ui::EF_NONE));
SetLayoutManager( SetLayoutManager(
std::make_unique<views::BoxLayout>(views::BoxLayout::kVertical)); std::make_unique<views::BoxLayout>(views::BoxLayout::kVertical));
Repopulate(); Repopulate();
...@@ -77,17 +77,6 @@ bool ExtensionsMenuView::ShouldShowCloseButton() const { ...@@ -77,17 +77,6 @@ bool ExtensionsMenuView::ShouldShowCloseButton() const {
return true; return true;
} }
bool ExtensionsMenuView::AcceleratorPressed(
const ui::Accelerator& accelerator) {
if (accelerator.key_code() != ui::VKEY_DOWN &&
accelerator.key_code() != ui::VKEY_UP)
return BubbleDialogDelegateView::AcceleratorPressed(accelerator);
// Move the focus up or down.
GetFocusManager()->AdvanceFocus(accelerator.key_code() != ui::VKEY_DOWN);
return true;
}
int ExtensionsMenuView::GetDialogButtons() const { int ExtensionsMenuView::GetDialogButtons() const {
return ui::DIALOG_BUTTON_NONE; return ui::DIALOG_BUTTON_NONE;
} }
......
...@@ -44,7 +44,6 @@ class ExtensionsMenuView : public views::ButtonListener, ...@@ -44,7 +44,6 @@ class ExtensionsMenuView : public views::ButtonListener,
// views::BubbleDialogDelegateView: // views::BubbleDialogDelegateView:
base::string16 GetWindowTitle() const override; base::string16 GetWindowTitle() const override;
bool ShouldShowCloseButton() const override; bool ShouldShowCloseButton() const override;
bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
int GetDialogButtons() const override; int GetDialogButtons() const override;
bool ShouldSnapFrameWidth() const override; bool ShouldSnapFrameWidth() const override;
......
...@@ -119,9 +119,7 @@ ProfileMenuViewBase::ProfileMenuViewBase(views::Button* anchor_button, ...@@ -119,9 +119,7 @@ ProfileMenuViewBase::ProfileMenuViewBase(views::Button* anchor_button,
set_parent_window(parent_window); set_parent_window(parent_window);
} }
// The arrow keys can be used to tab between items. EnableUpDownKeyboardAccelerators();
AddAccelerator(ui::Accelerator(ui::VKEY_DOWN, ui::EF_NONE));
AddAccelerator(ui::Accelerator(ui::VKEY_UP, ui::EF_NONE));
bool dice_enabled = AccountConsistencyModeManager::IsDiceEnabledForProfile( bool dice_enabled = AccountConsistencyModeManager::IsDiceEnabledForProfile(
browser->profile()); browser->profile());
...@@ -150,17 +148,6 @@ void ProfileMenuViewBase::OnNativeThemeChanged( ...@@ -150,17 +148,6 @@ void ProfileMenuViewBase::OnNativeThemeChanged(
ui::NativeTheme::kColorId_DialogBackground))); ui::NativeTheme::kColorId_DialogBackground)));
} }
bool ProfileMenuViewBase::AcceleratorPressed(
const ui::Accelerator& accelerator) {
if (accelerator.key_code() != ui::VKEY_DOWN &&
accelerator.key_code() != ui::VKEY_UP)
return BubbleDialogDelegateView::AcceleratorPressed(accelerator);
// Move the focus up or down.
GetFocusManager()->AdvanceFocus(accelerator.key_code() != ui::VKEY_DOWN);
return true;
}
int ProfileMenuViewBase::GetDialogButtons() const { int ProfileMenuViewBase::GetDialogButtons() const {
return ui::DIALOG_BUTTON_NONE; return ui::DIALOG_BUTTON_NONE;
} }
......
...@@ -104,7 +104,6 @@ class ProfileMenuViewBase : public content::WebContentsDelegate, ...@@ -104,7 +104,6 @@ class ProfileMenuViewBase : public content::WebContentsDelegate,
// views::BubbleDialogDelegateView: // views::BubbleDialogDelegateView:
void WindowClosing() override; void WindowClosing() override;
void OnNativeThemeChanged(const ui::NativeTheme* native_theme) override; void OnNativeThemeChanged(const ui::NativeTheme* native_theme) override;
bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
int GetDialogButtons() const override; int GetDialogButtons() const override;
ax::mojom::Role GetAccessibleWindowRole() override; ax::mojom::Role GetAccessibleWindowRole() override;
......
...@@ -190,6 +190,17 @@ const char* BubbleDialogDelegateView::GetClassName() const { ...@@ -190,6 +190,17 @@ const char* BubbleDialogDelegateView::GetClassName() const {
return kViewClassName; return kViewClassName;
} }
bool BubbleDialogDelegateView::AcceleratorPressed(
const ui::Accelerator& accelerator) {
if (accelerator.key_code() == ui::VKEY_DOWN ||
accelerator.key_code() == ui::VKEY_UP) {
// Move the focus up or down.
GetFocusManager()->AdvanceFocus(accelerator.key_code() != ui::VKEY_DOWN);
return true;
}
return DialogDelegateView::AcceleratorPressed(accelerator);
}
void BubbleDialogDelegateView::OnWidgetClosing(Widget* widget) { void BubbleDialogDelegateView::OnWidgetClosing(Widget* widget) {
// To prevent keyboard focus traversal issues, the anchor view's // To prevent keyboard focus traversal issues, the anchor view's
// kAnchoredDialogKey property is cleared immediately upon Close(). This // kAnchoredDialogKey property is cleared immediately upon Close(). This
...@@ -454,6 +465,12 @@ void BubbleDialogDelegateView::UpdateColorsFromTheme( ...@@ -454,6 +465,12 @@ void BubbleDialogDelegateView::UpdateColorsFromTheme(
: nullptr); : nullptr);
} }
void BubbleDialogDelegateView::EnableUpDownKeyboardAccelerators() {
// The arrow keys can be used to tab between items.
AddAccelerator(ui::Accelerator(ui::VKEY_DOWN, ui::EF_NONE));
AddAccelerator(ui::Accelerator(ui::VKEY_UP, ui::EF_NONE));
}
void BubbleDialogDelegateView::HandleVisibilityChanged(Widget* widget, void BubbleDialogDelegateView::HandleVisibilityChanged(Widget* widget,
bool visible) { bool visible) {
if (widget == GetWidget()) { if (widget == GetWidget()) {
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "ui/accessibility/ax_enums.mojom.h" #include "ui/accessibility/ax_enums.mojom.h"
#include "ui/base/accelerators/accelerator.h"
#include "ui/views/bubble/bubble_border.h" #include "ui/views/bubble/bubble_border.h"
#include "ui/views/view_tracker.h" #include "ui/views/view_tracker.h"
#include "ui/views/widget/widget.h" #include "ui/views/widget/widget.h"
...@@ -25,6 +26,10 @@ namespace gfx { ...@@ -25,6 +26,10 @@ namespace gfx {
class Rect; class Rect;
} }
namespace ui {
class Accelerator;
} // namespace ui
namespace views { namespace views {
class BubbleFrameView; class BubbleFrameView;
...@@ -54,6 +59,7 @@ class VIEWS_EXPORT BubbleDialogDelegateView : public DialogDelegateView, ...@@ -54,6 +59,7 @@ class VIEWS_EXPORT BubbleDialogDelegateView : public DialogDelegateView,
ClientView* CreateClientView(Widget* widget) override; ClientView* CreateClientView(Widget* widget) override;
NonClientFrameView* CreateNonClientFrameView(Widget* widget) override; NonClientFrameView* CreateNonClientFrameView(Widget* widget) override;
const char* GetClassName() const override; const char* GetClassName() const override;
bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
// WidgetObserver: // WidgetObserver:
void OnWidgetClosing(Widget* widget) override; void OnWidgetClosing(Widget* widget) override;
...@@ -164,6 +170,9 @@ class VIEWS_EXPORT BubbleDialogDelegateView : public DialogDelegateView, ...@@ -164,6 +170,9 @@ class VIEWS_EXPORT BubbleDialogDelegateView : public DialogDelegateView,
BubbleFrameView* GetBubbleFrameView() const; BubbleFrameView* GetBubbleFrameView() const;
// Allows the up and down arrow keys to tab between items.
void EnableUpDownKeyboardAccelerators();
private: private:
friend class BubbleBorderDelegate; friend class BubbleBorderDelegate;
friend class BubbleWindowTargeter; friend class BubbleWindowTargeter;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment