Chromium Code Reviews| Index: chrome/browser/ui/cocoa/browser_window_utils.mm |
| diff --git a/chrome/browser/ui/cocoa/browser_window_utils.mm b/chrome/browser/ui/cocoa/browser_window_utils.mm |
| index de2e3d6fbcfc19974d87267a5ff5640cd73bfb2a..26e9242fab426d5bd4da01df6a498166c19a0cc1 100644 |
| --- a/chrome/browser/ui/cocoa/browser_window_utils.mm |
| +++ b/chrome/browser/ui/cocoa/browser_window_utils.mm |
| @@ -145,39 +145,56 @@ using content::NativeWebKeyboardEvent; |
| return [newTitle copy]; |
| } |
| -// Our patterns want to be drawn from the upper left hand corner of the view. |
| -// Cocoa wants to do it from the lower left of the window. |
| +// The titlebar/tabstrip header on the mac is slightly smaller than on Windows. |
| +// There is also no window frame to the left of the web contents on mac. |
| +// To keep: |
| +// - the window background pattern (IDR_THEME_FRAME.*) lined up vertically with |
| +// the tab and toolbar patterns |
| +// - the toolbar pattern lined up horizontally with the NTP background. |
| +// we have to shift the pattern slightly, rather than drawing from the top left |
| +// corner of the frame / tabstrip. The offsets below were empirically determined |
| +// in order to line these patterns up. |
| // |
| -// Rephase our pattern to fit this view. Some other views (Tabs, Toolbar etc.) |
| -// will phase their patterns relative to this so all the views look right. |
| -// |
| -// To line up the background pattern with the pattern in the browser window |
| -// the background pattern for the tabs needs to be moved left by 5 pixels. |
| +// This will make the themes look slightly different than in Windows/Linux |
| +// because of the differing heights between window top and tab top, but this has |
| +// been approved by UI. |
| const CGFloat kPatternHorizontalOffset = -5; |
| -// To match Windows and CrOS, have to offset vertically by 2 pixels. |
| // Without tab strip, offset an extra pixel (determined by experimentation). |
| const CGFloat kPatternVerticalOffset = 2; |
| const CGFloat kPatternVerticalOffsetNoTabStrip = 3; |
| ++ (NSPoint)themeImagePositionFor:(NSView*)windowView |
| + withTabStrip:(NSView*)tabStripView |
| + alignment:(ThemeImageAlignment)alignment { |
| + if (!tabStripView) { |
| + return NSMakePoint(kPatternHorizontalOffset, |
| + NSHeight([windowView bounds]) + |
| + kPatternVerticalOffsetNoTabStrip); |
| + } |
| -+ (NSPoint)themePatternPhaseFor:(NSView*)windowView |
| - withTabStrip:(NSView*)tabStripView { |
| - // When we have a tab strip, line up with the top of the tab, otherwise, |
| - // line up with the top of the window. |
| - if (!tabStripView) |
| + NSPoint position = |
| + [BrowserWindowUtils themeImagePositionInTabStripCoords:tabStripView |
| + alignment:alignment]; |
| + return [tabStripView convertPoint:position toView:windowView]; |
| +} |
| + |
| ++ (NSPoint) themeImagePositionInTabStripCoords:(NSView*)tabStripView |
|
Robert Sesek
2013/07/30 14:25:24
nit: no space after )
|
| + alignment:(ThemeImageAlignment)alignment { |
| + DCHECK(tabStripView); |
| + |
| + if (alignment == THEME_IMAGE_ALIGN_WITH_TAB_STRIP) { |
| + // The theme image is lined up with the top of the tab which is below the |
| + // top of the tab strip. |
| return NSMakePoint(kPatternHorizontalOffset, |
| - NSHeight([windowView bounds]) |
| - + kPatternVerticalOffsetNoTabStrip); |
| - |
| - NSRect tabStripViewWindowBounds = [tabStripView bounds]; |
| - tabStripViewWindowBounds = |
| - [tabStripView convertRect:tabStripViewWindowBounds |
| - toView:windowView]; |
| - return NSMakePoint(NSMinX(tabStripViewWindowBounds) |
| - + kPatternHorizontalOffset, |
| - NSMinY(tabStripViewWindowBounds) |
| - + [TabStripController defaultTabHeight] |
| - + kPatternVerticalOffset); |
| + [TabStripController defaultTabHeight] + |
| + kPatternVerticalOffset); |
| + } |
| + // The theme image is lined up with the top of the tab strip (as opposed to |
| + // the top of the tab above). This is the same as lining up with the top of |
| + // the window's root view when not in presentation mode. |
| + return NSMakePoint(kPatternHorizontalOffset, |
| + NSHeight([tabStripView bounds]) + |
| + kPatternVerticalOffsetNoTabStrip); |
| } |
| + (void)activateWindowForController:(NSWindowController*)controller { |