| Index: chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm
|
| diff --git a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm
|
| index 94ac7d7b293f77dfb29bd51abbc58828086954f6..e492bdb763f01dbc9ba333ea2d9dc662925ceaee 100644
|
| --- a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm
|
| +++ b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm
|
| @@ -19,6 +19,7 @@
|
| #import "chrome/browser/ui/cocoa/extensions/browser_actions_container_view.h"
|
| #import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h"
|
| #import "chrome/browser/ui/cocoa/extensions/toolbar_actions_bar_bubble_mac.h"
|
| +#import "chrome/browser/ui/cocoa/extensions/toolbar_actions_bar_bubble_views_presenter.h"
|
| #import "chrome/browser/ui/cocoa/image_button_cell.h"
|
| #import "chrome/browser/ui/cocoa/l10n_util.h"
|
| #import "chrome/browser/ui/cocoa/menu_button.h"
|
| @@ -142,10 +143,6 @@ const CGFloat kBrowserActionBubbleYOffset = 3.0;
|
| - (void)createMessageBubble:
|
| (std::unique_ptr<ToolbarActionsBarBubbleDelegate>)delegate;
|
|
|
| -// Called when the window for the active bubble is closing, and sets the active
|
| -// bubble to nil.
|
| -- (void)bubbleWindowClosing:(NSNotification*)notification;
|
| -
|
| // Sets the current focused view. Should only be used for the overflow
|
| // container.
|
| - (void)setFocusedViewIndex:(NSInteger)index;
|
| @@ -271,6 +268,10 @@ void ToolbarActionsBarBridge::ShowToolbarActionBubble(
|
| new ToolbarActionsBar(toolbarActionsBarBridge_.get(),
|
| browser_,
|
| mainBar));
|
| + if (ui::MaterialDesignController::IsSecondaryUiMaterial()) {
|
| + viewsBubblePresenter_ =
|
| + base::MakeUnique<ToolbarActionsBarBubbleViewsPresenter>(self);
|
| + }
|
|
|
| containerView_ = container;
|
| [containerView_ setMinWidth:toolbarActionsBar_->GetMinimumWidth()];
|
| @@ -403,6 +404,11 @@ void ToolbarActionsBarBridge::ShowToolbarActionBubble(
|
| return [self preferredSize];
|
| }
|
|
|
| +- (void)bubbleWindowClosing:(NSNotification*)notification {
|
| + activeBubble_ = nil;
|
| + toolbarActionsBar_->OnBubbleClosed();
|
| +}
|
| +
|
| - (void)updateMaxWidth {
|
| const CGFloat ownMaxWidth = toolbarActionsBar_->GetMaximumWidth();
|
| containerView_.maxWidth =
|
| @@ -730,10 +736,16 @@ void ToolbarActionsBarBridge::ShowToolbarActionBubble(
|
|
|
| - (NSPoint)popupPointForView:(NSView*)view
|
| withBounds:(NSRect)bounds {
|
| - // Anchor point just above the center of the bottom.
|
| - int y = [view isFlipped] ? NSMaxY(bounds) - kBrowserActionBubbleYOffset :
|
| - kBrowserActionBubbleYOffset;
|
| - NSPoint anchor = NSMakePoint(NSMidX(bounds), y);
|
| + NSPoint anchor;
|
| + if (ui::MaterialDesignController::IsSecondaryUiMaterial()) {
|
| + // Anchor to the bottom-right of the button.
|
| + anchor = NSMakePoint(NSMaxX(bounds), [view isFlipped] ? NSMaxY(bounds) : 0);
|
| + } else {
|
| + // Anchor point just above the center of the bottom.
|
| + int y = [view isFlipped] ? NSMaxY(bounds) - kBrowserActionBubbleYOffset
|
| + : kBrowserActionBubbleYOffset;
|
| + anchor = NSMakePoint(NSMidX(bounds), y);
|
| + }
|
| // Convert the point to the container view's frame, and adjust for animation.
|
| NSPoint anchorInContainer =
|
| [containerView_ convertPoint:anchor fromView:view];
|
| @@ -806,7 +818,17 @@ void ToolbarActionsBarBridge::ShowToolbarActionBubble(
|
| NSPoint anchor = [self popupPointForView:anchorView
|
| withBounds:[anchorView bounds]];
|
|
|
| - anchor = ui::ConvertPointFromWindowToScreen([containerView_ window], anchor);
|
| + NSWindow* parentWindow = [containerView_ window];
|
| + anchor = ui::ConvertPointFromWindowToScreen(parentWindow, anchor);
|
| + if (viewsBubblePresenter_) {
|
| + viewsBubblePresenter_->PresentAt(std::move(delegate), parentWindow, anchor,
|
| + anchoredToAction);
|
| + // No need to set |activeBubble_| as it's only used for Cocoa tests. Also,
|
| + // skip registering for notifications since the presenter will call
|
| + // -bubbleWindowClosing: directly.
|
| + return;
|
| + }
|
| +
|
| activeBubble_ = [[ToolbarActionsBarBubbleMac alloc]
|
| initWithParentWindow:[containerView_ window]
|
| anchorPoint:anchor
|
| @@ -820,11 +842,6 @@ void ToolbarActionsBarBridge::ShowToolbarActionBubble(
|
| [activeBubble_ showWindow:nil];
|
| }
|
|
|
| -- (void)bubbleWindowClosing:(NSNotification*)notification {
|
| - activeBubble_ = nil;
|
| - toolbarActionsBar_->OnBubbleClosed();
|
| -}
|
| -
|
| - (void)setFocusedViewIndex:(NSInteger)index {
|
| DCHECK(isOverflow_);
|
| focusedViewIndex_ = index;
|
|
|