| Index: chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc
|
| diff --git a/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc b/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc
|
| index b27c51536c72207ba8caafcd591b45b81d9c4e0a..a5530f685d9a8b8aab8b0a09e9e4b261498fac42 100644
|
| --- a/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc
|
| +++ b/chrome/browser/ui/views/toolbar/toolbar_actions_bar_bubble_views.cc
|
| @@ -11,7 +11,7 @@
|
| #include "ui/views/controls/button/label_button.h"
|
| #include "ui/views/controls/label.h"
|
| #include "ui/views/controls/link.h"
|
| -#include "ui/views/layout/grid_layout.h"
|
| +#include "ui/views/layout/box_layout.h"
|
| #include "ui/views/layout/layout_constants.h"
|
|
|
| namespace {
|
| @@ -21,16 +21,11 @@ const int kListPadding = 10;
|
| ToolbarActionsBarBubbleViews::ToolbarActionsBarBubbleViews(
|
| views::View* anchor_view,
|
| std::unique_ptr<ToolbarActionsBarBubbleDelegate> delegate)
|
| - : views::BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT),
|
| - anchor_view_(anchor_view),
|
| + : views::BubbleDialogDelegateView(anchor_view,
|
| + views::BubbleBorder::TOP_RIGHT),
|
| delegate_(std::move(delegate)),
|
| - heading_label_(nullptr),
|
| - content_label_(nullptr),
|
| item_list_(nullptr),
|
| - learn_more_button_(nullptr),
|
| - dismiss_button_(nullptr),
|
| - action_button_(nullptr),
|
| - acknowledged_(false) {
|
| + learn_more_button_(nullptr) {
|
| set_close_on_deactivate(delegate_->ShouldCloseOnDeactivate());
|
| }
|
|
|
| @@ -41,129 +36,82 @@ void ToolbarActionsBarBubbleViews::Show() {
|
| GetWidget()->Show();
|
| }
|
|
|
| +views::View* ToolbarActionsBarBubbleViews::CreateExtraView() {
|
| + base::string16 text = delegate_->GetLearnMoreButtonText();
|
| + if (text.empty())
|
| + return nullptr;
|
| +
|
| + learn_more_button_ = new views::Link(text);
|
| + learn_more_button_->set_listener(this);
|
| + return learn_more_button_;
|
| +}
|
| +
|
| +base::string16 ToolbarActionsBarBubbleViews::GetWindowTitle() const {
|
| + return delegate_->GetHeadingText();
|
| +}
|
| +
|
| +bool ToolbarActionsBarBubbleViews::Cancel() {
|
| + delegate_->OnBubbleClosed(
|
| + ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION);
|
| + return true;
|
| +}
|
| +
|
| +bool ToolbarActionsBarBubbleViews::Accept() {
|
| + delegate_->OnBubbleClosed(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE);
|
| + return true;
|
| +}
|
| +
|
| +bool ToolbarActionsBarBubbleViews::Close() {
|
| + if (delegate_) {
|
| + delegate_->OnBubbleClosed(
|
| + ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_DEACTIVATION);
|
| + }
|
| + return true;
|
| +}
|
| +
|
| void ToolbarActionsBarBubbleViews::Init() {
|
| - views::GridLayout* layout = new views::GridLayout(this);
|
| - layout->SetInsets(views::kPanelVertMargin, views::kPanelHorizMargin,
|
| - views::kPanelVertMargin, views::kPanelHorizMargin);
|
| - SetLayoutManager(layout);
|
| -
|
| - enum ColumnSetId {
|
| - HEADER_AND_BODY_COLUMN_SET = 0,
|
| - LIST_COLUMN_SET,
|
| - BUTTON_STRIP_COLUMN_SET,
|
| - };
|
| -
|
| - views::ColumnSet* header_and_body_cs =
|
| - layout->AddColumnSet(HEADER_AND_BODY_COLUMN_SET);
|
| - header_and_body_cs->AddColumn(views::GridLayout::LEADING,
|
| - views::GridLayout::LEADING, 1,
|
| - views::GridLayout::USE_PREF, 0, 0);
|
| - views::ColumnSet* buttons_cs = layout->AddColumnSet(BUTTON_STRIP_COLUMN_SET);
|
| - buttons_cs->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER,
|
| - 0, views::GridLayout::USE_PREF, 0, 0);
|
| - buttons_cs->AddPaddingColumn(1, 0);
|
| - buttons_cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
|
| - 0, views::GridLayout::USE_PREF, 0, 0);
|
| - buttons_cs->AddPaddingColumn(0, views::kRelatedButtonHSpacing);
|
| - buttons_cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER,
|
| - 0, views::GridLayout::USE_PREF, 0, 0);
|
| -
|
| - // Add a header.
|
| - layout->StartRow(0, HEADER_AND_BODY_COLUMN_SET);
|
| - heading_label_ = new views::Label(delegate_->GetHeadingText());
|
| - heading_label_->SetFontList(
|
| - ui::ResourceBundle::GetSharedInstance().GetFontList(
|
| - ui::ResourceBundle::MediumFont));
|
| - heading_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - layout->AddView(heading_label_);
|
| - layout->AddPaddingRow(0, views::kLabelToControlVerticalSpacing);
|
| - int width = views::Widget::GetLocalizedContentsWidth(
|
| - IDS_EXTENSION_TOOLBAR_REDESIGN_NOTIFICATION_BUBBLE_WIDTH_CHARS);
|
| + SetLayoutManager(new views::BoxLayout(views::BoxLayout::kVertical, 0, 0,
|
| + views::kRelatedControlVerticalSpacing));
|
|
|
| // Add the content string.
|
| - layout->StartRow(0, HEADER_AND_BODY_COLUMN_SET);
|
| - content_label_ = new views::Label(
|
| - delegate_->GetBodyText(anchor_view_->id() == VIEW_ID_BROWSER_ACTION));
|
| - content_label_->SetMultiLine(true);
|
| - content_label_->SizeToFit(width);
|
| - content_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - layout->AddView(content_label_);
|
| + views::Label* content_label = new views::Label(
|
| + delegate_->GetBodyText(GetAnchorView()->id() == VIEW_ID_BROWSER_ACTION));
|
| + content_label->SetMultiLine(true);
|
| + int width = views::Widget::GetLocalizedContentsWidth(
|
| + IDS_EXTENSION_TOOLBAR_REDESIGN_NOTIFICATION_BUBBLE_WIDTH_CHARS);
|
| + content_label->SizeToFit(width);
|
| + content_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| + AddChildView(content_label);
|
|
|
| base::string16 item_list = delegate_->GetItemListText();
|
| if (!item_list.empty()) {
|
| - views::ColumnSet* list_cs = layout->AddColumnSet(LIST_COLUMN_SET);
|
| - list_cs->AddPaddingColumn(0, kListPadding);
|
| - list_cs->AddColumn(views::GridLayout::LEADING,
|
| - views::GridLayout::CENTER,
|
| - 0,
|
| - views::GridLayout::USE_PREF,
|
| - 0, 0);
|
| -
|
| - layout->StartRowWithPadding(0, LIST_COLUMN_SET, 0, 0);
|
| item_list_ = new views::Label(item_list);
|
| + item_list_->SetBorder(
|
| + views::Border::CreateEmptyBorder(0, kListPadding, 0, 0));
|
| item_list_->SetMultiLine(true);
|
| - item_list_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| item_list_->SizeToFit(width);
|
| - layout->AddView(item_list_);
|
| - }
|
| -
|
| - layout->AddPaddingRow(0, views::kLabelToControlVerticalSpacing);
|
| -
|
| - layout->StartRow(0, BUTTON_STRIP_COLUMN_SET);
|
| - base::string16 learn_more_text = delegate_->GetLearnMoreButtonText();
|
| - if (!learn_more_text.empty()) {
|
| - learn_more_button_ = new views::Link(learn_more_text);
|
| - learn_more_button_->set_listener(this);
|
| - layout->AddView(learn_more_button_);
|
| - } else {
|
| - layout->SkipColumns(1);
|
| - }
|
| -
|
| - base::string16 dismiss_button_text = delegate_->GetDismissButtonText();
|
| - if (!dismiss_button_text.empty()) {
|
| - dismiss_button_ = new views::LabelButton(this, dismiss_button_text);
|
| - dismiss_button_->SetStyle(views::Button::STYLE_BUTTON);
|
| - layout->AddView(dismiss_button_, 1, 1, views::GridLayout::TRAILING,
|
| - views::GridLayout::FILL);
|
| - } else {
|
| - layout->SkipColumns(1);
|
| + item_list_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| + AddChildView(item_list_);
|
| }
|
| -
|
| - action_button_ =
|
| - new views::LabelButton(this, delegate_->GetActionButtonText());
|
| - action_button_->SetStyle(views::Button::STYLE_BUTTON);
|
| - layout->AddView(action_button_, 1, 1, views::GridLayout::TRAILING,
|
| - views::GridLayout::FILL);
|
| }
|
|
|
| -void ToolbarActionsBarBubbleViews::OnWidgetDestroying(views::Widget* widget) {
|
| - BubbleDelegateView::OnWidgetDestroying(widget);
|
| - if (!acknowledged_) {
|
| - ToolbarActionsBarBubbleDelegate::CloseAction close_action =
|
| - close_reason() == CloseReason::DEACTIVATION
|
| - ? ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_DEACTIVATION
|
| - : ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION;
|
| - delegate_->OnBubbleClosed(close_action);
|
| - acknowledged_ = true;
|
| - }
|
| +int ToolbarActionsBarBubbleViews::GetDialogButtons() const {
|
| + int buttons = ui::DIALOG_BUTTON_OK;
|
| + if (!delegate_->GetDismissButtonText().empty())
|
| + buttons |= ui::DIALOG_BUTTON_CANCEL;
|
| + return buttons;
|
| }
|
|
|
| -void ToolbarActionsBarBubbleViews::ButtonPressed(views::Button* sender,
|
| - const ui::Event& event) {
|
| - if (sender == action_button_) {
|
| - delegate_->OnBubbleClosed(ToolbarActionsBarBubbleDelegate::CLOSE_EXECUTE);
|
| - } else {
|
| - DCHECK_EQ(dismiss_button_, sender);
|
| - delegate_->OnBubbleClosed(
|
| - ToolbarActionsBarBubbleDelegate::CLOSE_DISMISS_USER_ACTION);
|
| - }
|
| - acknowledged_ = true;
|
| - GetWidget()->Close();
|
| +base::string16 ToolbarActionsBarBubbleViews::GetDialogButtonLabel(
|
| + ui::DialogButton button) const {
|
| + return button == ui::DIALOG_BUTTON_OK ? delegate_->GetActionButtonText()
|
| + : delegate_->GetDismissButtonText();
|
| }
|
|
|
| void ToolbarActionsBarBubbleViews::LinkClicked(views::Link* link,
|
| int event_flags) {
|
| delegate_->OnBubbleClosed(ToolbarActionsBarBubbleDelegate::CLOSE_LEARN_MORE);
|
| - acknowledged_ = true;
|
| + // Reset delegate so we don't send extra OnBubbleClosed()s.
|
| + delegate_.reset();
|
| GetWidget()->Close();
|
| }
|
|
|