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.

_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to