Change Button default focus behavior
Change Button, ImageButton, LabelButton, and ColorTrackingVectorImageButton to always focusable on non-Mac platform and accessible only for Mac. This will remove the need to override these buttons' focus behavior for normal use cases. This CL explicitly set some button's focus behavior when they don't want to platform default focus behavior. This CL also removes the DCHECKs added earlier to show the changed behavior. Bug: 1001103 Change-Id: I97ebea9c477e6155e40b09007254a51be9ee5125 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2499166 Reviewed-by: Xiyuan Xia <xiyuan@chromium.org> Reviewed-by: Trent Apted <tapted@chromium.org> Reviewed-by: Sean Topping <seantopping@chromium.org> Reviewed-by: Elly Fong-Jones <ellyjones@chromium.org> Commit-Queue: Wei Li <weili@chromium.org> Cr-Commit-Position: refs/heads/master@{#821275}
This commit is contained in:
apps/ui/views
ash
app_list
capture_mode
hud_display
login
shelf
system
accessibility
media
message_center
toast
unified
wm
chrome/browser
chromeos
ui
views
accessibility
autofill
payments
bookmarks
frame
location_bar
omnibox
tabs
chromecast/ui
ui/views
@ -64,6 +64,7 @@ void AppWindowFrameView::Init() {
|
||||
close_button->SetImage(
|
||||
views::Button::STATE_PRESSED,
|
||||
rb.GetNativeImageNamed(IDR_APP_WINDOW_CLOSE_P).ToImageSkia());
|
||||
close_button->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
close_button->SetAccessibleName(
|
||||
l10n_util::GetStringUTF16(IDS_APP_ACCNAME_CLOSE));
|
||||
close_button_ = AddChildView(std::move(close_button));
|
||||
@ -80,6 +81,7 @@ void AppWindowFrameView::Init() {
|
||||
maximize_button->SetImage(
|
||||
views::Button::STATE_DISABLED,
|
||||
rb.GetNativeImageNamed(IDR_APP_WINDOW_MAXIMIZE_D).ToImageSkia());
|
||||
maximize_button->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
maximize_button->SetAccessibleName(
|
||||
l10n_util::GetStringUTF16(IDS_APP_ACCNAME_MAXIMIZE));
|
||||
maximize_button_ = AddChildView(std::move(maximize_button));
|
||||
@ -92,6 +94,7 @@ void AppWindowFrameView::Init() {
|
||||
restore_button->SetImage(
|
||||
views::Button::STATE_PRESSED,
|
||||
rb.GetNativeImageNamed(IDR_APP_WINDOW_RESTORE_P).ToImageSkia());
|
||||
restore_button->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
restore_button->SetAccessibleName(
|
||||
l10n_util::GetStringUTF16(IDS_APP_ACCNAME_RESTORE));
|
||||
restore_button_ = AddChildView(std::move(restore_button));
|
||||
@ -104,6 +107,7 @@ void AppWindowFrameView::Init() {
|
||||
minimize_button->SetImage(
|
||||
views::Button::STATE_PRESSED,
|
||||
rb.GetNativeImageNamed(IDR_APP_WINDOW_MINIMIZE_P).ToImageSkia());
|
||||
minimize_button->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
minimize_button->SetAccessibleName(
|
||||
l10n_util::GetStringUTF16(IDS_APP_ACCNAME_MINIMIZE));
|
||||
minimize_button_ = AddChildView(std::move(minimize_button));
|
||||
|
@ -52,7 +52,6 @@ class PageSwitcherButton : public views::Button {
|
||||
public:
|
||||
explicit PageSwitcherButton(bool is_root_app_grid_page_switcher)
|
||||
: is_root_app_grid_page_switcher_(is_root_app_grid_page_switcher) {
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
SetInkDropMode(InkDropMode::ON);
|
||||
views::InstallFixedSizeCircleHighlightPathGenerator(
|
||||
|
@ -13,7 +13,6 @@
|
||||
namespace ash {
|
||||
|
||||
SearchResultBaseView::SearchResultBaseView() {
|
||||
DCHECK_EQ(FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
SetInstallFocusRingOnFocus(false);
|
||||
}
|
||||
|
@ -161,6 +161,7 @@ CaptureLabelView::CaptureLabelView(CaptureModeSession* capture_mode_session)
|
||||
color_provider->GetRippleAttributes(background_color);
|
||||
label_button_->SetInkDropVisibleOpacity(ripple_attributes.inkdrop_opacity);
|
||||
label_button_->SetInkDropBaseColor(ripple_attributes.base_color);
|
||||
label_button_->SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
label_ = AddChildView(std::make_unique<views::Label>(base::string16()));
|
||||
label_->SetPaintToLayer();
|
||||
|
@ -40,7 +40,6 @@ class MinMaxButton : public views::ImageButton {
|
||||
/*radius=*/0));
|
||||
SetProperty(kHUDClickHandler, HTCLIENT);
|
||||
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,6 @@ class SettingsButton : public views::ImageButton {
|
||||
SetBorder(views::CreateEmptyBorder(gfx::Insets(kSettingsIconBorder)));
|
||||
SetProperty(kHUDClickHandler, HTCLIENT);
|
||||
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,6 @@ HUDTabButton::HUDTabButton(Style style,
|
||||
kSettingsIconBorder, kTabOverlayWidth + kTabTitleBorder,
|
||||
kSettingsIconBorder, kTabOverlayWidth + kTabTitleBorder));
|
||||
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
|
@ -252,7 +252,6 @@ class LoginPasswordView::EasyUnlockIcon : public views::Button {
|
||||
public:
|
||||
EasyUnlockIcon(const gfx::Size& size, int corner_radius)
|
||||
: views::Button(PressedCallback()) {
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
SetPreferredSize(size);
|
||||
SetLayoutManager(std::make_unique<views::FillLayout>());
|
||||
|
@ -44,6 +44,7 @@ WindowPreview::WindowPreview(aura::Window* window,
|
||||
kPreviewContainerBgColor, kPreviewBorderRadius));
|
||||
title_ = new views::Label(window->GetTitle());
|
||||
close_button_ = new views::ImageButton(this);
|
||||
close_button_->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
AddChildView(preview_container_view_);
|
||||
AddChildView(preview_view_);
|
||||
|
@ -39,7 +39,6 @@ SwitchAccessMenuButton::SwitchAccessMenuButton(std::string action_name,
|
||||
image_view_(new views::ImageView()),
|
||||
label_(new views::Label(l10n_util::GetStringUTF16(label_text_id),
|
||||
views::style::CONTEXT_BUTTON)) {
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
std::unique_ptr<views::BoxLayout> layout = std::make_unique<views::BoxLayout>(
|
||||
views::BoxLayout::Orientation::kVertical,
|
||||
|
@ -147,7 +147,6 @@ UnifiedMediaControlsView::MediaActionButton::CreateInkDropRipple() const {
|
||||
UnifiedMediaControlsView::UnifiedMediaControlsView(
|
||||
UnifiedMediaControlsController* controller)
|
||||
: views::Button(this), controller_(controller) {
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
SetBackground(views::CreateRoundedRectBackground(
|
||||
|
@ -136,6 +136,7 @@ void NotificationSwipeControlView::ShowSettingsButton(bool show) {
|
||||
IDS_MESSAGE_NOTIFICATION_SETTINGS_BUTTON_ACCESSIBLE_NAME));
|
||||
settings_button_->SetBackground(
|
||||
views::CreateSolidBackground(SK_ColorTRANSPARENT));
|
||||
settings_button_->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
AddChildView(settings_button_);
|
||||
Layout();
|
||||
@ -168,6 +169,7 @@ void NotificationSwipeControlView::ShowSnoozeButton(bool show) {
|
||||
IDS_MESSAGE_NOTIFICATION_SETTINGS_BUTTON_ACCESSIBLE_NAME));
|
||||
snooze_button_->SetBackground(
|
||||
views::CreateSolidBackground(SK_ColorTRANSPARENT));
|
||||
snooze_button_->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
AddChildViewAt(snooze_button_, 0);
|
||||
Layout();
|
||||
|
@ -311,7 +311,6 @@ class NotifierViewCheckbox : public views::Checkbox {
|
||||
NotifierSettingsView::NotifierButton::NotifierButton(
|
||||
const NotifierMetadata& notifier)
|
||||
: views::Button(PressedCallback()), notifier_id_(notifier.notifier_id) {
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
auto icon_view = std::make_unique<views::ImageView>();
|
||||
|
@ -132,7 +132,6 @@ class ToastOverlayButton : public views::LabelButton {
|
||||
|
||||
views::InstallRoundRectHighlightPathGenerator(this, gfx::Insets(),
|
||||
kToastCornerRounding);
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
|
@ -48,7 +48,6 @@ class PageIndicatorView::PageIndicatorButton : public views::Button,
|
||||
public:
|
||||
PageIndicatorButton(UnifiedSystemTrayController* controller, int page)
|
||||
: views::Button(this), controller_(controller), page_number_(page) {
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
SetInkDropMode(InkDropMode::ON);
|
||||
views::InstallFixedSizeCircleHighlightPathGenerator(this, kInkDropRadius);
|
||||
|
@ -32,7 +32,6 @@ UnifiedManagedDeviceView::UnifiedManagedDeviceView(
|
||||
icon_(new views::ImageView),
|
||||
label_(new views::Label),
|
||||
controller_(controller) {
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>(
|
||||
|
@ -31,7 +31,6 @@ CloseDeskButton::CloseDeskButton(views::ButtonListener* listener)
|
||||
SetInkDropMode(InkDropMode::ON);
|
||||
SetHasInkDropActionOnClick(true);
|
||||
SetFocusPainter(nullptr);
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
SetEventTargeter(std::make_unique<views::ViewTargeter>(this));
|
||||
|
@ -218,7 +218,6 @@ DeskPreviewView::DeskPreviewView(DeskMiniView* mini_view)
|
||||
|
||||
SetFocusPainter(nullptr);
|
||||
SetInkDropMode(InkDropMode::OFF);
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
SetPaintToLayer(ui::LAYER_TEXTURED);
|
||||
|
@ -46,7 +46,6 @@ NewDeskButton::NewDeskButton(views::ButtonListener* listener)
|
||||
SetInkDropMode(InkDropMode::ON);
|
||||
SetHasInkDropActionOnClick(true);
|
||||
SetFocusPainter(nullptr);
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
auto border = std::make_unique<WmHighlightItemBorder>(kCornerRadius);
|
||||
|
@ -110,7 +110,6 @@ class OverviewCloseButton : public views::ImageButton {
|
||||
SetMinimumImageSize(gfx::Size(kHeaderHeightDp, kHeaderHeightDp));
|
||||
SetAccessibleName(l10n_util::GetStringUTF16(IDS_APP_ACCNAME_CLOSE));
|
||||
SetTooltipText(l10n_util::GetStringUTF16(IDS_APP_ACCNAME_CLOSE));
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
views::InstallFixedSizeCircleHighlightPathGenerator(
|
||||
|
@ -145,7 +145,6 @@ CandidateView::CandidateView(PressedCallback callback,
|
||||
infolist_icon_ = AddChildView(std::move(infolist_icon));
|
||||
}
|
||||
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
|
@ -103,7 +103,6 @@ SuggestionView::SuggestionView(PressedCallback callback)
|
||||
annotation_label_ = AddChildView(CreateAnnotationLabel());
|
||||
annotation_label_->SetVisible(false);
|
||||
|
||||
DCHECK_EQ(views::View::FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
|
@ -44,6 +44,7 @@ UndoWindow::UndoWindow(gfx::NativeView parent, AssistiveDelegate* delegate)
|
||||
views::LayoutProvider::Get()->GetDistanceMetric(
|
||||
views::DistanceMetric::DISTANCE_RELATED_BUTTON_HORIZONTAL));
|
||||
undo_button_->SetBackground(nullptr);
|
||||
undo_button_->SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
void UndoWindow::OnThemeChanged() {
|
||||
|
@ -174,6 +174,7 @@ void SimpleWebViewDialog::Init() {
|
||||
ui::EF_MIDDLE_MOUSE_BUTTON);
|
||||
back->SetImageHorizontalAlignment(views::ImageButton::ALIGN_RIGHT);
|
||||
back->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_BACK));
|
||||
back->SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
back->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_BACK));
|
||||
back->SetID(VIEW_ID_BACK_BUTTON);
|
||||
back_ = back.get();
|
||||
@ -184,6 +185,7 @@ void SimpleWebViewDialog::Init() {
|
||||
forward->SetTriggerableEventFlags(ui::EF_LEFT_MOUSE_BUTTON |
|
||||
ui::EF_MIDDLE_MOUSE_BUTTON);
|
||||
forward->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_FORWARD));
|
||||
forward->SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
forward->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_FORWARD));
|
||||
forward->SetID(VIEW_ID_FORWARD_BUTTON);
|
||||
forward_ = forward.get();
|
||||
|
@ -76,7 +76,6 @@ InvertBubbleView::InvertBubbleView(Browser* browser, views::View* anchor_view)
|
||||
kLearnMoreUrl),
|
||||
vector_icons::kHelpOutlineIcon);
|
||||
button->SetTooltipText(l10n_util::GetStringUTF16(IDS_LEARN_MORE));
|
||||
DCHECK_EQ(FocusBehavior::ACCESSIBLE_ONLY, button->GetFocusBehavior());
|
||||
button->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
SetExtraView(std::move(button));
|
||||
|
||||
|
@ -199,8 +199,6 @@ MigratableCardView::GetMigratableCardDescriptionView(
|
||||
kTrashCanIcon);
|
||||
delete_card_from_local_button->SetTooltipText(l10n_util::GetStringUTF16(
|
||||
IDS_AUTOFILL_LOCAL_CARD_MIGRATION_DIALOG_TRASH_CAN_BUTTON_TOOLTIP));
|
||||
DCHECK_EQ(FocusBehavior::ACCESSIBLE_ONLY,
|
||||
delete_card_from_local_button->GetFocusBehavior());
|
||||
delete_card_from_local_button->SetFocusBehavior(
|
||||
FocusBehavior::ACCESSIBLE_ONLY);
|
||||
delete_card_from_local_button_ =
|
||||
|
@ -160,7 +160,6 @@ class BookmarkButtonBase : public views::LabelButton {
|
||||
SetHasInkDropActionOnClick(true);
|
||||
SetInkDropVisibleOpacity(kToolbarInkDropVisibleOpacity);
|
||||
|
||||
DCHECK_EQ(FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
show_animation_ = std::make_unique<gfx::SlideAnimation>(this);
|
||||
|
@ -557,6 +557,7 @@ views::Button* OpaqueBrowserFrameView::CreateImageButton(int normal_image_id,
|
||||
tp->GetImageSkiaNamed(hot_image_id));
|
||||
button->SetImage(views::Button::STATE_PRESSED,
|
||||
tp->GetImageSkiaNamed(pushed_image_id));
|
||||
button->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
if (browser_view()->IsBrowserTypeNormal()) {
|
||||
// Get a custom processed version of the theme's background image so
|
||||
// that it appears to draw contiguously across all of the caption
|
||||
|
@ -42,6 +42,7 @@ std::unique_ptr<views::ImageButton> CreateScrollButton(
|
||||
views::ImageButton::VerticalAlignment::ALIGN_MIDDLE);
|
||||
scroll_button->SetHasInkDropActionOnClick(true);
|
||||
scroll_button->SetInkDropMode(views::Button::InkDropMode::ON);
|
||||
scroll_button->SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
return scroll_button;
|
||||
}
|
||||
|
||||
|
@ -207,6 +207,7 @@ CustomTabBarView::CustomTabBarView(BrowserView* browser_view,
|
||||
close_button_->SetBorder(views::CreateEmptyBorder(
|
||||
gfx::Insets(GetLayoutConstant(LOCATION_BAR_CHILD_INTERIOR_PADDING))));
|
||||
close_button_->SizeToPreferredSize();
|
||||
close_button_->SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
views::InstallCircleHighlightPathGenerator(close_button_);
|
||||
|
||||
location_icon_view_ =
|
||||
|
@ -143,7 +143,6 @@ IconLabelBubbleView::IconLabelBubbleView(const gfx::FontList& font_list,
|
||||
|
||||
views::HighlightPathGenerator::Install(
|
||||
this, std::make_unique<HighlightPathGenerator>());
|
||||
DCHECK_EQ(FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
UpdateBorder();
|
||||
|
@ -55,7 +55,6 @@ class OmniboxRemoveSuggestionButton : public views::ImageButton {
|
||||
: ImageButton(std::move(callback)) {
|
||||
views::ConfigureVectorImageButton(this);
|
||||
|
||||
DCHECK_EQ(FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
|
@ -60,8 +60,6 @@ class OmniboxRowView::HeaderView : public views::View {
|
||||
&HeaderView::HeaderToggleButtonPressed, base::Unretained(this))));
|
||||
mouse_enter_exit_handler_.ObserveMouseEnterExitOn(header_toggle_button_);
|
||||
views::InstallCircleHighlightPathGenerator(header_toggle_button_);
|
||||
DCHECK_EQ(FocusBehavior::ACCESSIBLE_ONLY,
|
||||
header_toggle_button_->GetFocusBehavior());
|
||||
header_toggle_button_->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
|
||||
header_toggle_button_focus_ring_ =
|
||||
|
@ -73,7 +73,6 @@ NewTabButton::NewTabButton(TabStrip* tab_strip, PressedCallback callback)
|
||||
views::HighlightPathGenerator::Install(
|
||||
this, std::make_unique<NewTabButton::HighlightPathGenerator>());
|
||||
|
||||
DCHECK_EQ(FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
|
@ -239,6 +239,7 @@ std::unique_ptr<views::ImageButton> MediaControlUi::CreateImageButton(
|
||||
button->SetImageHorizontalAlignment(views::ImageButton::ALIGN_CENTER);
|
||||
button->SetImageVerticalAlignment(views::ImageButton::ALIGN_MIDDLE);
|
||||
button->SetSize(gfx::Size(height, height));
|
||||
button->SetFocusBehavior(views::View::FocusBehavior::ACCESSIBLE_ONLY);
|
||||
SetButtonImage(button.get(), icon);
|
||||
|
||||
return button;
|
||||
|
@ -200,7 +200,7 @@ TEST_F(ViewAXPlatformNodeDelegateTest, LabelIsChildOfButton) {
|
||||
button_->SetInstallFocusRingOnFocus(false);
|
||||
|
||||
// |button_| is focusable, so |label_| (as its child) should be ignored.
|
||||
EXPECT_EQ(View::FocusBehavior::ACCESSIBLE_ONLY, button_->GetFocusBehavior());
|
||||
EXPECT_NE(View::FocusBehavior::NEVER, button_->GetFocusBehavior());
|
||||
EXPECT_EQ(1, button_accessibility()->GetChildCount());
|
||||
EXPECT_EQ(button_->GetNativeViewAccessible(),
|
||||
label_accessibility()->GetParent());
|
||||
|
@ -612,7 +612,7 @@ Button::Button(PressedCallback callback)
|
||||
: AnimationDelegateViews(this),
|
||||
callback_(std::move(callback)),
|
||||
ink_drop_base_color_(gfx::kPlaceholderColor) {
|
||||
SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
SetFocusBehavior(PlatformStyle::DefaultFocusBehavior());
|
||||
SetProperty(kIsButtonProperty, true);
|
||||
hover_animation_.SetSlideDuration(base::TimeDelta::FromMilliseconds(150));
|
||||
SetInstallFocusRingOnFocus(PlatformStyle::kPreferFocusRings);
|
||||
|
@ -42,9 +42,8 @@ class VIEWS_EXPORT ButtonListener {
|
||||
virtual ~ButtonListener() = default;
|
||||
};
|
||||
|
||||
// A View representing a button. A Button is not focusable by default and will
|
||||
// not be part of the focus chain, unless in accessibility mode (see
|
||||
// SetFocusForPlatform()).
|
||||
// A View representing a button. A Button is focusable by default and will
|
||||
// be part of the focus chain.
|
||||
class VIEWS_EXPORT Button : public InkDropHostView,
|
||||
public AnimationDelegateViews {
|
||||
public:
|
||||
@ -132,6 +131,8 @@ class VIEWS_EXPORT Button : public InkDropHostView,
|
||||
static ButtonState GetButtonStateFrom(ui::NativeTheme::State state);
|
||||
|
||||
// Make the button focusable as per the platform.
|
||||
// TODO(weili): remove this as it is no longer needed since the platform
|
||||
// focus behavior is the default.
|
||||
void SetFocusForPlatform();
|
||||
|
||||
void SetTooltipText(const base::string16& tooltip_text);
|
||||
|
@ -34,8 +34,6 @@ ImageButton::ImageButton(PressedCallback callback)
|
||||
// implementation is flipped horizontally so that the button's images are
|
||||
// mirrored when the UI directionality is right-to-left.
|
||||
SetFlipCanvasOnPaintForRTLUI(true);
|
||||
// Not focusable by default, only for accessibility.
|
||||
SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
ImageButton::ImageButton(ButtonListener* listener)
|
||||
@ -220,7 +218,6 @@ const gfx::Point ImageButton::ComputeImagePaintPosition(
|
||||
|
||||
ToggleImageButton::ToggleImageButton(PressedCallback callback)
|
||||
: ImageButton(std::move(callback)) {
|
||||
DCHECK_EQ(FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
|
@ -16,10 +16,6 @@
|
||||
|
||||
namespace views {
|
||||
|
||||
// An image button.
|
||||
// Note that this type of button is not focusable by default and will not be
|
||||
// part of the focus chain, unless in accessibility mode. Call
|
||||
// SetFocusForPlatform() to make it part of the focus chain.
|
||||
class VIEWS_EXPORT ImageButton : public Button {
|
||||
public:
|
||||
METADATA_HEADER(ImageButton);
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
#include "ui/base/layout.h"
|
||||
#include "ui/views/border.h"
|
||||
#include "ui/views/style/platform_style.h"
|
||||
#include "ui/views/test/views_test_base.h"
|
||||
|
||||
namespace {
|
||||
@ -42,7 +43,7 @@ using ImageButtonTest = ViewsTestBase;
|
||||
TEST_F(ImageButtonTest, FocusBehavior) {
|
||||
ImageButton button;
|
||||
|
||||
EXPECT_EQ(View::FocusBehavior::ACCESSIBLE_ONLY, button.GetFocusBehavior());
|
||||
EXPECT_EQ(PlatformStyle::DefaultFocusBehavior(), button.GetFocusBehavior());
|
||||
}
|
||||
|
||||
TEST_F(ImageButtonTest, Basics) {
|
||||
|
@ -40,8 +40,6 @@ LabelButton::LabelButton(PressedCallback callback,
|
||||
style::GetFont(button_context, style::STYLE_PRIMARY)),
|
||||
cached_default_button_font_list_(
|
||||
style::GetFont(button_context, style::STYLE_DIALOG_BUTTON_DEFAULT)) {
|
||||
// Not focusable by default, only for accessibility.
|
||||
SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
ink_drop_container_ = AddChildView(std::make_unique<InkDropContainerView>());
|
||||
ink_drop_container_->SetVisible(false);
|
||||
|
||||
|
@ -30,7 +30,7 @@ namespace views {
|
||||
class InkDropContainerView;
|
||||
class LabelButtonBorder;
|
||||
|
||||
// LabelButton is a button with text and an icon, it's not focusable by default.
|
||||
// LabelButton is a button with text and an icon.
|
||||
class VIEWS_EXPORT LabelButton : public Button, public NativeThemeDelegate {
|
||||
public:
|
||||
METADATA_HEADER(LabelButton);
|
||||
|
@ -142,9 +142,7 @@ class LabelButtonTest : public test::WidgetTest {
|
||||
};
|
||||
|
||||
TEST_F(LabelButtonTest, FocusBehavior) {
|
||||
LabelButton button;
|
||||
|
||||
EXPECT_EQ(View::FocusBehavior::ACCESSIBLE_ONLY, button.GetFocusBehavior());
|
||||
EXPECT_EQ(PlatformStyle::DefaultFocusBehavior(), button_->GetFocusBehavior());
|
||||
}
|
||||
|
||||
TEST_F(LabelButtonTest, Init) {
|
||||
|
@ -26,7 +26,6 @@ MenuButton::MenuButton(PressedCallback callback,
|
||||
menu_button_controller_ = menu_button_controller.get();
|
||||
SetButtonController(std::move(menu_button_controller));
|
||||
|
||||
DCHECK_EQ(FocusBehavior::ACCESSIBLE_ONLY, GetFocusBehavior());
|
||||
SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
|
||||
|
@ -73,6 +73,11 @@ gfx::Range PlatformStyle::RangeToDeleteBackwards(const base::string16& text,
|
||||
return gfx::Range(cursor_position, previous_grapheme_index);
|
||||
}
|
||||
|
||||
// static
|
||||
View::FocusBehavior PlatformStyle::DefaultFocusBehavior() {
|
||||
return View::FocusBehavior::ALWAYS;
|
||||
}
|
||||
|
||||
#endif // OS_APPLE
|
||||
|
||||
#if !BUILDFLAG(ENABLE_DESKTOP_AURA) || \
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
#include "base/macros.h"
|
||||
#include "ui/views/controls/button/button.h"
|
||||
#include "ui/views/view.h"
|
||||
#include "ui/views/views_export.h"
|
||||
|
||||
namespace gfx {
|
||||
@ -99,6 +100,9 @@ class VIEWS_EXPORT PlatformStyle {
|
||||
static gfx::Range RangeToDeleteBackwards(const base::string16& text,
|
||||
size_t cursor_position);
|
||||
|
||||
// Returns the default focus behavior based on the platform.
|
||||
static View::FocusBehavior DefaultFocusBehavior();
|
||||
|
||||
private:
|
||||
DISALLOW_IMPLICIT_CONSTRUCTORS(PlatformStyle);
|
||||
};
|
||||
|
@ -81,4 +81,10 @@ gfx::Range PlatformStyle::RangeToDeleteBackwards(const base::string16& text,
|
||||
return gfx::Range(range_to_delete.location + range_to_delete.length,
|
||||
range_to_delete.location);
|
||||
}
|
||||
|
||||
// static
|
||||
View::FocusBehavior PlatformStyle::DefaultFocusBehavior() {
|
||||
return View::FocusBehavior::ACCESSIBLE_ONLY;
|
||||
}
|
||||
|
||||
} // namespace views
|
||||
|
@ -87,6 +87,7 @@ CustomFrameView::CustomFrameView(Widget* frame)
|
||||
if (frame_->widget_delegate()->ShouldShowWindowIcon()) {
|
||||
window_icon_ =
|
||||
AddChildView(std::make_unique<ImageButton>(Button::PressedCallback()));
|
||||
window_icon_->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
}
|
||||
}
|
||||
|
||||
@ -541,6 +542,7 @@ ImageButton* CustomFrameView::InitWindowCaptionButton(
|
||||
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
||||
ImageButton* button =
|
||||
AddChildView(std::make_unique<ImageButton>(std::move(callback)));
|
||||
button->SetFocusBehavior(FocusBehavior::ACCESSIBLE_ONLY);
|
||||
button->SetAccessibleName(l10n_util::GetStringUTF16(accessibility_string_id));
|
||||
button->SetImage(Button::STATE_NORMAL,
|
||||
rb.GetImageNamed(normal_image_id).ToImageSkia());
|
||||
|
Reference in New Issue
Block a user