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,
model_observer_.Add(model_);
set_margins(gfx::Insets(0));
AddAccelerator(ui::Accelerator(ui::VKEY_DOWN, ui::EF_NONE));
AddAccelerator(ui::Accelerator(ui::VKEY_UP, ui::EF_NONE));
EnableUpDownKeyboardAccelerators();
SetLayoutManager(
std::make_unique<views::BoxLayout>(views::BoxLayout::kVertical));
Repopulate();
......@@ -77,17 +77,6 @@ bool ExtensionsMenuView::ShouldShowCloseButton() const {
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 {
return ui::DIALOG_BUTTON_NONE;
}
......
......@@ -44,7 +44,6 @@ class ExtensionsMenuView : public views::ButtonListener,
// views::BubbleDialogDelegateView:
base::string16 GetWindowTitle() const override;
bool ShouldShowCloseButton() const override;
bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
int GetDialogButtons() const override;
bool ShouldSnapFrameWidth() const override;
......
......@@ -119,9 +119,7 @@ ProfileMenuViewBase::ProfileMenuViewBase(views::Button* anchor_button,
set_parent_window(parent_window);
}
// 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));
EnableUpDownKeyboardAccelerators();
bool dice_enabled = AccountConsistencyModeManager::IsDiceEnabledForProfile(
browser->profile());
......@@ -150,17 +148,6 @@ void ProfileMenuViewBase::OnNativeThemeChanged(
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 {
return ui::DIALOG_BUTTON_NONE;
}
......
......@@ -104,7 +104,6 @@ class ProfileMenuViewBase : public content::WebContentsDelegate,
// views::BubbleDialogDelegateView:
void WindowClosing() override;
void OnNativeThemeChanged(const ui::NativeTheme* native_theme) override;
bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
int GetDialogButtons() const override;
ax::mojom::Role GetAccessibleWindowRole() override;
......
......@@ -190,6 +190,17 @@ const char* BubbleDialogDelegateView::GetClassName() const {
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) {
// To prevent keyboard focus traversal issues, the anchor view's
// kAnchoredDialogKey property is cleared immediately upon Close(). This
......@@ -454,6 +465,12 @@ void BubbleDialogDelegateView::UpdateColorsFromTheme(
: 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,
bool visible) {
if (widget == GetWidget()) {
......
......@@ -11,6 +11,7 @@
#include "base/macros.h"
#include "build/build_config.h"
#include "ui/accessibility/ax_enums.mojom.h"
#include "ui/base/accelerators/accelerator.h"
#include "ui/views/bubble/bubble_border.h"
#include "ui/views/view_tracker.h"
#include "ui/views/widget/widget.h"
......@@ -25,6 +26,10 @@ namespace gfx {
class Rect;
}
namespace ui {
class Accelerator;
} // namespace ui
namespace views {
class BubbleFrameView;
......@@ -54,6 +59,7 @@ class VIEWS_EXPORT BubbleDialogDelegateView : public DialogDelegateView,
ClientView* CreateClientView(Widget* widget) override;
NonClientFrameView* CreateNonClientFrameView(Widget* widget) override;
const char* GetClassName() const override;
bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
// WidgetObserver:
void OnWidgetClosing(Widget* widget) override;
......@@ -164,6 +170,9 @@ class VIEWS_EXPORT BubbleDialogDelegateView : public DialogDelegateView,
BubbleFrameView* GetBubbleFrameView() const;
// Allows the up and down arrow keys to tab between items.
void EnableUpDownKeyboardAccelerators();
private:
friend class BubbleBorderDelegate;
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