LCL Carbon: set and kill focus of focused control, on form activation/deactivation

git-svn-id: trunk@16764 -
This commit is contained in:
tombo 2008-09-27 10:04:03 +00:00
parent 5c92367f38
commit 18c474eba2

View File

@ -871,6 +871,8 @@ function CarbonWindow_ActivateProc(ANextHandler: EventHandlerCallRef;
var var
Msg: TLMessage; Msg: TLMessage;
EventKind: UInt32; EventKind: UInt32;
Control: ControlRef;
FocusWidget: TCarbonControl;
begin begin
{$IFDEF VerboseWindowEvent} {$IFDEF VerboseWindowEvent}
DebugLn('CarbonWindow_ActivateProc ', DbgSName(AWidget.LCLObject)); DebugLn('CarbonWindow_ActivateProc ', DbgSName(AWidget.LCLObject));
@ -894,6 +896,20 @@ begin
end; end;
DeliverMessage(AWidget.LCLObject, Msg); DeliverMessage(AWidget.LCLObject, Msg);
// force set and kill focus of focused control
Control := nil;
OSError(GetKeyboardFocus(AWidget.Widget, Control), 'CarbonWindow_ActivateProc', SGetKeyboardFocus);
if Control <> nil then
begin
FocusWidget := GetCarbonControl(Control);
if FocusWidget <> nil then
case Msg.msg of
LM_ACTIVATE: FocusWidget.FocusSet;
LM_DEACTIVATE: FocusWidget.FocusKilled;
end;
end;
end; end;
{------------------------------------------------------------------------------ {------------------------------------------------------------------------------