diff --git a/lcl/include/wincontrol.inc b/lcl/include/wincontrol.inc index 692d31fa12..7deb478dc4 100644 --- a/lcl/include/wincontrol.inc +++ b/lcl/include/wincontrol.inc @@ -7135,6 +7135,9 @@ begin if not HandleAllocated then RaiseGDBException('Handle creation failed creating '+DbgSName(Self)); //debugln('TWinControl.CreateWnd update constraints ... ',DbgSName(Self)); + TWSWinControlClass(WidgetSetClass).SetBiDiMode(Self, + UseRightToLeftAlignment, UseRightToLeftReading, UseRightToLeftScrollBar); + Constraints.UpdateInterfaceConstraints; InvalidateClientRectCache(False); TWSWinControlClass(WidgetSetClass).ConstraintsChange(Self); diff --git a/lcl/interfaces/gtk2/gtk2wscontrols.pp b/lcl/interfaces/gtk2/gtk2wscontrols.pp index 2942c05cc6..708973cfa1 100644 --- a/lcl/interfaces/gtk2/gtk2wscontrols.pp +++ b/lcl/interfaces/gtk2/gtk2wscontrols.pp @@ -242,19 +242,11 @@ class procedure TGtk2WSWinControl.SetBiDiMode(const AWinControl : TWinControl; const WidgetDirection : array[boolean] of longint = (GTK_TEXT_DIR_LTR, GTK_TEXT_DIR_RTL); begin - gtk_widget_set_direction(PGtkWidget(AWinControl.Handle), WidgetDirection[UseRightToLeftAlign]); - - if UseRightToLeftReading then // By default GTK2 support bidi regardless of the layout - begin - end - else begin - end; + if not WSCheckHandleAllocated(AWinControl, 'SetBiDiMode') then + Exit; - if UseRightToLeftScrollBar then // I don't know how to do it for now (if possible) - begin - end - else begin - end; + gtk_widget_set_direction(PGtkWidget(AWinControl.Handle), + WidgetDirection[UseRightToLeftAlign]); end; diff --git a/lcl/interfaces/qt/qtwidgets.pas b/lcl/interfaces/qt/qtwidgets.pas index 9e86b419e8..fd4d96bca3 100644 --- a/lcl/interfaces/qt/qtwidgets.pas +++ b/lcl/interfaces/qt/qtwidgets.pas @@ -1611,8 +1611,7 @@ begin ChildOfComplexWidget := ccwNone; // creates the widget Widget := CreateWidget(FParams); - if LCLObject.BiDiMode = bdRightToLeft then - setLayoutDirection(QtRightToLeft); + // retrieve default cursor on create FDefaultCursor := QCursor_create(); QWidget_cursor(Widget, FDefaultCursor);