Просмотр исходного кода

Add patch to add bookmarkbar into the toolbar

Blaise 3 лет назад
Родитель
Сommit
6ab168c95e
1 измененных файлов с 150 добавлено и 0 удалено
  1. 150 0
      functionality/bookmarkbar-in-toolbar.patch

+ 150 - 0
functionality/bookmarkbar-in-toolbar.patch

@@ -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;