Index: chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.mm |
diff --git a/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.mm b/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.mm |
index 4e2d7bb29250e659fca466ae7868037f98178977..f85e8fe956e8ec1093478b6054ae79bf59045d58 100644 |
--- a/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.mm |
+++ b/chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.mm |
@@ -224,7 +224,12 @@ NSColor* IdentityVerifiedTextColor() { |
/*flipped=*/ YES); |
// Call the superclass method to trigger drawing of the tab labels. |
- [self drawInteriorWithFrame:cellFrame inView:controlView]; |
+ NSRect interiorFrame = cellFrame; |
+ interiorFrame.size.width = 0; |
+ for (NSInteger i = 0; i < [self segmentCount]; ++i) |
+ interiorFrame.size.width += [self widthForSegment:i]; |
+ [self drawInteriorWithFrame:interiorFrame inView:controlView]; |
Andre
2015/04/04 00:17:48
Without this fix, the text will draw on the right
|
+ |
if ([[controlView window] firstResponder] == controlView) |
[self drawFocusRect]; |
} |
@@ -236,33 +241,36 @@ NSColor* IdentityVerifiedTextColor() { |
NSFrameRect([self hitRectForSegment:keySegment_]); |
} |
+// Returns the segment number for the left-most positioned segment. |
+// On Right-to-Left languages, segment 0 is on the right. |
+- (NSInteger)leftSegment { |
+ BOOL isRTL = [self userInterfaceLayoutDirection] == |
+ NSUserInterfaceLayoutDirectionRightToLeft; |
+ return isRTL ? [self segmentCount] - 1 : 0; |
+} |
+ |
// Return the hit rect (i.e., the visual bounds of the tab) for |
// the given segment. |
- (NSRect)hitRectForSegment:(NSInteger)segment { |
CGFloat tabstripHeight = [tabCenterImage_ size].height; |
DCHECK_GT(tabstripHeight, kTabHeight); |
- |
- NSRect rect = NSMakeRect(0, tabstripHeight - kTabHeight, |
- [self widthForSegment:segment], kTabHeight); |
- for (NSInteger i = 0; i < segment; ++i) { |
- rect.origin.x += [self widthForSegment:i]; |
- } |
- int xAdjust = segment == 0 ? kTabStripXPadding : 0; |
- rect.size.width = std::floor( |
- [self widthForSegment:segment] - kTabSpacing - xAdjust); |
- rect.origin.x = std::floor(rect.origin.x + kTabSpacing / 2 + xAdjust); |
- |
- return rect; |
+ DCHECK([self segmentCount] == 2); // Assume 2 segments to keep things simple. |
+ NSInteger leftSegment = [self leftSegment]; |
+ CGFloat xOrigin = segment == leftSegment ? kTabStripXPadding |
+ : [self widthForSegment:leftSegment]; |
+ NSRect rect = NSMakeRect(xOrigin, tabstripHeight - kTabHeight, |
+ [self widthForSegment:segment] - kTabStripXPadding, |
+ kTabHeight); |
+ return NSInsetRect(rect, kTabSpacing / 2, 0); |
} |
- (void)drawSegment:(NSInteger)segment |
inFrame:(NSRect)tabFrame |
withView:(NSView*)controlView { |
// Adjust the tab's frame so that the label appears centered in the tab. |
- if (segment == 0) { |
+ if (segment == [self leftSegment]) |
tabFrame.origin.x += kTabStripXPadding; |
- tabFrame.size.width -= kTabStripXPadding; |
- } |
+ tabFrame.size.width -= kTabStripXPadding; |
tabFrame.origin.y += kTabLabelTopPadding; |
tabFrame.size.height -= kTabLabelTopPadding; |
@@ -464,7 +472,7 @@ NSColor* IdentityVerifiedTextColor() { |
textSize.width + 2 * kTabLabelXPadding); |
[segmentedControl_ setWidth:tabWidth + kTabStripXPadding |
forSegment:WebsiteSettingsUI::TAB_ID_PERMISSIONS]; |
- [segmentedControl_ setWidth:tabWidth |
+ [segmentedControl_ setWidth:tabWidth + kTabStripXPadding |
Andre
2015/04/04 00:17:49
Give padding to this segment as well, because on R
|
forSegment:WebsiteSettingsUI::TAB_ID_CONNECTION]; |
[segmentedControl_ setFont:[textAttributes objectForKey:NSFontAttributeName]]; |