diff --git a/lcl/interfaces/carbon/carbonprivatecontrol.inc b/lcl/interfaces/carbon/carbonprivatecontrol.inc index 70919c8899..426d3b9b06 100644 --- a/lcl/interfaces/carbon/carbonprivatecontrol.inc +++ b/lcl/interfaces/carbon/carbonprivatecontrol.inc @@ -28,6 +28,7 @@ function CarbonControl_Hit(ANextHandler: EventHandlerCallRef; AWidget: TCarbonWidget): OSStatus; {$IFDEF darwin}mwpascal;{$ENDIF} var ControlPart: ControlPartCode; + LCLTarget: TWinControl; begin {$IFDEF VerboseControlEvent} DebugLn('CarbonControl_Hit: ', DbgSName(AWidget.LCLObject)); @@ -40,10 +41,12 @@ begin SizeOf(ControlPartCode), nil, @ControlPart), 'CarbonControl_Hit', SGetEvent, SControlPart) then Exit; + // save LCL target now as the widget might be removed within hit + LCLTarget := AWidget.LCLObject; (AWidget as TCarbonControl).Hit(ControlPart); // send postponed mouse up event - DeliverMessage(AWidget.LCLObject, SavedMouseUpMsg); + DeliverMessage(LCLTarget, SavedMouseUpMsg); NotifyApplicationUserInput(SavedMouseUpMsg.Msg); CarbonWidgetSet.SetCaptureWidget(0); // capture is released diff --git a/lcl/interfaces/carbon/carbontabs.pp b/lcl/interfaces/carbon/carbontabs.pp index 3782920bc3..724b77b41d 100644 --- a/lcl/interfaces/carbon/carbontabs.pp +++ b/lcl/interfaces/carbon/carbontabs.pp @@ -684,7 +684,7 @@ begin Exit; end; - SetPageIndex(Index); + SetPageIndex(PIndex); // we must use page index! // send change FillChar(Msg, SizeOf(TLMNotify), 0); @@ -845,7 +845,7 @@ end; {------------------------------------------------------------------------------ Method: TCarbonTabsControl.SetPageIndex - Params: AIndex - New index + Params: AIndex - New page index Changes the current Carbon page ------------------------------------------------------------------------------}