diff --git a/lcl/interfaces/gtk2/gtk2wsforms.pp b/lcl/interfaces/gtk2/gtk2wsforms.pp index 0692b567a0..27a618d938 100644 --- a/lcl/interfaces/gtk2/gtk2wsforms.pp +++ b/lcl/interfaces/gtk2/gtk2wsforms.pp @@ -76,6 +76,7 @@ type protected class procedure SetCallbacks(const AWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); virtual; published + class function CanFocus(const AWinControl: TWinControl): Boolean; override; class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; class procedure ScrollBy(const AWinControl: TScrollingWinControl; const DeltaX, DeltaY: integer); override; class procedure SetIcon(const AForm: TCustomForm; const Small, Big: HICON); override; @@ -265,6 +266,19 @@ begin gtk_signal_func(@Gtk2FormEvent), AWidgetInfo^.LCLObject); end; +class function TGtk2WSCustomForm.CanFocus(const AWinControl: TWinControl + ): Boolean; +var + Widget: PGtkWidget; +begin + if AWinControl.HandleAllocated then + begin + Widget := PGtkWidget(AWinControl.Handle); + Result := GTK_WIDGET_VISIBLE(Widget) and GTK_WIDGET_SENSITIVE(Widget); + end else + Result := False; +end; + class function TGtk2WSCustomForm.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; var