[Lazarus] BidiMode improvments patch
Paul Ishenin
webpirat at mail.ru
Mon May 25 23:55:33 CEST 2009
Zaher Dirkey wrote:
> First, I know i touch a sensitive code but we can discuss about it.
>
> 1 - Added TVisualCompont it is between TLCLComponent and and TControl,
> it has a properties and methods that have visual effect but still it
> unvisible at form. i will use it for BidiMode and ParentBidimode
> TMenu, TPopupMenu, TScreen, TTrayIcon and TPopupNotifier and any
> component need bidimode , TTheme and TToolbar...
>
> Now it can detect if the Component was inherited from TVisualComponent
> to make loop when BidiMode changed in the form/control.
>
> Remove duplicating of implement the same code in both TControl and
> TMenu and every TComponent need the BidiMode.
>
> I kept UseRightToLeftScrollBar in TControl
>
> TApplicationProperties must *not* inherit it from TVisualComponent it
> is like TApplication have no ParentBidiMode
>
> Fix: TLabel alignment when BidiMode = bdRightToLeft (compatible with Delphi)
>
I would leave class hierarchi as is. It is not a big problem to copy
property BidiMode to the TMenu, TTrayIcon or anything else.
> 2 - Add: in FlipChildren now flip the Anchors also.
>
> 3- Added: AutoFlipChildren to TApplication, now when change the
> BidiMode of Applcication it change the BidiMode of Forms and
> FlipChildren for it.
>
This can Mattias review mostly.
> 4 - I removed this code from application.inc (see below) in
> TApplication.Create, because :
> * BidiMode of Application depend on developer choice not depend on
> system locale.
> * What if i built an English tools/application then run it in right to
> left system locale, it will be launch as RightToLeft while it is not
> designed for that.
> * If we use a multinlanguage, BidiMode changed depend on the language
> chosen by user, while every developer has own translation
> model/library not only GetText.
> it make confused with BidiMode of TForm when the form has ParentBidiMode
> Also it force to compile GetText while i am not use GetText.
> --------------- this code i commented temporary
> {$ifndef wince}// remove ifdef when gettext is fixed
> GetLanguageIDs(LangDefault, LangFallback);
> if LangDefault <> '' then
> FBidiMode := BidiModeMap[IsRTLLang(LangDefault)]
> else
> FBidiMode := BidiModeMap[IsRTLLang(LangFallback)];
> {$else}
> FBidiMode := bdLeftToRight;
> {$endif}
> --------------
>
> If you not like TVisualCompont i can merge the code of BidiMode of it
> to TLCLComponent, but not all components have ParentBidiMode Like as
> TScreen, TApplicationProperties for example.
>
This is ok. That code was there temporary. It waited for better solution.
Best regards,
Paul Ishenin.
More information about the Lazarus
mailing list