Index: chrome/browser/ui/views/frame/browser_view_layout.cc |
diff --git a/chrome/browser/ui/views/frame/browser_view_layout.cc b/chrome/browser/ui/views/frame/browser_view_layout.cc |
index 25e1df6b6d8d3b6e3c148714c50aaaf04886a159..2535853d30407e0e198cabdacb055bd71b04936f 100644 |
--- a/chrome/browser/ui/views/frame/browser_view_layout.cc |
+++ b/chrome/browser/ui/views/frame/browser_view_layout.cc |
@@ -186,7 +186,7 @@ gfx::Size BrowserViewLayout::GetMinimumSize() { |
gfx::Size contents_size(contents_container_->GetMinimumSize()); |
- int min_height = delegate_->GetTopInsetInBrowserView() + |
+ int min_height = delegate_->GetTopInsetInBrowserView(false) + |
tabstrip_size.height() + toolbar_size.height() + |
bookmark_bar_size.height() + infobar_container_size.height() + |
contents_size.height(); |
@@ -318,13 +318,22 @@ int BrowserViewLayout::NonClientHitTest(const gfx::Point& point) { |
void BrowserViewLayout::Layout(views::View* browser_view) { |
vertical_layout_rect_ = browser_view->GetLocalBounds(); |
- int top = delegate_->GetTopInsetInBrowserView(); |
+ int top = delegate_->GetTopInsetInBrowserView(false); |
top = LayoutTabStripRegion(top); |
if (delegate_->IsTabStripVisible()) { |
+ // Set the position of the background image in tabs and the new tab button. |
int x = tab_strip_->GetMirroredX() + |
browser_view_->GetMirroredX() + |
delegate_->GetThemeBackgroundXInset(); |
- int y = browser_view_->y() + delegate_->GetTopInsetInBrowserView(); |
+ // By passing true here, we position the tab background to vertically align |
+ // with the frame background image of a restored-mode frame, even in a |
+ // maximized window. Then in the frame code, we position the frame so the |
+ // portion of the image that's behind the restored-mode tabstrip is always |
+ // behind the tabstrip. Together these ensure that the tab and frame images |
+ // are always aligned, and that their relative alignment with the toolbar |
+ // image is always the same, so themes which try to align all three will |
+ // look correct in both restored and maximized windows. |
+ int y = browser_view_->y() + delegate_->GetTopInsetInBrowserView(true); |
tab_strip_->SetBackgroundOffset(gfx::Point(x, y)); |
} |
top = LayoutToolbar(top); |
@@ -499,7 +508,7 @@ void BrowserViewLayout::UpdateTopContainerBounds() { |
// Ensure that the top container view reaches the topmost view in the |
// ClientView because the bounds of the top container view are used in |
// layout and we assume that this is the case. |
- height = std::max(height, delegate_->GetTopInsetInBrowserView()); |
+ height = std::max(height, delegate_->GetTopInsetInBrowserView(false)); |
gfx::Rect top_container_bounds(vertical_layout_rect_.width(), height); |