diff --git a/lcl/interfaces/gtk2/gtk2wscontrols.pp b/lcl/interfaces/gtk2/gtk2wscontrols.pp index 697ed04b91..1722ebf602 100644 --- a/lcl/interfaces/gtk2/gtk2wscontrols.pp +++ b/lcl/interfaces/gtk2/gtk2wscontrols.pp @@ -242,15 +242,25 @@ class procedure TGtk2WSWinControl.SetBiDiMode(const AWinControl : TWinControl; ); const WidgetDirection : array[boolean] of longint = (GTK_TEXT_DIR_LTR, GTK_TEXT_DIR_RTL); +var + Info: PWidgetInfo; begin if not WSCheckHandleAllocated(AWinControl, 'SetBiDiMode') then Exit; - gtk_widget_set_direction(PGtkWidget(AWinControl.Handle), WidgetDirection[UseRightToLeftAlign]); + Info := GetWidgetInfo(PGtkWidget(AWinControl.Handle)); + if Info <> nil then + begin + if Info^.CoreWidget <> nil then + gtk_widget_set_direction(Info^.CoreWidget, + WidgetDirection[UseRightToLeftAlign]); + if Info^.ClientWidget <> nil then + gtk_widget_set_direction(Info^.ClientWidget, + WidgetDirection[UseRightToLeftAlign]); + end; end; - function Gtk1GetText(const AWinControl: TWinControl; var AText: String): Boolean; var CS: PChar;