Comment #13 on issue 6099 by [email protected]: bad display of
multi-line English message in pop-ups
http://code.google.com/p/chromium/issues/detail?id=6099
The following revision refers to this bug:
http://src.chromium.org/viewvc/chrome?view=rev&revision=10178
------------------------------------------------------------------------
r10178 | [email protected] | 2009-02-22 22:00:44 -0800 (Sun, 22 Feb 2009) |
45 lines
Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/jsmessage_box_handler_win.cc?r1=10178&r2=10177
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/gfx/chrome_canvas_win.cc?r1=10178&r2=10177
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/l10n_util.cc?r1=10178&r2=10177
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/l10n_util.h?r1=10178&r2=10177
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/l10n_util_unittest.cc?r1=10178&r2=10177
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/views/label.cc?r1=10178&r2=10177
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/views/label.h?r1=10178&r2=10177
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/views/label_unittest.cc?r1=10178&r2=10177
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/views/message_box_view.cc?r1=10178&r2=10177
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/views/message_box_view.h?r1=10178&r2=10177
This CL fixes issue 6099 -- bad display of multi-line English message in
pop ups.
(http://crbug.com/6099)
Currently, in RTL locales, a pure *multi-line* English message is displayed
as right aligned and has RTL directionality (such as the ending punctuation
appears at the very left).
Single-line message works fine.
I do not know why, but simply putting LRE-PDF around a multi-line English
text which has the following flags
DT_WORDBREAK | DT_RTLREADING
wont render the English message as LTR.
We have to remove the DT_RTLREADING to render multi-line English message
correctly in LTR direction.
The fix is that in RTL locales, for JavaScript message, if the message is
pure English, the alignment is set to be left-aligned, and the
directionality is set to be left-to-right. If the message is mixed BiDi
text, the alignment and the directionality is determined by the
directionality of the first character with strong directionality in the
text.
JavaScript message is a MessageBoxView, and the message is a view::Label.
Both MessageBoxView and Label are used by Chrome's UI as well.
If the message is one of Chrome UI's, the alignment and directionality of
the message should be taken from that of the UI's.
In order to distinguish where the message comes from, a new flag
kFlagWebMessage is introduced in MessageBoxView, and a new argument is
introduced in Label::SetHorizontalAlignment() to control whether the
alignment need to be flipped or not for RTL locales.
Consequently, quite a few files which calls Label::SetHorizontalAlignment()
are changed.
The main changes are in 5 areas. Other files are changed due to the
signature change of Label::SetHorizontalAlignment().
1. jsmessage_box_handler.cc: pass in extra flag kFlagWebPage when creating
MessageBoxView to indicate the message box is one from a web page, not from
Chrome UI.
2. l10n_util.h/.cc
added function GetFirstStrongDirection()
3. label.h/.cc
a new argument is introduced in Label::SetHorizontalAlignment() to control
whether the alignment need to be flipped or not for RTL locales.
4. message_box_view.cc
when init message box view, if the flag is kFlagWebPage, get the text
directionality from the text itself (not Chrome UI's) and calls
Label::SetHorizontalAlignment() to not resetting the flag for RTL locales.
5. chrome_canvas_win.cc
5.1 ComputeFormatFlags()
only set flag DT_RTLREADING for RTL locales if the text contains strong RTL
characters and the alignment is RIGHT aligned. All labels of Chrome's UI
and other Chrome UI components in RTL locales have been set as (or flipped
to) RIGHT aligned.
5.2 DoDrawText()
Only adjust string for locale is the reading direction is DT_RTLREADING.
Review URL: http://codereview.chromium.org/18863
------------------------------------------------------------------------
--
You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings
--~--~---------~--~----~------------~-------~--~----~
Automated mail from issue updates at http://crbug.com/
Subscription options: http://groups.google.com/group/chromium-bugs
-~----------~----~----~----~------~----~------~--~---