diff --git a/lcl/interfaces/carbon/carbonedits.pp b/lcl/interfaces/carbon/carbonedits.pp index 1784f42b2c..52f8527041 100644 --- a/lcl/interfaces/carbon/carbonedits.pp +++ b/lcl/interfaces/carbon/carbonedits.pp @@ -112,6 +112,10 @@ type TCarbonCustomEdit = class(TCarbonControlWithEdit) public + procedure CopyToClip; virtual; + procedure CutToClip; virtual; + procedure PasteFromClip; virtual; + procedure UndoClip; virtual; procedure SetPasswordChar(AChar: Char); virtual; abstract; function FilterKeyPress(SysKey: Boolean; const Char: TUTF8Char): Boolean; override; function GetCaretPos: TPoint; virtual; @@ -1026,6 +1030,26 @@ end; { TCarbonCustomEdit } +procedure TCarbonCustomEdit.CopyToClip; +begin + TXNCopy(HITextViewGetTXNObject(ControlRef(Widget))); +end; + +procedure TCarbonCustomEdit.CutToClip; +begin + TXNCut(HITextViewGetTXNObject(ControlRef(Widget))); +end; + +procedure TCarbonCustomEdit.PasteFromClip; +begin + TXNPaste(HITextViewGetTXNObject(ControlRef(Widget))); +end; + +procedure TCarbonCustomEdit.UndoClip; +begin + TXNUndo(HITextViewGetTXNObject(ControlRef(Widget))); +end; + {------------------------------------------------------------------------------ Method: TCarbonCustomEdit.FilterKeyPress diff --git a/lcl/interfaces/carbon/carbonwsstdctrls.pp b/lcl/interfaces/carbon/carbonwsstdctrls.pp index 6375b46f40..5b1df5df46 100644 --- a/lcl/interfaces/carbon/carbonwsstdctrls.pp +++ b/lcl/interfaces/carbon/carbonwsstdctrls.pp @@ -918,21 +918,25 @@ end; class procedure TCarbonWSCustomEdit.Cut(const ACustomEdit: TCustomEdit); begin if not CheckHandle(ACustomEdit, Self, 'Cut') then Exit; + TCarbonCustomEdit(ACustomEdit.Handle).CutToClip; end; class procedure TCarbonWSCustomEdit.Copy(const ACustomEdit: TCustomEdit); begin if not CheckHandle(ACustomEdit, Self, 'Copy') then Exit; + TCarbonCustomEdit(ACustomEdit.Handle).CopyToClip; end; class procedure TCarbonWSCustomEdit.Paste(const ACustomEdit: TCustomEdit); begin if not CheckHandle(ACustomEdit, Self, 'Paste') then Exit; + TCarbonCustomEdit(ACustomEdit.Handle).PasteFromClip; end; class procedure TCarbonWSCustomEdit.Undo(const ACustomEdit: TCustomEdit); begin if not CheckHandle(ACustomEdit, Self, 'Undo') then Exit; + TCarbonCustomEdit(ACustomEdit.Handle).UndoClip; end; { TCarbonWSCustomMemo }