Index: chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc |
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc |
index 36ca9815fd540bd384251c055fa70b81663ba96f..a7dbcb94ef37b1f75736afaf4322e1374364fe7a 100644 |
--- a/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc |
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc |
@@ -4,14 +4,9 @@ |
#include "chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h" |
-#include <utility> |
- |
-#include "base/macros.h" |
#include "base/metrics/user_metrics.h" |
-#include "base/strings/string16.h" |
#include "base/strings/string_util.h" |
#include "base/strings/utf_string_conversions.h" |
-#include "chrome/app/chrome_command_ids.h" |
#include "chrome/browser/bookmarks/bookmark_model_factory.h" |
#include "chrome/browser/platform_util.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -29,11 +24,9 @@ |
#include "ui/accessibility/ax_node_data.h" |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/events/keycodes/keyboard_codes.h" |
-#include "ui/views/bubble/bubble_frame_view.h" |
#include "ui/views/controls/button/md_text_button.h" |
#include "ui/views/controls/combobox/combobox.h" |
#include "ui/views/controls/label.h" |
-#include "ui/views/controls/link.h" |
#include "ui/views/controls/textfield/textfield.h" |
#include "ui/views/layout/fill_layout.h" |
#include "ui/views/layout/grid_layout.h" |
@@ -60,6 +53,7 @@ class UnsizedCombobox : public views::Combobox { |
explicit UnsizedCombobox(ui::ComboboxModel* model) : views::Combobox(model) {} |
~UnsizedCombobox() override {} |
+ // views::Combobox: |
gfx::Size CalculatePreferredSize() const override { |
return gfx::Size(0, views::Combobox::CalculatePreferredSize().height()); |
} |
@@ -70,7 +64,7 @@ class UnsizedCombobox : public views::Combobox { |
} // namespace |
-BookmarkBubbleView* BookmarkBubbleView::bookmark_bubble_ = NULL; |
+BookmarkBubbleView* BookmarkBubbleView::bookmark_bubble_ = nullptr; |
// static |
views::Widget* BookmarkBubbleView::ShowBubble( |
@@ -100,7 +94,7 @@ views::Widget* BookmarkBubbleView::ShowBubble( |
views::BubbleDialogDelegateView::CreateBubble(bookmark_bubble_); |
bubble_widget->Show(); |
// Select the entire title textfield contents when the bubble is first shown. |
- bookmark_bubble_->title_tf_->SelectAll(true); |
+ bookmark_bubble_->name_field_->SelectAll(true); |
bookmark_bubble_->SetArrowPaintType(views::BubbleBorder::PAINT_TRANSPARENT); |
if (bookmark_bubble_->observer_) { |
@@ -111,6 +105,7 @@ views::Widget* BookmarkBubbleView::ShowBubble( |
return bubble_widget; |
} |
+// static |
void BookmarkBubbleView::Hide() { |
if (bookmark_bubble_) |
bookmark_bubble_->GetWidget()->Close(); |
@@ -130,10 +125,17 @@ BookmarkBubbleView::~BookmarkBubbleView() { |
delete parent_combobox_; |
} |
+// ui::DialogModel ------------------------------------------------------------- |
+ |
+int BookmarkBubbleView::GetDialogButtons() const { |
+ // TODO(tapted): DialogClientView should manage the buttons. |
+ return ui::DIALOG_BUTTON_NONE; |
+} |
+ |
// views::WidgetDelegate ------------------------------------------------------- |
views::View* BookmarkBubbleView::GetInitiallyFocusedView() { |
- return title_tf_; |
+ return name_field_; |
} |
base::string16 BookmarkBubbleView::GetWindowTitle() const { |
@@ -206,7 +208,7 @@ bool BookmarkBubbleView::AcceleratorPressed( |
const ui::Accelerator& accelerator) { |
ui::KeyboardCode key_code = accelerator.key_code(); |
if (key_code == ui::VKEY_RETURN) { |
- HandleButtonPressed(close_button_); |
+ HandleButtonPressed(save_button_); |
return true; |
} |
if (key_code == ui::VKEY_E && accelerator.IsAltDown()) { |
@@ -262,9 +264,9 @@ void BookmarkBubbleView::Init() { |
edit_button_ = views::MdTextButton::CreateSecondaryUiButton( |
this, l10n_util::GetStringUTF16(IDS_BOOKMARK_BUBBLE_OPTIONS)); |
- close_button_ = views::MdTextButton::CreateSecondaryUiButton( |
+ save_button_ = views::MdTextButton::CreateSecondaryUiButton( |
this, l10n_util::GetStringUTF16(IDS_DONE)); |
- close_button_->SetIsDefault(true); |
+ save_button_->SetIsDefault(true); |
views::Label* combobox_label = new views::Label( |
l10n_util::GetStringUTF16(IDS_BOOKMARK_BUBBLE_FOLDER_TEXT)); |
@@ -275,9 +277,9 @@ void BookmarkBubbleView::Init() { |
l10n_util::GetStringUTF16(IDS_BOOKMARK_AX_BUBBLE_FOLDER_TEXT)); |
SetLayoutManager(new views::FillLayout); |
- bookmark_details_view_ = base::MakeUnique<View>(); |
- GridLayout* layout = new GridLayout(bookmark_details_view_.get()); |
- bookmark_details_view_->SetLayoutManager(layout); |
+ bookmark_contents_view_ = new views::View(); |
+ GridLayout* layout = new GridLayout(bookmark_contents_view_); |
+ bookmark_contents_view_->SetLayoutManager(layout); |
// This column set is used for the labels and textfields as well as the |
// buttons at the bottom. |
@@ -290,8 +292,8 @@ void BookmarkBubbleView::Init() { |
cs->AddPaddingColumn( |
0, provider->GetDistanceMetric(DISTANCE_UNRELATED_CONTROL_HORIZONTAL)); |
- cs->AddColumn(GridLayout::FILL, GridLayout::CENTER, 0, |
- GridLayout::USE_PREF, 0, 0); |
+ cs->AddColumn(GridLayout::FILL, GridLayout::CENTER, 0, GridLayout::USE_PREF, |
+ 0, 0); |
cs->AddPaddingColumn(1, provider->GetDistanceMetric( |
DISTANCE_UNRELATED_CONTROL_HORIZONTAL_LARGE)); |
@@ -306,12 +308,12 @@ void BookmarkBubbleView::Init() { |
views::Label* label = new views::Label( |
l10n_util::GetStringUTF16(IDS_BOOKMARK_BUBBLE_TITLE_TEXT)); |
layout->AddView(label); |
- title_tf_ = new views::Textfield(); |
- title_tf_->SetText(GetTitle()); |
- title_tf_->SetAccessibleName( |
+ name_field_ = new views::Textfield(); |
+ name_field_->SetText(GetBookmarkName()); |
+ name_field_->SetAccessibleName( |
l10n_util::GetStringUTF16(IDS_BOOKMARK_AX_BUBBLE_TITLE_TEXT)); |
- layout->AddView(title_tf_, 5, 1); |
+ layout->AddView(name_field_, 5, 1); |
layout->AddPaddingRow( |
0, provider->GetInsetsMetric(views::INSETS_DIALOG_CONTENTS).top()); |
@@ -327,13 +329,13 @@ void BookmarkBubbleView::Init() { |
layout->SkipColumns(2); |
layout->AddView(remove_button_); |
layout->AddView(edit_button_); |
- layout->AddView(close_button_); |
+ layout->AddView(save_button_); |
AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE)); |
AddAccelerator(ui::Accelerator(ui::VKEY_E, ui::EF_ALT_DOWN)); |
AddAccelerator(ui::Accelerator(ui::VKEY_R, ui::EF_ALT_DOWN)); |
- AddChildView(bookmark_details_view_.get()); |
+ AddChildView(bookmark_contents_view_); |
} |
// Private methods ------------------------------------------------------------- |
@@ -356,8 +358,8 @@ BookmarkBubbleView::BookmarkBubbleView( |
->GetMostRecentlyAddedUserNodeForURL(url)), |
remove_button_(nullptr), |
edit_button_(nullptr), |
- close_button_(nullptr), |
- title_tf_(nullptr), |
+ save_button_(nullptr), |
+ name_field_(nullptr), |
parent_combobox_(nullptr), |
ios_promo_view_(nullptr), |
footnote_view_(nullptr), |
@@ -367,7 +369,7 @@ BookmarkBubbleView::BookmarkBubbleView( |
chrome::RecordDialogCreation(chrome::DialogIdentifier::BOOKMARK); |
} |
-base::string16 BookmarkBubbleView::GetTitle() { |
+base::string16 BookmarkBubbleView::GetBookmarkName() { |
BookmarkModel* bookmark_model = |
BookmarkModelFactory::GetForBrowserContext(profile_); |
const BookmarkNode* node = |
@@ -390,7 +392,7 @@ void BookmarkBubbleView::HandleButtonPressed(views::Button* sender) { |
base::RecordAction(UserMetricsAction("BookmarkBubble_Edit")); |
ShowEditor(); |
} else { |
- DCHECK_EQ(close_button_, sender); |
+ DCHECK_EQ(save_button_, sender); |
#if defined(OS_WIN) |
if (IsIOSPromotionEligible( |
desktop_ios_promotion::PromotionEntryPoint::BOOKMARKS_BUBBLE)) { |
@@ -431,7 +433,7 @@ void BookmarkBubbleView::ApplyEdits() { |
BookmarkModel* model = BookmarkModelFactory::GetForBrowserContext(profile_); |
const BookmarkNode* node = model->GetMostRecentlyAddedUserNodeForURL(url_); |
if (node) { |
- const base::string16 new_title = title_tf_->text(); |
+ const base::string16 new_title = name_field_->text(); |
if (new_title != node->GetTitle()) { |
model->SetTitle(node, new_title); |
base::RecordAction( |
@@ -455,7 +457,9 @@ bool BookmarkBubbleView::IsIOSPromotionEligible( |
void BookmarkBubbleView::ShowIOSPromotion( |
desktop_ios_promotion::PromotionEntryPoint entry_point) { |
DCHECK(!is_showing_ios_promotion_); |
- RemoveChildView(bookmark_details_view_.get()); |
+ // Hide the contents, but don't delete. Its child views are accessed in the |
+ // destructor if there are edits to apply. |
+ bookmark_contents_view_->SetVisible(false); |
delete footnote_view_; |
footnote_view_ = nullptr; |
is_showing_ios_promotion_ = true; |