From 2d8ade5a97f3f8d552ada59ce6a8c30e315b5c66 Mon Sep 17 00:00:00 2001 From: dmitry Date: Sat, 15 Jun 2019 18:52:15 +0000 Subject: [PATCH] cocoa: initial (out of event loop) focus setting git-svn-id: trunk@61398 - --- lcl/interfaces/cocoa/cocoawinapi.inc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lcl/interfaces/cocoa/cocoawinapi.inc b/lcl/interfaces/cocoa/cocoawinapi.inc index eb47bd1438..bc85d32417 100644 --- a/lcl/interfaces/cocoa/cocoawinapi.inc +++ b/lcl/interfaces/cocoa/cocoawinapi.inc @@ -2394,6 +2394,7 @@ function TCocoaWidgetSet.SetFocus(Handle: HWND): HWND; var Obj: NSObject; lView: NSView; + cb: ICommonCallback; begin if Handle <> 0 then begin @@ -2414,7 +2415,15 @@ begin if lView.window <> nil then begin lView.window.makeKeyWindow; - lView.window.makeFirstResponder(lView.lclContentView); + if lView.window.makeFirstResponder(lView.lclContentView) then + begin + // initial focus set (right before the event loop starts) + if not Assigned(NSApp.currentEvent) then + begin + cb := lView.lclGetCallback; + if Assigned(cb) then cb.BecomeFirstResponder; + end; + end; end else Result := 0; // the view is on window, cannot set focus. Fail end else