Commit 50c0c3c4 authored by Xiaohui Chen's avatar Xiaohui Chen Committed by Commit Bot

assistant: handle back button

When caption bar shows back button, it should be equivalent to clicking
the back button.

Bug: b:113048612
Test: locally build and test
Change-Id: I7b388d784e24d43ffcf863103d7746998e573a4a
Reviewed-on: https://chromium-review.googlesource.com/1205673Reviewed-by: default avatarMuyuan Li <muyuanli@chromium.org>
Commit-Queue: Xiaohui Chen <xiaohuic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#588933}
parent 33fac969
......@@ -47,6 +47,20 @@ CaptionBar::CaptionBar() {
CaptionBar::~CaptionBar() = default;
bool CaptionBar::AcceleratorPressed(const ui::Accelerator& accelerator) {
switch (accelerator.key_code()) {
case ui::VKEY_BROWSER_BACK:
HandleButton(CaptionButtonId::kBack);
break;
default:
NOTREACHED();
return false;
}
// Don't let DialogClientView handle the accelerator.
return true;
}
gfx::Size CaptionBar::CalculatePreferredSize() const {
return gfx::Size(INT_MAX, GetHeightForWidth(INT_MAX));
}
......@@ -55,6 +69,17 @@ int CaptionBar::GetHeightForWidth(int width) const {
return kPreferredHeightDip;
}
void CaptionBar::ButtonPressed(views::Button* sender, const ui::Event& event) {
auto id = static_cast<CaptionButtonId>(sender->id());
HandleButton(id);
}
void CaptionBar::SetButtonVisible(CaptionButtonId id, bool visible) {
views::View* button = GetViewByID(static_cast<int>(id));
if (button)
button->SetVisible(visible);
}
void CaptionBar::InitLayout() {
views::BoxLayout* layout_manager =
SetLayoutManager(std::make_unique<views::BoxLayout>(
......@@ -87,10 +112,13 @@ void CaptionBar::InitLayout() {
CreateCaptionButton(kWindowControlCloseIcon, IDS_APP_ACCNAME_CLOSE, this);
close_button->set_id(static_cast<int>(CaptionButtonId::kClose));
AddChildView(close_button);
AddAccelerator(ui::Accelerator(ui::VKEY_BROWSER_BACK, ui::EF_NONE));
}
void CaptionBar::ButtonPressed(views::Button* sender, const ui::Event& event) {
CaptionButtonId id = static_cast<CaptionButtonId>(sender->id());
void CaptionBar::HandleButton(CaptionButtonId id) {
if (!GetViewByID(static_cast<int>(id))->visible())
return;
// If the delegate returns |true| it has handled the event and wishes to
// prevent default behavior from being performed.
......@@ -109,10 +137,4 @@ void CaptionBar::ButtonPressed(views::Button* sender, const ui::Event& event) {
}
}
void CaptionBar::SetButtonVisible(CaptionButtonId id, bool visible) {
views::View* button = GetViewByID(static_cast<int>(id));
if (button)
button->SetVisible(visible);
}
} // namespace ash
......@@ -39,6 +39,7 @@ class CaptionBar : public views::View, views::ButtonListener {
~CaptionBar() override;
// views::View:
bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
gfx::Size CalculatePreferredSize() const override;
int GetHeightForWidth(int width) const override;
......@@ -52,6 +53,7 @@ class CaptionBar : public views::View, views::ButtonListener {
private:
void InitLayout();
void HandleButton(CaptionButtonId id);
CaptionBarDelegate* delegate_ = nullptr;
......
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