diff --git a/lcl/interfaces/carbon/carbonedits.pp b/lcl/interfaces/carbon/carbonedits.pp index 52f8527041..aaaa9bfa0a 100644 --- a/lcl/interfaces/carbon/carbonedits.pp +++ b/lcl/interfaces/carbon/carbonedits.pp @@ -112,6 +112,7 @@ type TCarbonCustomEdit = class(TCarbonControlWithEdit) public + function GetCanUndo: Boolean; virtual; procedure CopyToClip; virtual; procedure CutToClip; virtual; procedure PasteFromClip; virtual; @@ -1030,6 +1031,14 @@ end; { TCarbonCustomEdit } +function TCarbonCustomEdit.GetCanUndo: Boolean; +var + AStr: CFStringRef; +begin + AStr := nil; + Result := TXNCanUndoAction(HITextViewGetTXNObject(ControlRef(Widget)), AStr); +end; + procedure TCarbonCustomEdit.CopyToClip; begin TXNCopy(HITextViewGetTXNObject(ControlRef(Widget))); diff --git a/lcl/interfaces/carbon/carbonwsstdctrls.pp b/lcl/interfaces/carbon/carbonwsstdctrls.pp index 5b1df5df46..f5ae691524 100644 --- a/lcl/interfaces/carbon/carbonwsstdctrls.pp +++ b/lcl/interfaces/carbon/carbonwsstdctrls.pp @@ -127,7 +127,7 @@ type TCarbonWSCustomEdit = class(TWSCustomEdit) published class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; - + class function GetCanUndo(const ACustomEdit: TCustomEdit): Boolean; override; class function GetSelStart(const ACustomEdit: TCustomEdit): integer; override; class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override; @@ -774,6 +774,14 @@ begin Result := TLCLIntfHandle(TCarbonEdit.Create(AWinControl, AParams)); end; +class function TCarbonWSCustomEdit.GetCanUndo(const ACustomEdit: TCustomEdit + ): Boolean; +begin + if not CheckHandle(ACustomEdit, Self, 'GetSelStart') then + Exit(False); + Result := TCarbonEdit(ACustomEdit.Handle).GetCanUndo; +end; + {------------------------------------------------------------------------------ Method: TCarbonWSCustomEdit.GetSelStart Params: ACustomEdit - LCL custom edit