Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1816)

Unified Diff: chrome/browser/ui/cocoa/location_bar/bubble_decoration.mm

Issue 2563593003: [Mac] RTL-aware rendering for BubbleDecoration and SecurityStateBubbleDecoration (Closed)
Patch Set: Style Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/location_bar/security_state_bubble_decoration.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/cocoa/location_bar/bubble_decoration.mm
diff --git a/chrome/browser/ui/cocoa/location_bar/bubble_decoration.mm b/chrome/browser/ui/cocoa/location_bar/bubble_decoration.mm
index 83dd34c18e1cac2d0dd26e4bc1bc06315c3a8ff5..da2d46ffc062ef55466c4ca5b004f249924213ab 100644
--- a/chrome/browser/ui/cocoa/location_bar/bubble_decoration.mm
+++ b/chrome/browser/ui/cocoa/location_bar/bubble_decoration.mm
@@ -8,6 +8,7 @@
#include "base/logging.h"
#include "base/mac/foundation_util.h"
+#include "chrome/browser/ui/cocoa/l10n_util.h"
#import "chrome/browser/ui/cocoa/themed_window.h"
#include "skia/ext/skia_utils_mac.h"
#import "ui/base/cocoa/nsview_additions.h"
@@ -108,12 +109,20 @@ NSRect BubbleDecoration::GetBackgroundFrame(NSRect frame) {
void BubbleDecoration::DrawInFrame(NSRect frame, NSView* control_view) {
const NSRect decoration_frame = NSInsetRect(frame, 0.0, kImageFrameYInset);
- CGFloat text_offset = NSMinX(decoration_frame);
+ CGFloat text_left_offset = NSMinX(decoration_frame);
+ CGFloat text_right_offset = NSMaxX(decoration_frame);
+ const BOOL is_rtl = cocoa_l10n_util::ShouldDoExperimentalRTLLayout();
+
if (image_) {
// Center the image vertically.
const NSSize image_size = [image_ size];
NSRect image_rect = decoration_frame;
- image_rect.origin.x += kLeftSidePadding;
+ if (is_rtl) {
+ image_rect.origin.x =
+ NSMaxX(decoration_frame) - image_size.width - kLeftSidePadding;
+ } else {
+ image_rect.origin.x += kLeftSidePadding;
+ }
image_rect.origin.y +=
std::floor((NSHeight(decoration_frame) - image_size.height) / 2.0);
image_rect.size = image_size;
@@ -123,16 +132,21 @@ void BubbleDecoration::DrawInFrame(NSRect frame, NSView* control_view) {
fraction:1.0
respectFlipped:YES
hints:nil];
- text_offset = NSMaxX(image_rect) + kIconLabelPadding;
+ if (is_rtl)
+ text_right_offset = NSMinX(image_rect) - kIconLabelPadding;
+ else
+ text_left_offset = NSMaxX(image_rect) + kIconLabelPadding;
}
// Draw the divider and set the text color.
NSBezierPath* line = [NSBezierPath bezierPath];
+ const CGFloat divider_x_position =
+ is_rtl ? NSMinX(decoration_frame) + DividerPadding()
+ : NSMaxX(decoration_frame) - DividerPadding();
+
[line setLineWidth:1];
- [line moveToPoint:NSMakePoint(NSMaxX(decoration_frame) - DividerPadding(),
- NSMinY(decoration_frame))];
- [line lineToPoint:NSMakePoint(NSMaxX(decoration_frame) - DividerPadding(),
- NSMaxY(decoration_frame))];
+ [line moveToPoint:NSMakePoint(divider_x_position, NSMinY(decoration_frame))];
+ [line lineToPoint:NSMakePoint(divider_x_position, NSMaxY(decoration_frame))];
bool in_dark_mode = [[control_view window] inIncognitoModeWithSystemTheme];
[GetDividerColor(in_dark_mode) set];
@@ -144,8 +158,8 @@ void BubbleDecoration::DrawInFrame(NSRect frame, NSView* control_view) {
if (label_) {
NSRect text_rect = frame;
- text_rect.origin.x = text_offset;
- text_rect.size.width = NSMaxX(decoration_frame) - NSMinX(text_rect);
+ text_rect.origin.x = text_left_offset;
+ text_rect.size.width = text_right_offset - text_left_offset;
// Transform the coordinate system to adjust the baseline on Retina. This is
// the only way to get fractional adjustments.
gfx::ScopedNSGraphicsContextSaveGState saveGraphicsState;
« no previous file with comments | « no previous file | chrome/browser/ui/cocoa/location_bar/security_state_bubble_decoration.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698