View Issue Details

IDProjectCategoryView StatusLast Update
0019303LazarusOtherpublic2017-11-19 10:24
ReporterJuha ManninenAssigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
Status acknowledgedResolutionopen 
Product VersionProduct Build 
Target VersionFixed in Version 
Summary0019303: BiDi meta issue
DescriptionBiDi (RightToLeft - LeftToRight) related issues can be connected here as relationships.
Tagsbidi
Fixed in Revision
LazTarget-
Widgetset
Attached Files

Relationships

related to 0019267 closedJuha Manninen Patches Patch to add BiDiMode and ParentBiDiMode to TFileListBox. 
related to 0019268 closedJuha Manninen Patches Patch to add BiDiMode and ParentBiDiMode properties to 5 components. 
related to 0019255 closedJuha Manninen Patches Patch for TPanel to correct TPanel.Caption when BiDiMode:= bdRightToLeft. 
related to 0018949 closedVincent Snijders Packages TPanel.Caption is not RightToLeft when BiDiMode:= beRightToLeft 
related to 0019158 closedMaxim Ganetsky Packages TCheckListBox does not mirror properly when BiDiMode:= bdRightToLeft. 
related to 0019154 closedVincent Snijders Lazarus TStaticTextTStaticText.Alignment does not work when TStaticText.BiDiMode:= bdRightToLeft. 
related to 0018918 closedJesus Reyes Packages TStringGrid is unusable when BiDiMode set to bdRightToLeft 
related to 0018942 closedVincent Snijders Packages Data Controls do not support BiDiMode 
related to 0012343 resolvedBart Broersma Lazarus TCheckbox.Alignment is mising 
related to 0019364 closedMaxim Ganetsky Packages TBitBtn does not draw Caption correctly when BiDiMode is RightToLeft. 
related to 0019824 closedJuha Manninen Lazarus TLabeledEdit does not support BiDiMode 
related to 0019990 closedJesus Reyes Lazarus Please add property BiDiMode and property ParentBiDiMode 
related to 0025408 closedMaxim Ganetsky Lazarus BiDiMode and FlipChildren issues with TRadioGroup, TCheckGroup and TCheckedListbox 
related to 0025450 closedMaxim 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 closedVincent Snijders Lazarus Add LeftToRight-RightToLeft Design-Time feature? 
related to 0019654 closedJesus Reyes Lazarus TCheckGroup produces Error when BiDiMode:= bdRightToLeft 
Not all the children of this issue are yet resolved or closed.

Activities

Bart Broersma

2013-12-27 16:02

developer   ~0072062

Should they be attached as "child of"?

Bart Broersma

2013-12-27 16:08

developer   ~0072063

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[0] in that case).

Should BiDi be totally managed at the WS level?

Avishai

2013-12-27 23:21

reporter   ~0072068

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

Avishai

2013-12-28 10:14

reporter  

DelphiR2L02.PNG (38,918 bytes)
DelphiR2L02.PNG (38,918 bytes)

Bart Broersma

2013-12-28 15:23

developer   ~0072076

@Vincent: Target 1.2.0 seems a little bit optimistic for this?

Avishai

2013-12-31 11:11

reporter   ~0072130

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.

TForm
TMenu
TButton
TLabel
TEdit
TMemo
TToggleBox
TCheckBox
TRadioButton
TListBox
TScrollBar
TGroupBox
TPanel
TFrame
TStaticText
TCheckListBox
TScrollBox
TTrackBar
TProgressBar
TTreeView
TStatusBar
TPageControl
TBarChart

TStringGrid can be added to this list with minimal tweeking to the InPlaceEditor.

With some additional code, MessageDlg and TPopupNotifier also work well.

Juha Manninen

2013-12-31 15:01

developer   ~0072132

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

Which bug?

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

Avishai

2013-12-31 15:41

reporter   ~0072133

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.

Bart Broersma

2013-12-31 16:03

developer   ~0072139

@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.

Avishai

2013-12-31 16:21

reporter   ~0072140

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.

Issue History

Date Modified Username Field Change
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