Index: chrome/browser/cocoa/tab_controller.mm |
diff --git a/chrome/browser/cocoa/tab_controller.mm b/chrome/browser/cocoa/tab_controller.mm |
index c9469e0f37cac3290ed938c9397a07a77f932c64..7569cdaf1681c806a33a2f9bf380e1b35462c705 100644 |
--- a/chrome/browser/cocoa/tab_controller.mm |
+++ b/chrome/browser/cocoa/tab_controller.mm |
@@ -124,7 +124,7 @@ class MenuDelegate : public menus::SimpleMenuModel::Delegate { |
// titleView_ under those conditions. |
NSRect titleFrame = [titleView_ frame]; |
iconTitleXOffset_ = NSMinX(titleFrame) - NSMinX(originalIconFrame_); |
- titleCloseWidthOffset_ = NSMaxX([closeButton_ frame]) - NSMaxX(titleFrame); |
+ titleCloseWidthOffset_ = NSMinX(originalIconFrame_) - NSMinX([closeButton_ frame]); |
[self internalSetSelected:selected_]; |
} |
@@ -171,6 +171,9 @@ class MenuDelegate : public menus::SimpleMenuModel::Delegate { |
- (void)setIconView:(NSView*)iconView { |
[iconView_ removeFromSuperview]; |
iconView_ = iconView; |
+ |
+ |
+NSLog(@"original frame: %@", NSStringFromRect(originalIconFrame_)); |
[iconView_ setFrame:originalIconFrame_]; |
// Ensure that the icon is suppressed if no icon is set or if the tab is too |
@@ -193,7 +196,7 @@ class MenuDelegate : public menus::SimpleMenuModel::Delegate { |
// tab. We never actually do this, but it's a helpful guide for determining |
// how much space we have available. |
- (int)iconCapacity { |
- CGFloat width = NSMaxX([closeButton_ frame]) - NSMinX(originalIconFrame_); |
+ CGFloat width = NSMaxX([titleView_ frame]) - NSMinX([closeButton_ frame]); |
CGFloat iconWidth = NSWidth(originalIconFrame_); |
return width / iconWidth; |
@@ -242,32 +245,70 @@ class MenuDelegate : public menus::SimpleMenuModel::Delegate { |
[closeButton_ setHidden:newShowCloseButton ? NO : YES]; |
- // Adjust the title view based on changes to the icon's and close button's |
- // visibility. |
- NSRect titleFrame = [titleView_ frame]; |
+ CGFloat overlap = NSMinX([closeButton_ frame]); |
+ CGFloat availWidth = NSWidth([[self view] frame]) - 2*overlap; |
+ |
+ if (oldShowCloseButton != newShowCloseButton) { |
+ // Adjust the left edge of the title view according to the presence or |
+ // absence of the close button. |
+ if (newShowCloseButton) { |
+ //availWidth -= titleCloseWidthOffset_; |
+ |
+// titleFrame.origin.x += titleCloseWidthOffset_; |
+// titleFrame.size.width -= titleCloseWidthOffset_; |
+ } else { |
+// titleFrame.origin.x -= titleCloseWidthOffset_; |
+// titleFrame.size.width += titleCloseWidthOffset_; |
+ } |
+ |
+// if (newShowCloseButton) { |
+// originalIconFrame_.origin.x += titleCloseWidthOffset_; |
+// } else { |
+// originalIconFrame_.origin.x -= titleCloseWidthOffset_; |
+// } |
+// [iconView_ setFrame:originalIconFrame_]; |
+ } |
if (oldShowIcon != newShowIcon) { |
// Adjust the left edge of the title view according to the presence or |
// absence of the icon view. |
if (newShowIcon) { |
- titleFrame.origin.x += iconTitleXOffset_; |
- titleFrame.size.width -= iconTitleXOffset_; |
+ //availWidth -= iconTitleXOffset_; |
+// titleFrame.origin.x += iconTitleXOffset_; |
+// titleFrame.size.width -= iconTitleXOffset_; |
} else { |
- titleFrame.origin.x -= iconTitleXOffset_; |
- titleFrame.size.width += iconTitleXOffset_; |
+// titleFrame.origin.x -= iconTitleXOffset_; |
+// titleFrame.size.width += iconTitleXOffset_; |
} |
} |
- if (oldShowCloseButton != newShowCloseButton) { |
- // Adjust the right edge of the title view according to the presence or |
- // absence of the close button. |
- if (newShowCloseButton) |
- titleFrame.size.width -= titleCloseWidthOffset_; |
- else |
- titleFrame.size.width += titleCloseWidthOffset_; |
+ |
+ // Adjust the title view based on changes to the icon's and close button's |
+ // visibility. |
+ [titleView_ sizeToFit]; |
+ NSRect titleFrame = [titleView_ frame]; |
+ |
+NSLog(@"r: %@", NSStringFromRect(titleFrame)); |
+ |
+ |
+ if (NSWidth(titleFrame) + titleCloseWidthOffset_ + iconTitleXOffset_ < availWidth) { // assume close and icon are always visible for now |
+ // center favicon and title |
+ CGFloat delta = ((availWidth) - (iconTitleXOffset_ + NSWidth(titleFrame)))/2; |
+ originalIconFrame_.origin.x = (overlap) + delta; |
+ titleFrame.origin.x = originalIconFrame_.origin.x + iconTitleXOffset_; |
+ } else { |
+ // left-align favicon and title |
+ originalIconFrame_.origin.x = (newShowCloseButton ? NSMinX([closeButton_ frame]) : overlap) + titleCloseWidthOffset_; |
+ titleFrame.origin.x = originalIconFrame_.origin.x + iconTitleXOffset_; |
+ titleFrame.size.width = availWidth - titleCloseWidthOffset_ - iconTitleXOffset_; |
} |
+ |
+ |
+NSLog(@"r: %@", NSStringFromRect(titleFrame)); |
+ |
+ [iconView_ setFrame:originalIconFrame_]; |
[titleView_ setFrame:titleFrame]; |
} |