|
@@ -0,0 +1,150 @@
|
|
|
+## Adds a copy of the bookmark bar into the toolbar to the right of the locationbar
|
|
|
+#
|
|
|
+# 'Other Bookmarks' and the Reading List are not shown.
|
|
|
+# You'll probably want to hide the existing bookmark bar through the right-click menu
|
|
|
+# as well as launch with --bookmark-bar-ntp=never
|
|
|
+# The location can be changed by moving the position in chrome/browser/ui/views/toolbar/toolbar_view.cc
|
|
|
+
|
|
|
+--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
|
|
|
++++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
|
|
|
+@@ -604,10 +604,11 @@ END_METADATA
|
|
|
+
|
|
|
+ // BookmarkBarView ------------------------------------------------------------
|
|
|
+
|
|
|
+-BookmarkBarView::BookmarkBarView(Browser* browser, BrowserView* browser_view)
|
|
|
++BookmarkBarView::BookmarkBarView(Browser* browser, BrowserView* browser_view, bool isbbar)
|
|
|
+ : AnimationDelegateViews(this),
|
|
|
+ browser_(browser),
|
|
|
+- browser_view_(browser_view) {
|
|
|
++ browser_view_(browser_view),
|
|
|
++ isbbar_(isbbar) {
|
|
|
+ SetID(VIEW_ID_BOOKMARK_BAR);
|
|
|
+ Init();
|
|
|
+
|
|
|
+@@ -873,7 +874,7 @@ void BookmarkBarView::Layout() {
|
|
|
+ if (!model_)
|
|
|
+ return;
|
|
|
+
|
|
|
+- int x = kBookmarkBarHorizontalMargin;
|
|
|
++ int x = isbbar_ ? 0 : kBookmarkBarHorizontalMargin;
|
|
|
+ int width = View::width() - 2 * kBookmarkBarHorizontalMargin;
|
|
|
+
|
|
|
+ const int button_height = GetLayoutConstant(BOOKMARK_BAR_BUTTON_HEIGHT);
|
|
|
+@@ -949,7 +950,7 @@ void BookmarkBarView::Layout() {
|
|
|
+ }
|
|
|
+
|
|
|
+ if (model_->loaded() && !model_->bookmark_bar_node()->children().empty()) {
|
|
|
+- bool last_visible = x < max_x;
|
|
|
++ bool last_visible = x < max_x || isbbar_;
|
|
|
+ size_t button_count = bookmark_buttons_.size();
|
|
|
+ for (size_t i = 0; i <= button_count; ++i) {
|
|
|
+ if (i == button_count) {
|
|
|
+@@ -971,6 +972,10 @@ void BookmarkBarView::Layout() {
|
|
|
+ gfx::Size pref = child->GetPreferredSize();
|
|
|
+ int next_x = x + pref.width() + bookmark_bar_button_padding;
|
|
|
+ last_visible = next_x < max_x;
|
|
|
++ if (isbbar_) {
|
|
|
++ next_x -= bookmark_bar_button_padding;
|
|
|
++ last_visible = true;
|
|
|
++ }
|
|
|
+ child->SetVisible(last_visible);
|
|
|
+ // Only need to set bounds if the view is actually visible.
|
|
|
+ if (last_visible)
|
|
|
+@@ -979,6 +984,18 @@ void BookmarkBarView::Layout() {
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
++ if (isbbar_ && !bookmark_buttons_.empty()) {
|
|
|
++ bookmarks_separator_view_->SetBounds(x, (View::height() - bookmarks_separator_pref.height()) / 2,
|
|
|
++ bookmarks_separator_pref.width(), bookmarks_separator_pref.height());
|
|
|
++ bookmarks_separator_view_->SetVisible(true);
|
|
|
++ gfx::Size prefsize(x + bookmarks_separator_pref.width(), GetLayoutConstant(BOOKMARK_BAR_HEIGHT));
|
|
|
++ if (prefsize != GetPreferredSize()) {
|
|
|
++ SetPreferredSize(prefsize);
|
|
|
++ PreferredSizeChanged();
|
|
|
++ }
|
|
|
++ return;
|
|
|
++ }
|
|
|
++
|
|
|
+ // Layout the right side buttons.
|
|
|
+ x = max_x + bookmark_bar_button_padding;
|
|
|
+
|
|
|
+--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h
|
|
|
++++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h
|
|
|
+@@ -76,7 +76,7 @@ class BookmarkBarView : public views::Ac
|
|
|
+
|
|
|
+ METADATA_HEADER(BookmarkBarView);
|
|
|
+ // |browser_view| can be NULL during tests.
|
|
|
+- BookmarkBarView(Browser* browser, BrowserView* browser_view);
|
|
|
++ BookmarkBarView(Browser* browser, BrowserView* browser_view, bool isbbar = false);
|
|
|
+ BookmarkBarView(const BookmarkBarView&) = delete;
|
|
|
+ BookmarkBarView& operator=(const BookmarkBarView&) = delete;
|
|
|
+ ~BookmarkBarView() override;
|
|
|
+@@ -477,6 +477,8 @@ class BookmarkBarView : public views::Ac
|
|
|
+ // Returns WeakPtrs used in GetDropCallback(). Used to ensure
|
|
|
+ // safety if `model_` is mutated after getting the callback.
|
|
|
+ base::WeakPtrFactory<BookmarkBarView> drop_weak_ptr_factory_{this};
|
|
|
++
|
|
|
++ bool isbbar_ = false;
|
|
|
+ };
|
|
|
+
|
|
|
+ #endif // CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_BAR_VIEW_H_
|
|
|
+--- a/chrome/browser/ui/views/frame/browser_view.cc
|
|
|
++++ b/chrome/browser/ui/views/frame/browser_view.cc
|
|
|
+@@ -3388,6 +3388,7 @@ bool BrowserView::MaybeShowBookmarkBar(W
|
|
|
+ // Don't change the visibility of the BookmarkBarView. BrowserViewLayout
|
|
|
+ // handles it.
|
|
|
+ bookmark_bar_view_->SetPageNavigator(GetActiveWebContents());
|
|
|
++ toolbar_->SetBookmarkPageNavigator();
|
|
|
+
|
|
|
+ // Update parenting for the bookmark bar. This may detach it from all views.
|
|
|
+ bool needs_layout = false;
|
|
|
+--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
|
|
|
++++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
|
|
|
+@@ -38,6 +38,7 @@
|
|
|
+ #include "chrome/browser/ui/toolbar/chrome_labs_prefs.h"
|
|
|
+ #include "chrome/browser/ui/ui_features.h"
|
|
|
+ #include "chrome/browser/ui/view_ids.h"
|
|
|
++#include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h"
|
|
|
+ #include "chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h"
|
|
|
+ #include "chrome/browser/ui/views/extensions/extension_popup.h"
|
|
|
+ #include "chrome/browser/ui/views/extensions/extensions_side_panel_controller.h"
|
|
|
+@@ -332,6 +333,8 @@ void ToolbarView::Init() {
|
|
|
+
|
|
|
+ location_bar_ = AddChildView(std::move(location_bar));
|
|
|
+
|
|
|
++ bbar_ = AddChildView(std::make_unique<BookmarkBarView>(browser_, browser_view_, true));
|
|
|
++
|
|
|
+ if (extensions_container)
|
|
|
+ extensions_container_ = AddChildView(std::move(extensions_container));
|
|
|
+
|
|
|
+@@ -502,6 +505,10 @@ bool ToolbarView::GetAppMenuFocused() co
|
|
|
+ return app_menu_button_ && app_menu_button_->HasFocus();
|
|
|
+ }
|
|
|
+
|
|
|
++void ToolbarView::SetBookmarkPageNavigator() {
|
|
|
++ bbar_->SetPageNavigator(GetWebContents());
|
|
|
++}
|
|
|
++
|
|
|
+ void ToolbarView::ShowIntentPickerBubble(
|
|
|
+ std::vector<IntentPickerBubbleView::AppInfo> app_info,
|
|
|
+ bool show_stay_in_chrome,
|
|
|
+--- a/chrome/browser/ui/views/toolbar/toolbar_view.h
|
|
|
++++ b/chrome/browser/ui/views/toolbar/toolbar_view.h
|
|
|
+@@ -124,6 +124,8 @@ class ToolbarView : public views::Access
|
|
|
+ // Returns true if the app menu is focused.
|
|
|
+ bool GetAppMenuFocused() const;
|
|
|
+
|
|
|
++ void SetBookmarkPageNavigator();
|
|
|
++
|
|
|
+ void ShowIntentPickerBubble(
|
|
|
+ std::vector<IntentPickerBubbleView::AppInfo> app_info,
|
|
|
+ bool show_stay_in_chrome,
|
|
|
+@@ -275,6 +277,7 @@ class ToolbarView : public views::Access
|
|
|
+ HomeButton* home_ = nullptr;
|
|
|
+ CustomTabBarView* custom_tab_bar_ = nullptr;
|
|
|
+ LocationBarView* location_bar_ = nullptr;
|
|
|
++ BookmarkBarView* bbar_ = nullptr;
|
|
|
+ ExtensionsToolbarContainer* extensions_container_ = nullptr;
|
|
|
+ ChromeLabsButton* chrome_labs_button_ = nullptr;
|
|
|
+ media_router::CastToolbarButton* cast_ = nullptr;
|