| Index: chrome/browser/ui/cocoa/browser_window_controller_private.mm
|
| diff --git a/chrome/browser/ui/cocoa/browser_window_controller_private.mm b/chrome/browser/ui/cocoa/browser_window_controller_private.mm
|
| index 14788abfb821fecc00c450320eb3400f0a88a90d..d5f5d3379db70505effd862736447efbb11c275a 100644
|
| --- a/chrome/browser/ui/cocoa/browser_window_controller_private.mm
|
| +++ b/chrome/browser/ui/cocoa/browser_window_controller_private.mm
|
| @@ -209,7 +209,7 @@ willPositionSheet:(NSWindow*)sheet
|
| CGFloat toolbarTopY = maxY;
|
| maxY = [self layoutToolbarAtMinX:minX maxY:maxY width:width];
|
|
|
| - // If we're not displaying the bookmark bar below the infobar, then it goes
|
| + // If we're not displaying the bookmark bar below the info bar, then it goes
|
| // immediately below the toolbar.
|
| BOOL placeBookmarkBarBelowInfoBar = [self placeBookmarkBarBelowInfoBar];
|
| if (!placeBookmarkBarBelowInfoBar)
|
| @@ -232,7 +232,7 @@ willPositionSheet:(NSWindow*)sheet
|
| if (inPresentationMode)
|
| maxY = NSMaxY(contentBounds);
|
|
|
| - // Also place the infobar container immediate below the toolbar, except in
|
| + // Also place the info bar container immediate below the toolbar, except in
|
| // presentation mode in which case it's at the top of the visual content area.
|
| maxY = [self layoutInfoBarAtMinX:minX maxY:maxY width:width];
|
|
|
| @@ -244,19 +244,30 @@ willPositionSheet:(NSWindow*)sheet
|
| maxY = [self layoutBookmarkBarAtMinX:minX maxY:maxY width:width];
|
|
|
| // In presentation mode the content area takes up all the remaining space
|
| - // (from the bottom of the infobar down). In normal mode the content area
|
| + // (from the bottom of the info bar down). In normal mode the content area
|
| // takes up the space between the bottom of the toolbar down.
|
| CGFloat contentAreaTop = 0;
|
| if (inPresentationMode) {
|
| - toolbarToWebContentsOffset_ = 0;
|
| + // The tabContentaArea starts at the bottom of the info bar (or top of the
|
| + // screen if there's no info bar).
|
| contentAreaTop = maxY;
|
| + CGFloat floatingBarHeight =
|
| + NSHeight(floatingBarBackingRect) * [self floatingBarShownFraction];
|
| + // When an instant overlay is shown this is the amount it needs to be pushed
|
| + // down so that it doesn't get covered by the floating toolbar.
|
| + toolbarToWebContentsOffset_ =
|
| + floatingBarHeight - (NSMaxY(contentBounds) - maxY);
|
| } else {
|
| + // The tabContentArea view starts below the omnibox.
|
| CGFloat minToolbarHeight = 0;
|
| if ([self hasToolbar]) {
|
| minToolbarHeight = [toolbarController_
|
| desiredHeightForCompression:bookmarks::kBookmarkBarOverlap];
|
| }
|
| contentAreaTop = toolbarTopY - minToolbarHeight;
|
| + // This is the space between the bottom of the omnibox and the bottom of the
|
| + // last bar (info bar or bookmark bar or toolbar). This is used to push the
|
| + // tab web content down when no instant overlay is shown.
|
| toolbarToWebContentsOffset_ = contentAreaTop - maxY;
|
| }
|
| [self updateContentOffsets];
|
| @@ -382,7 +393,7 @@ willPositionSheet:(NSWindow*)sheet
|
| - (BOOL)placeBookmarkBarBelowInfoBar {
|
| // If we are currently displaying the NTP detached bookmark bar or animating
|
| // to/from it (from/to anything else), we display the bookmark bar below the
|
| - // infobar.
|
| + // info bar.
|
| return [bookmarkBarController_ isInState:BookmarkBar::DETACHED] ||
|
| [bookmarkBarController_ isAnimatingToState:BookmarkBar::DETACHED] ||
|
| [bookmarkBarController_ isAnimatingFromState:BookmarkBar::DETACHED];
|
| @@ -866,25 +877,53 @@ willPositionSheet:(NSWindow*)sheet
|
| }
|
|
|
| - (void)updateContentOffsets {
|
| - // Normally the tab contents sits below the bookmark bar. This is achieved by
|
| - // setting the offset to the height of the bookmark bar. The only exception
|
| - // is on the search results page where the Instant results are shown inside
|
| - // the page and not in the overlay contents as usual.
|
| - CGFloat tabContentsOffset = toolbarToWebContentsOffset_;
|
| - if ([self currentInstantUIState] ==
|
| - browser_window_controller::kInstantUIFullPageResults) {
|
| - tabContentsOffset = 0;
|
| - }
|
| - [overlayableContentsController_ setActiveContainerOffset:tabContentsOffset];
|
| -
|
| - // Prevent the fast resize view from drawing white over the bookmark bar.
|
| - [[self tabContentArea] setContentOffset:toolbarToWebContentsOffset_];
|
| + if ([self inPresentationMode]) {
|
| + // In presentation mode the tabContentArea starts at the bottom of the info
|
| + // bar (or top of the screen if there's no info bar).
|
| + if ([self currentInstantUIState] !=
|
| + browser_window_controller::kInstantUIFullPageResults) {
|
| + // Normal mode, keep the tab web contents at the top (below the info bar).
|
| + [overlayableContentsController_ setActiveContainerOffset:0];
|
| + } else {
|
| + // Instant suggestions are displayed in the main tab contents so push that
|
| + // down so that the floating toolbar doesn't obscure it.
|
| + [overlayableContentsController_
|
| + setActiveContainerOffset:toolbarToWebContentsOffset_];
|
| + }
|
| + // Floating overlay (if any) should also be below the floating toolbar.
|
| + [overlayableContentsController_
|
| + setOverlayContentsOffset:toolbarToWebContentsOffset_];
|
|
|
| - // Prevent the dev tools splitter from overlapping the bookmark bar.
|
| - if ([self currentInstantUIState] != browser_window_controller::kInstantUINone)
|
| + [[self tabContentArea] setContentOffset:0];
|
| [devToolsController_ setTopContentOffset:0];
|
| - else
|
| - [devToolsController_ setTopContentOffset:toolbarToWebContentsOffset_];
|
| + } else {
|
| + // In normal mode the tabContentArea starts just below the omnibox and the
|
| + // bookmark bar and info bar overlap it.
|
| + if ([self currentInstantUIState] !=
|
| + browser_window_controller::kInstantUIFullPageResults) {
|
| + // Normal mode, push the tab web contents down so that it doesn't obscure
|
| + // the bookmark bar and info bar.
|
| + [overlayableContentsController_
|
| + setActiveContainerOffset:toolbarToWebContentsOffset_];
|
| + } else {
|
| + // Instant suggestions are displayed in the main tab contents so don't
|
| + // push it down (keep it next to the omnibox).
|
| + [overlayableContentsController_ setActiveContainerOffset:0];
|
| + }
|
| + // Floating overlay (if any) should also be at the top (next to the
|
| + // omnibox).
|
| + [overlayableContentsController_ setOverlayContentsOffset:0];
|
| +
|
| + // Prevent the fast resize view from drawing white over the bookmark bar.
|
| + [[self tabContentArea] setContentOffset:toolbarToWebContentsOffset_];
|
| + // Prevent the dev tools splitter from overlapping the bookmark bar.
|
| + if ([self currentInstantUIState] !=
|
| + browser_window_controller::kInstantUINone) {
|
| + [devToolsController_ setTopContentOffset:0];
|
| + } else {
|
| + [devToolsController_ setTopContentOffset:toolbarToWebContentsOffset_];
|
| + }
|
| + }
|
| }
|
|
|
| - (void)updateSubviewZOrder:(BOOL)inPresentationMode {
|
| @@ -898,7 +937,7 @@ willPositionSheet:(NSWindow*)sheet
|
| isPositioned:NSWindowAbove
|
| relativeTo:[self tabContentArea]];
|
| } else {
|
| - // Toolbar is below tab contents so that the infobar arrow can appear above
|
| + // Toolbar is below tab contents so that the infob ar arrow can appear above
|
| // it. Unlike other views the toolbar never overlaps the actual web
|
| // content.
|
| [contentView cr_ensureSubview:toolbarView
|
| @@ -914,7 +953,7 @@ willPositionSheet:(NSWindow*)sheet
|
| relativeTo:toolbarView];
|
|
|
| if (inPresentationMode) {
|
| - // In presentation mode the infobar is below all other views.
|
| + // In presentation mode the info bar is below all other views.
|
| [contentView cr_ensureSubview:[infoBarContainerController_ view]
|
| isPositioned:NSWindowBelow
|
| relativeTo:[self tabContentArea]];
|
|
|