Commit 116bfcd3 authored by Allen Bauer's avatar Allen Bauer Committed by Commit Bot

Use the InkDrop for the extension toolbar icons in the app menu.

Bug: 862097
Change-Id: I961db6594f82812270fbd8d3114e9aa687abb43e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1762689
Commit-Queue: Allen Bauer <kylixrd@chromium.org>
Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#689117}
parent d322b1a9
......@@ -1085,14 +1085,8 @@ void AppMenu::PopulateMenu(MenuItemView* parent, MenuModel* model) {
switch (model->GetCommandIdAt(i)) {
case IDC_EXTENSIONS_OVERFLOW_MENU: {
auto extension_toolbar =
std::make_unique<ExtensionToolbarMenuView>(browser_, item);
for (View* action_view : extension_toolbar->contents()->children()) {
action_view->SetBackground(std::make_unique<InMenuButtonBackground>(
InMenuButtonBackground::ROUNDED_BUTTON));
}
extension_toolbar_ = extension_toolbar.get();
item->AddChildView(extension_toolbar.release());
extension_toolbar_ = item->AddChildView(
std::make_unique<ExtensionToolbarMenuView>(browser_, item));
break;
}
......@@ -1102,7 +1096,8 @@ void AppMenu::PopulateMenu(MenuItemView* parent, MenuModel* model) {
DCHECK_EQ(IDC_COPY, submodel->GetCommandIdAt(1));
DCHECK_EQ(IDC_PASTE, submodel->GetCommandIdAt(2));
item->SetTitle(l10n_util::GetStringUTF16(IDS_EDIT2));
item->AddChildView(new CutCopyPasteView(this, submodel, 0, 1, 2));
item->AddChildView(
std::make_unique<CutCopyPasteView>(this, submodel, 0, 1, 2));
break;
}
......@@ -1112,7 +1107,7 @@ void AppMenu::PopulateMenu(MenuItemView* parent, MenuModel* model) {
DCHECK_EQ(IDC_ZOOM_PLUS, submodel->GetCommandIdAt(1));
DCHECK_EQ(IDC_FULLSCREEN, submodel->GetCommandIdAt(2));
item->SetTitle(l10n_util::GetStringUTF16(IDS_ZOOM_MENU2));
item->AddChildView(new ZoomView(this, submodel, 0, 1, 2));
item->AddChildView(std::make_unique<ZoomView>(this, submodel, 0, 1, 2));
break;
}
......
......@@ -133,20 +133,9 @@ bool ToolbarActionView::IsTriggerableEvent(const ui::Event& event) {
}
SkColor ToolbarActionView::GetInkDropBaseColor() const {
if (delegate_->ShownInsideMenu()) {
return GetNativeTheme()->GetSystemColor(
ui::NativeTheme::kColorId_FocusedMenuItemBackgroundColor);
}
return GetToolbarInkDropBaseColor(this);
}
std::unique_ptr<views::InkDrop> ToolbarActionView::CreateInkDrop() {
auto ink_drop = MenuButton::CreateInkDrop();
ink_drop->SetShowHighlightOnHover(!delegate_->ShownInsideMenu());
return ink_drop;
}
std::unique_ptr<views::InkDropHighlight>
ToolbarActionView::CreateInkDropHighlight() const {
return CreateToolbarInkDropHighlight(this);
......@@ -283,6 +272,23 @@ void ToolbarActionView::ViewHierarchyChanged(
MenuButton::ViewHierarchyChanged(details);
}
void ToolbarActionView::StateChanged(views::Button::ButtonState old_state) {
MenuButton::StateChanged(old_state);
if (delegate_->ShownInsideMenu()) {
// The following code is necessary to ensure the item is properly
// highlighted when using keyboard navigation to select items in the menu.
// InkDrops will listen for hover events and highlight accordingly. However,
// menu items don't actually get focus so using SetShowHighlightOnFocus()
// won't work. The button state is set to STATE_HOVERED, so this code will
// ensure the InkDrop actually highlights.
views::InkDropState target_state = state() == views::Button::STATE_HOVERED
? views::InkDropState::ACTIVATED
: views::InkDropState::HIDDEN;
if (GetInkDrop()->GetTargetInkDropState() != target_state)
AnimateInkDrop(target_state, nullptr);
}
}
views::View* ToolbarActionView::GetAsView() {
return this;
}
......
......@@ -68,7 +68,6 @@ class ToolbarActionView : public views::MenuButton,
const override;
bool IsTriggerableEvent(const ui::Event& event) override;
SkColor GetInkDropBaseColor() const override;
std::unique_ptr<views::InkDrop> CreateInkDrop() override;
std::unique_ptr<views::InkDropHighlight> CreateInkDropHighlight()
const override;
bool OnKeyPressed(const ui::KeyEvent& event) override;
......@@ -109,6 +108,7 @@ class ToolbarActionView : public views::MenuButton,
void OnDragDone() override;
void ViewHierarchyChanged(
const views::ViewHierarchyChangedDetails& details) override;
void StateChanged(views::Button::ButtonState old_state) override;
// ToolbarActionViewDelegateViews:
views::View* GetAsView() override;
......
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