Chromium Code Reviews| 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 180d4fcf53cd3f87aeec1cee4515041bbd764545..7b9dfa06e4d86631e940e613e54a5c4b7022982e 100644 |
| --- a/chrome/browser/ui/cocoa/browser_window_controller_private.mm |
| +++ b/chrome/browser/ui/cocoa/browser_window_controller_private.mm |
| @@ -243,17 +243,25 @@ willPositionSheet:(NSWindow*)sheet |
| if (placeBookmarkBarBelowInfoBar) |
| 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 |
| - // takes up the space between the bottom of the toolbar down. |
| - CGFloat contentAreaTop = 0; |
| + int 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 infobar). |
| contentAreaTop = maxY; |
| + CGFloat floatingBarHeight = |
| + NSHeight(floatingBarBackingRect) * [self floatingBarShownFraction]; |
| + // When an instant overlay is shown this is the amount it needs to be pushed |
| + // down by so that it doesn't get covered by the floating toolbar. |
|
dhollowa
2013/03/25 16:28:18
"pushed down so"
sail
2013/03/26 00:16:43
Done.
|
| + toolbarToWebContentsOffset_ = |
| + floatingBarHeight - (NSMaxY(contentBounds) - maxY); |
| } else { |
| + // The tabContentArea view starts below the omnibox. |
| CGFloat minToolbarHeight = [toolbarController_ |
| desiredHeightForCompression:bookmarks::kBookmarkBarOverlap]; |
| contentAreaTop = toolbarTopY - minToolbarHeight; |
| + // This is the space between the bottom of the omnibox and the bottom of the |
| + // infobar (or bookmark bar if there's no infobar). This is used to push |
|
dhollowa
2013/03/25 16:28:18
What if there's both the bookmark bar and the info
sail
2013/03/26 00:16:43
contentAreaTop is the Y coordinate of the bottom m
|
| + // the tab web content down when no instant overlay is shown. |
| toolbarToWebContentsOffset_ = contentAreaTop - maxY; |
| } |
| [self updateContentOffsets]; |
| @@ -863,25 +871,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 infobar). |
| + if ([self currentInstantUIState] != |
| + browser_window_controller::kInstantUIFullPageResults) { |
| + // Normal mode, keep the tab web contents at the top (below the info bar). |
|
dhollowa
2013/03/25 16:28:18
nit: "infobar"
sail
2013/03/26 00:16:43
Actually, we always make this two words. Updated m
|
| + [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 { |