| Index: ui/views/controls/label.cc
|
| diff --git a/ui/views/controls/label.cc b/ui/views/controls/label.cc
|
| index f907f9f51ae1959ce9f051b9c277938bc8d9f45a..70130e8998712ee3fc07cacdc8b0dc2b86e2ee34 100644
|
| --- a/ui/views/controls/label.cc
|
| +++ b/ui/views/controls/label.cc
|
| @@ -112,12 +112,15 @@ void Label::ClearEmbellishing() {
|
| }
|
|
|
| void Label::SetHorizontalAlignment(Alignment alignment) {
|
| - // If the View's UI layout is right-to-left and directionality_mode_ is
|
| - // USE_UI_DIRECTIONALITY, we need to flip the alignment so that the alignment
|
| - // settings take into account the text directionality.
|
| - if (base::i18n::IsRTL() && (directionality_mode_ == USE_UI_DIRECTIONALITY) &&
|
| - (alignment != ALIGN_CENTER))
|
| + // TODO(msw): Change Alignment to LEADING/TRAILING?
|
| + // TODO(msw): Check (and potentially flip) the alignment when setting text?
|
| + // TODO(msw): Check against multi-line label regressions (not RenderText)...
|
| + // If the string's directionality is right-to-left, flip the alignment.
|
| + if (base::i18n::GetFirstStrongCharacterDirection(text()) ==
|
| + base::i18n::RIGHT_TO_LEFT &&
|
| + alignment != ALIGN_CENTER) {
|
| alignment = (alignment == ALIGN_LEFT) ? ALIGN_RIGHT : ALIGN_LEFT;
|
| + }
|
| if (horiz_alignment_ != alignment) {
|
| horiz_alignment_ = alignment;
|
| SchedulePaint();
|
| @@ -373,7 +376,6 @@ void Label::Init(const string16& text, const gfx::Font& font) {
|
| elide_in_middle_ = false;
|
| is_email_ = false;
|
| collapse_when_hidden_ = false;
|
| - directionality_mode_ = USE_UI_DIRECTIONALITY;
|
| paint_as_focused_ = false;
|
| has_focus_border_ = false;
|
| enabled_shadow_color_ = 0;
|
| @@ -444,15 +446,6 @@ int Label::ComputeDrawStringFlags() const {
|
| if (SkColorGetA(background_color_) != 0xFF)
|
| flags |= gfx::Canvas::NO_SUBPIXEL_RENDERING;
|
|
|
| - if (directionality_mode_ == AUTO_DETECT_DIRECTIONALITY) {
|
| - base::i18n::TextDirection direction =
|
| - base::i18n::GetFirstStrongCharacterDirection(text_);
|
| - if (direction == base::i18n::RIGHT_TO_LEFT)
|
| - flags |= gfx::Canvas::FORCE_RTL_DIRECTIONALITY;
|
| - else
|
| - flags |= gfx::Canvas::FORCE_LTR_DIRECTIONALITY;
|
| - }
|
| -
|
| if (!is_multi_line_)
|
| return flags;
|
|
|
| @@ -499,18 +492,10 @@ void Label::CalculateDrawStringParams(string16* paint_text,
|
| // preference and use it when calling ElideUrl.
|
| *paint_text =
|
| ui::ElideUrl(url_, font_, GetAvailableRect().width(), std::string());
|
| -
|
| - // An URLs is always treated as an LTR text and therefore we should
|
| - // explicitly mark it as such if the locale is RTL so that URLs containing
|
| - // Hebrew or Arabic characters are displayed correctly.
|
| - //
|
| - // Note that we don't check the View's UI layout setting in order to
|
| - // determine whether or not to insert the special Unicode formatting
|
| - // characters. We use the locale settings because an URL is always treated
|
| - // as an LTR string, even if its containing view does not use an RTL UI
|
| - // layout.
|
| - *paint_text = base::i18n::GetDisplayStringInLTRDirectionality(
|
| - *paint_text);
|
| + // Ensure that URLs have LTR directionality.
|
| + // TODO(msw): Check cases like "/\x05d0", "://\x05d0".
|
| + DCHECK_EQ(base::i18n::GetFirstStrongCharacterDirection(*paint_text),
|
| + base::i18n::LEFT_TO_RIGHT);
|
| } else if (is_email_) {
|
| *paint_text = ui::ElideEmail(text_, font_, GetAvailableRect().width());
|
| } else if (elide_in_middle_) {
|
|
|