| Index: chrome/browser/ui/cocoa/location_bar/keyword_hint_decoration.mm
|
| diff --git a/chrome/browser/ui/cocoa/location_bar/keyword_hint_decoration.mm b/chrome/browser/ui/cocoa/location_bar/keyword_hint_decoration.mm
|
| index e08e437d1790296812b3872be91407535b295a96..4bfbe28d068caf4c62fda62df4534b42277d0af1 100644
|
| --- a/chrome/browser/ui/cocoa/location_bar/keyword_hint_decoration.mm
|
| +++ b/chrome/browser/ui/cocoa/location_bar/keyword_hint_decoration.mm
|
| @@ -11,6 +11,7 @@
|
| #include "base/logging.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| +#include "chrome/browser/ui/cocoa/l10n_util.h"
|
| #include "chrome/grit/generated_resources.h"
|
| #include "chrome/grit/theme_resources.h"
|
| #include "skia/ext/skia_utils_mac.h"
|
| @@ -115,16 +116,19 @@ void KeywordHintDecoration::DrawInFrame(NSRect frame, NSView* control_view) {
|
|
|
| const bool draw_full = NSWidth(frame) > image_width;
|
|
|
| - if (draw_full) {
|
| - NSRect prefix_rect = frame;
|
| - const CGFloat prefix_width = GetLabelSize(hint_prefix_, attributes_).width;
|
| - DCHECK_GE(NSWidth(prefix_rect), prefix_width);
|
| - DrawLabel(hint_prefix_, attributes_, prefix_rect);
|
| + BOOL is_rtl = cocoa_l10n_util::ShouldDoExperimentalRTLLayout();
|
| + NSString* left_string = is_rtl ? hint_suffix_ : hint_prefix_;
|
| + NSString* right_string = is_rtl ? hint_prefix_ : hint_suffix_;
|
|
|
| + if (draw_full) {
|
| + NSRect left_rect = frame;
|
| + const CGFloat left_width = GetLabelSize(left_string, attributes_).width;
|
| + left_rect.size.width = left_width;
|
| + DrawLabel(left_string, attributes_, left_rect);
|
| // The image should be drawn at a pixel boundary, round the prefix
|
| // so that partial pixels aren't oddly close (or distant).
|
| - frame.origin.x += std::floor(prefix_width + 0.5) + kHintImagePadding;
|
| - frame.size.width -= std::floor(prefix_width + 0.5) + kHintImagePadding;
|
| + frame.origin.x += std::floor(left_width + 0.5) + kHintImagePadding;
|
| + frame.size.width -= std::floor(left_width + 0.5) + kHintImagePadding;
|
| }
|
|
|
| NSRect image_rect = NSInsetRect(frame, 0.0, kHintImageYInset);
|
| @@ -139,15 +143,15 @@ void KeywordHintDecoration::DrawInFrame(NSRect frame, NSView* control_view) {
|
| frame.size.width -= NSWidth(image_rect);
|
|
|
| if (draw_full) {
|
| - NSRect suffix_rect = frame;
|
| - const CGFloat suffix_width = GetLabelSize(hint_suffix_, attributes_).width;
|
| + NSRect right_rect = frame;
|
| + const CGFloat right_width = GetLabelSize(right_string, attributes_).width;
|
|
|
| // Draw the text kHintImagePadding away from [tab] icon so that
|
| // equal amount of space is maintained on either side of the icon.
|
| // This also ensures that suffix text is at the same distance
|
| // from [tab] icon in different web pages.
|
| - suffix_rect.origin.x += kHintImagePadding;
|
| - DCHECK_GE(NSWidth(suffix_rect), suffix_width);
|
| - DrawLabel(hint_suffix_, attributes_, suffix_rect);
|
| + right_rect.origin.x += kHintImagePadding;
|
| + DCHECK_GE(NSWidth(right_rect), right_width);
|
| + DrawLabel(right_string, attributes_, right_rect);
|
| }
|
| }
|
|
|