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
-~----------~----~----~----~------~----~------~--~---

Reply via email to