bookmarkbar-in-toolbar.patch 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. ## Adds a copy of the bookmark bar into the toolbar to the right of the locationbar
  2. #
  3. # 'Other Bookmarks' and the Reading List are not shown.
  4. # You'll probably want to hide the existing bookmark bar through the right-click menu
  5. # as well as launch with --bookmark-bar-ntp=never
  6. # The location can be changed by moving the position in chrome/browser/ui/views/toolbar/toolbar_view.cc
  7. --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
  8. +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
  9. @@ -604,10 +604,11 @@ END_METADATA
  10. // BookmarkBarView ------------------------------------------------------------
  11. -BookmarkBarView::BookmarkBarView(Browser* browser, BrowserView* browser_view)
  12. +BookmarkBarView::BookmarkBarView(Browser* browser, BrowserView* browser_view, bool isbbar)
  13. : AnimationDelegateViews(this),
  14. browser_(browser),
  15. - browser_view_(browser_view) {
  16. + browser_view_(browser_view),
  17. + isbbar_(isbbar) {
  18. SetID(VIEW_ID_BOOKMARK_BAR);
  19. Init();
  20. @@ -873,7 +874,7 @@ void BookmarkBarView::Layout() {
  21. if (!model_)
  22. return;
  23. - int x = kBookmarkBarHorizontalMargin;
  24. + int x = isbbar_ ? 0 : kBookmarkBarHorizontalMargin;
  25. int width = View::width() - 2 * kBookmarkBarHorizontalMargin;
  26. const int button_height = GetLayoutConstant(BOOKMARK_BAR_BUTTON_HEIGHT);
  27. @@ -949,7 +950,7 @@ void BookmarkBarView::Layout() {
  28. }
  29. if (model_->loaded() && !model_->bookmark_bar_node()->children().empty()) {
  30. - bool last_visible = x < max_x;
  31. + bool last_visible = x < max_x || isbbar_;
  32. size_t button_count = bookmark_buttons_.size();
  33. for (size_t i = 0; i <= button_count; ++i) {
  34. if (i == button_count) {
  35. @@ -971,6 +972,10 @@ void BookmarkBarView::Layout() {
  36. gfx::Size pref = child->GetPreferredSize();
  37. int next_x = x + pref.width() + bookmark_bar_button_padding;
  38. last_visible = next_x < max_x;
  39. + if (isbbar_) {
  40. + next_x -= bookmark_bar_button_padding;
  41. + last_visible = true;
  42. + }
  43. child->SetVisible(last_visible);
  44. // Only need to set bounds if the view is actually visible.
  45. if (last_visible)
  46. @@ -979,6 +984,18 @@ void BookmarkBarView::Layout() {
  47. }
  48. }
  49. + if (isbbar_ && !bookmark_buttons_.empty()) {
  50. + bookmarks_separator_view_->SetBounds(x, (View::height() - bookmarks_separator_pref.height()) / 2,
  51. + bookmarks_separator_pref.width(), bookmarks_separator_pref.height());
  52. + bookmarks_separator_view_->SetVisible(true);
  53. + gfx::Size prefsize(x + bookmarks_separator_pref.width(), GetLayoutConstant(BOOKMARK_BAR_HEIGHT));
  54. + if (prefsize != GetPreferredSize()) {
  55. + SetPreferredSize(prefsize);
  56. + PreferredSizeChanged();
  57. + }
  58. + return;
  59. + }
  60. +
  61. // Layout the right side buttons.
  62. x = max_x + bookmark_bar_button_padding;
  63. --- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h
  64. +++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.h
  65. @@ -76,7 +76,7 @@ class BookmarkBarView : public views::Ac
  66. METADATA_HEADER(BookmarkBarView);
  67. // |browser_view| can be NULL during tests.
  68. - BookmarkBarView(Browser* browser, BrowserView* browser_view);
  69. + BookmarkBarView(Browser* browser, BrowserView* browser_view, bool isbbar = false);
  70. BookmarkBarView(const BookmarkBarView&) = delete;
  71. BookmarkBarView& operator=(const BookmarkBarView&) = delete;
  72. ~BookmarkBarView() override;
  73. @@ -477,6 +477,8 @@ class BookmarkBarView : public views::Ac
  74. // Returns WeakPtrs used in GetDropCallback(). Used to ensure
  75. // safety if `model_` is mutated after getting the callback.
  76. base::WeakPtrFactory<BookmarkBarView> drop_weak_ptr_factory_{this};
  77. +
  78. + bool isbbar_ = false;
  79. };
  80. #endif // CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_BAR_VIEW_H_
  81. --- a/chrome/browser/ui/views/frame/browser_view.cc
  82. +++ b/chrome/browser/ui/views/frame/browser_view.cc
  83. @@ -3388,6 +3388,7 @@ bool BrowserView::MaybeShowBookmarkBar(W
  84. // Don't change the visibility of the BookmarkBarView. BrowserViewLayout
  85. // handles it.
  86. bookmark_bar_view_->SetPageNavigator(GetActiveWebContents());
  87. + toolbar_->SetBookmarkPageNavigator();
  88. // Update parenting for the bookmark bar. This may detach it from all views.
  89. bool needs_layout = false;
  90. --- a/chrome/browser/ui/views/toolbar/toolbar_view.cc
  91. +++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
  92. @@ -38,6 +38,7 @@
  93. #include "chrome/browser/ui/toolbar/chrome_labs_prefs.h"
  94. #include "chrome/browser/ui/ui_features.h"
  95. #include "chrome/browser/ui/view_ids.h"
  96. +#include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h"
  97. #include "chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h"
  98. #include "chrome/browser/ui/views/extensions/extension_popup.h"
  99. #include "chrome/browser/ui/views/extensions/extensions_side_panel_controller.h"
  100. @@ -332,6 +333,8 @@ void ToolbarView::Init() {
  101. location_bar_ = AddChildView(std::move(location_bar));
  102. + bbar_ = AddChildView(std::make_unique<BookmarkBarView>(browser_, browser_view_, true));
  103. +
  104. if (extensions_container)
  105. extensions_container_ = AddChildView(std::move(extensions_container));
  106. @@ -502,6 +505,10 @@ bool ToolbarView::GetAppMenuFocused() co
  107. return app_menu_button_ && app_menu_button_->HasFocus();
  108. }
  109. +void ToolbarView::SetBookmarkPageNavigator() {
  110. + bbar_->SetPageNavigator(GetWebContents());
  111. +}
  112. +
  113. void ToolbarView::ShowIntentPickerBubble(
  114. std::vector<IntentPickerBubbleView::AppInfo> app_info,
  115. bool show_stay_in_chrome,
  116. --- a/chrome/browser/ui/views/toolbar/toolbar_view.h
  117. +++ b/chrome/browser/ui/views/toolbar/toolbar_view.h
  118. @@ -124,6 +124,8 @@ class ToolbarView : public views::Access
  119. // Returns true if the app menu is focused.
  120. bool GetAppMenuFocused() const;
  121. + void SetBookmarkPageNavigator();
  122. +
  123. void ShowIntentPickerBubble(
  124. std::vector<IntentPickerBubbleView::AppInfo> app_info,
  125. bool show_stay_in_chrome,
  126. @@ -275,6 +277,7 @@ class ToolbarView : public views::Access
  127. HomeButton* home_ = nullptr;
  128. CustomTabBarView* custom_tab_bar_ = nullptr;
  129. LocationBarView* location_bar_ = nullptr;
  130. + BookmarkBarView* bbar_ = nullptr;
  131. ExtensionsToolbarContainer* extensions_container_ = nullptr;
  132. ChromeLabsButton* chrome_labs_button_ = nullptr;
  133. media_router::CastToolbarButton* cast_ = nullptr;