Index: chrome/browser/ui/panels/panel_titlebar_view_cocoa.mm |
diff --git a/chrome/browser/ui/panels/panel_titlebar_view_cocoa.mm b/chrome/browser/ui/panels/panel_titlebar_view_cocoa.mm |
index 08fdc1b840f598d19a66aa4f3cfea5f3407fbad2..7eaca372a4cf7a96c0a7a0ac6ec04c3be333269b 100644 |
--- a/chrome/browser/ui/panels/panel_titlebar_view_cocoa.mm |
+++ b/chrome/browser/ui/panels/panel_titlebar_view_cocoa.mm |
@@ -17,11 +17,13 @@ |
#import "chrome/browser/ui/panels/panel_window_controller_cocoa.h" |
#include "grit/theme_resources_standard.h" |
#import "third_party/GTM/AppKit/GTMNSBezierPath+RoundRect.h" |
+#include "ui/base/resource/resource_bundle.h" |
#include "ui/gfx/mac/nsimage_cache.h" |
#include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h" |
const int kRoundedCornerSize = 3; |
-const int kCloseButtonLeftPadding = 8; |
+const int kButtonPadding = 8; |
+const int kIconAndTextPadding = 5; |
// Used to implement TestingAPI |
static NSEvent* MakeMouseEvent(NSEventType type, NSPoint point) { |
@@ -182,6 +184,7 @@ static NSEvent* MakeMouseEvent(NSEventType type, NSPoint point) { |
// Update layout of controls in the titlebar. |
[self updateCloseButtonLayout]; |
+ [self updateIconAndTitleLayout]; |
// Set autoresizing behavior: glued to edges on left, top and right. |
[self setAutoresizingMask:(NSViewMinYMargin | NSViewWidthSizable)]; |
@@ -207,13 +210,18 @@ static NSEvent* MakeMouseEvent(NSEventType type, NSPoint point) { |
- (void)setTitle:(NSString*)newTitle { |
[title_ setStringValue:newTitle]; |
+ |
Avi (use Gerrit)
2011/09/21 21:04:25
remove extra line
jianli
2011/09/21 23:15:25
Done.
|
+} |
+ |
+- (void)setIcon:(NSImage*)newIcon { |
+ [icon_ setImage:newIcon]; |
} |
- (void)updateCloseButtonLayout { |
NSRect buttonBounds = [closeButton_ bounds]; |
NSRect bounds = [self bounds]; |
- int x = kCloseButtonLeftPadding; |
+ int x = kButtonPadding; |
int y = (NSHeight(bounds) - NSHeight(buttonBounds)) / 2; |
NSRect buttonFrame = NSMakeRect(x, |
y, |
@@ -233,6 +241,43 @@ static NSEvent* MakeMouseEvent(NSEventType type, NSPoint point) { |
[self addTrackingArea:closeButtonTrackingArea_.get()]; |
} |
+- (void)updateIconAndTitleLayout { |
+ NSRect closeButtonBounds = [closeButton_ bounds]; |
Dmitry Titov
2011/09/21 21:32:11
We should call those 'frame' ratehr then 'bounds'
jennb
2011/09/21 22:10:38
Is updateCloseButtonLayout also using bounds incor
jianli
2011/09/21 23:15:25
Changed to call sizeToFit before querying its boun
jianli
2011/09/21 23:15:25
Done.
jianli
2011/09/21 23:15:25
Done.
|
+ NSRect iconBounds = [icon_ bounds]; |
+ NSRect titleBounds = [title_ bounds]; |
+ NSRect settingsButtonBounds = [settingsButton_ bounds]; |
+ NSRect bounds = [self bounds]; |
+ |
+ // Compute the size of the title text. |
+ NSDictionary* attributes = |
+ [NSDictionary dictionaryWithObjectsAndKeys:[NSFont userFontOfSize:12], |
Avi (use Gerrit)
2011/09/21 21:04:25
Don't make assumptions. You should be able to use
jianli
2011/09/21 23:15:25
Removed since it is not needed.
|
+ NSFontAttributeName, |
+ nil]; |
+ NSAttributedString* text = |
+ [[NSAttributedString alloc] initWithString:[title_ stringValue] |
+ attributes:attributes]; |
Avi (use Gerrit)
2011/09/21 21:04:25
Alternatively, does [title_ attributedStringValue]
Dmitry Titov
2011/09/21 21:32:11
'test' should be autoreleased in the same statemen
jianli
2011/09/21 23:15:25
Removed since it is not needed.
|
+ NSSize titleSize = [text size]; |
+ int titleWidth = titleSize.width; |
+ |
+ // Place the icon and title at the center of the titlebar. |
+ int iconWidthWithPadding = NSWidth(iconBounds) + kIconAndTextPadding; |
+ int availableWidth = NSWidth(bounds) - kButtonPadding * 4 - |
+ NSWidth(closeButtonBounds) - NSWidth(settingsButtonBounds); |
+ if (iconWidthWithPadding + titleWidth > availableWidth) |
+ titleWidth = availableWidth - iconWidthWithPadding; |
+ int startX = kButtonPadding * 2 + NSWidth(closeButtonBounds) + |
+ (availableWidth - iconWidthWithPadding - titleWidth) / 2; |
+ |
+ iconBounds.origin.x = startX; |
+ iconBounds.origin.y = (NSHeight(bounds) - NSHeight(iconBounds)) / 2; |
+ [icon_ setFrame:iconBounds]; |
+ |
+ titleBounds.origin.x = startX + iconWidthWithPadding; |
+ titleBounds.origin.y = (NSHeight(bounds) - NSHeight(titleBounds)) / 2; |
+ titleBounds.size.width = titleWidth; |
+ [title_ setFrame:titleBounds]; |
+} |
+ |
// PanelManager controls size/position of the window. |
- (BOOL)mouseDownCanMoveWindow { |
return NO; |