View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0019303||Lazarus||Other||public||2011-05-06 22:11||2017-11-19 10:24|
|Reporter||Juha Manninen||Assigned To|
|Priority||normal||Severity||minor||Reproducibility||have not tried|
|Summary||0019303: BiDi meta issue|
|Description||BiDi (RightToLeft - LeftToRight) related issues can be connected here as relationships.|
|Fixed in Revision|
|related to||0019267||closed||Juha Manninen||Patches||Patch to add BiDiMode and ParentBiDiMode to TFileListBox.|
|related to||0019268||closed||Juha Manninen||Patches||Patch to add BiDiMode and ParentBiDiMode properties to 5 components.|
|related to||0019255||closed||Juha Manninen||Patches||Patch for TPanel to correct TPanel.Caption when BiDiMode:= bdRightToLeft.|
|related to||0018949||closed||Vincent Snijders||Packages||TPanel.Caption is not RightToLeft when BiDiMode:= beRightToLeft|
|related to||0019158||closed||Maxim Ganetsky||Packages||TCheckListBox does not mirror properly when BiDiMode:= bdRightToLeft.|
|related to||0019154||closed||Vincent Snijders||Lazarus||TStaticTextTStaticText.Alignment does not work when TStaticText.BiDiMode:= bdRightToLeft.|
|related to||0018918||closed||Jesus Reyes||Packages||TStringGrid is unusable when BiDiMode set to bdRightToLeft|
|related to||0018942||closed||Vincent Snijders||Packages||Data Controls do not support BiDiMode|
|related to||0012343||resolved||Bart Broersma||Lazarus||TCheckbox.Alignment is mising|
|related to||0019364||closed||Maxim Ganetsky||Packages||TBitBtn does not draw Caption correctly when BiDiMode is RightToLeft.|
|related to||0019824||closed||Juha Manninen||Lazarus||TLabeledEdit does not support BiDiMode|
|related to||0019990||closed||Jesus Reyes||Lazarus||Please add property BiDiMode and property ParentBiDiMode|
|related to||0025408||closed||Maxim Ganetsky||Lazarus||BiDiMode and FlipChildren issues with TRadioGroup, TCheckGroup and TCheckedListbox|
|related to||0025450||closed||Maxim Ganetsky||Lazarus||Text direction in TCheckList is incorrect when BiDiMode<>bdLeftToRight|
|parent of||0019131||acknowledged||Packages||RTL Forms do not mirror properly|
|parent of||0019119||acknowledged||Lazarus||RightToLeft of of the component ListView|
|parent of||0019442||acknowledged||Packages||TToggleBox Alignment and BiDiMode|
|parent of||0019671||acknowledged||Lazarus||TStatusBar does not support BiDiMode|
|related to||0019386||closed||Vincent Snijders||Lazarus||Add LeftToRight-RightToLeft Design-Time feature?|
|related to||0019654||closed||Jesus Reyes||Lazarus||TCheckGroup produces Error when BiDiMode:= bdRightToLeft|
|Not all the children of this issue are yet resolved or closed.|
||Should they be attached as "child of"?|
Avishai says that on Windows Bidi should be achieved in the CreateParams method:
Params.ExStyle:= Params.ExStyle or WS_EX_LAYOUTRTL;
Take e.g. a look at related issue 0019671, where I managed to "mimick" RTL with regard to the panels, but the SizeGrip stays at the right hand side (and covers part of the text of panel in that case).
Should BiDi be totally managed at the WS level?
At present "Params.ExStyle:= Params.ExStyle or WS_EX_LAYOUTRTL;" can not be used with Lazarus because there is a bug related to TCanvas. When TCanvas is mirrored it becomes corrupted and can not be used if Themes are active. Once this bug is resolved most of the problems with RightToLeft can be easily overcome. It is also a question of Delphi compatibility.
check on the Forum for some small bit of information. http://forum.lazarus.freepascal.org/index.php/topic,22881.0.html
||@Vincent: Target 1.2.0 seems a little bit optimistic for this?|
For MS Windows ONLY.
The following is a partial list of components that I have tested using MS Mirroring technology and found that they work with no additional code required. Their descendents also work, so we are talking about a signifcant number of components that could be made to supprt RightToLeft by fixing the bug in TCanvas. As it stands at the moment, Lazarus can not claim to support RightToLeft applicatrions on the MS Windows platform.
TStringGrid can be added to this list with minimal tweeking to the InPlaceEditor.
With some additional code, MessageDlg and TPopupNotifier also work well.
> For MS Windows ONLY.
Lazarus is cross-platform. MS Windows only is not enough.
> ... could be made to supprt RightToLeft by fixing the bug in TCanvas.
> Lazarus can not claim to support RightToLeft applicatrions on the MS Windows platform.
Repeating the same thing does not help in implementing it.
We need something with substance now, like source code in form of a patch.
I am aware that Lazarus is cross-platform. I have tried several times both on the Lazarus Forums and other Forums as well to find out what is required for RightToLeft on other platforms but have never gotten an answer.
For my original report about the TCanvas bug see bug report 0020506. Hopefully it explains the TCanvas bug well enough. But basically if Themes are active and TCanvas is Mirrored the Canvas becomes corrupted and can't be used.
I am not a programmer. If I had the skills I would gladly provide a patch, but I can't even find where the bug is let alone fix it. It will take someone with a better understanding of Lazarus/FPC code to fix this.
@Avishai: thanks for your input and for testing al those components.
We may need to rethink the way BiDi support is implemented currently, but that seems to be a massive undertaking, so it's unlikely it'll be fixed in the near future.
Maybe we need more developers who natively use "RightToLeft".
For me, it's almost impossible to test.
Thanks Bart, I just didn't want to see you spending time trying to fix TStatusBar, at least for MS Windows, when I know that the 'Windows way' makes it unnecessary.
I'm not so sure that it is such a massive undertaking. If a real programmer can locate and fix the TCanvas issue the huge majority of the task is done. I disabled Themes with a hard nasty hack, but it allows me to produce true RightToLeft applications. Of course there are still problems but they aren't that bad and workarounds can 'fix' many of them until real solutions are found.
I agree that we need more native 'RightToLeft' users (hopefully much more skilled than I) but we won't get them until Lazarus is able to produce at least minimal RightToleft application.
As for Testing, I would be thrilled to do whatever testing I can. I just wish I could help in some way with the code but I am not qualified.
|2011-05-06 22:11||Juha Manninen||New Issue|
|2011-05-06 22:11||Juha Manninen||LazTarget||=> -|
|2011-05-06 22:12||Juha Manninen||Relationship added||related to 0019267|
|2011-05-06 22:12||Juha Manninen||Relationship added||related to 0019268|
|2011-05-06 22:13||Juha Manninen||Relationship added||related to 0019255|
|2011-05-06 22:13||Juha Manninen||Relationship added||related to 0018949|
|2011-05-06 22:15||Juha Manninen||Relationship added||related to 0019158|
|2011-05-06 22:15||Juha Manninen||Relationship added||related to 0019154|
|2011-05-06 22:17||Juha Manninen||Relationship added||related to 0019131|
|2011-05-06 22:18||Juha Manninen||Relationship added||related to 0019119|
|2011-05-06 22:22||Juha Manninen||Relationship added||related to 0018918|
|2011-05-06 22:25||Juha Manninen||Relationship added||related to 0018942|
|2011-05-06 22:35||Juha Manninen||Relationship added||related to 0012343|
|2011-05-16 22:32||Juha Manninen||Relationship added||related to 0019364|
|2011-05-23 14:36||Juha Manninen||Relationship added||related to 0019386|
|2011-05-30 20:40||Juha Manninen||Relationship added||related to 0019442|
|2011-06-29 09:12||Juha Manninen||Relationship added||related to 0019654|
|2011-08-12 12:17||Juha Manninen||Relationship added||related to 0019824|
|2011-08-16 17:54||Juha Manninen||Relationship added||related to 0019990|
|2011-09-23 22:46||Juha Manninen||Relationship added||related to 0020334|
|2011-09-23 23:07||Juha Manninen||Relationship deleted||related to 0020334|
|2011-10-06 14:38||Vincent Snijders||LazTarget||- => 1.2|
|2011-10-06 14:38||Vincent Snijders||Status||new => acknowledged|
|2011-10-06 14:38||Vincent Snijders||Target Version||=> 1.2.0|
|2012-05-15 19:16||Zaher Dirkey||Tag Attached: bidi|
|2013-12-23 22:05||Maxim Ganetsky||Relationship added||related to 0025408|
|2013-12-23 22:11||Maxim Ganetsky||Relationship added||related to 0025450|
|2013-12-27 16:02||Bart Broersma||Note Added: 0072062|
|2013-12-27 16:02||Bart Broersma||Relationship added||related to 0019671|
|2013-12-27 16:08||Bart Broersma||Note Added: 0072063|
|2013-12-27 23:21||Avishai||Note Added: 0072068|
|2013-12-28 10:14||Avishai||File Added: DelphiR2L02.PNG|
|2013-12-28 15:23||Bart Broersma||Note Added: 0072076|
|2013-12-30 18:25||Bart Broersma||LazTarget||1.2 => 1.4|
|2013-12-30 18:25||Bart Broersma||Target Version||1.2.0 => 1.4|
|2013-12-31 11:11||Avishai||Note Added: 0072130|
|2013-12-31 15:01||Juha Manninen||Note Added: 0072132|
|2013-12-31 15:41||Avishai||Note Added: 0072133|
|2013-12-31 16:03||Bart Broersma||Note Added: 0072139|
|2013-12-31 16:21||Avishai||Note Added: 0072140|
|2014-09-10 14:16||Juha Manninen||LazTarget||1.4 => -|
|2014-09-10 14:16||Juha Manninen||Target Version||1.4 =>|
|2017-11-19 10:22||Juha Manninen||Relationship replaced||parent of 0019131|
|2017-11-19 10:23||Juha Manninen||Relationship replaced||parent of 0019119|
|2017-11-19 10:24||Juha Manninen||Relationship replaced||parent of 0019442|
|2017-11-19 10:24||Juha Manninen||Relationship replaced||parent of 0019671|