diff --git a/lcl/interfaces/cocoa/cocoatextedits.pas b/lcl/interfaces/cocoa/cocoatextedits.pas index e081a1f3d2..e6f68253e5 100644 --- a/lcl/interfaces/cocoa/cocoatextedits.pas +++ b/lcl/interfaces/cocoa/cocoatextedits.pas @@ -84,6 +84,8 @@ type callback: ICommonCallback; function acceptsFirstResponder: LCLObjCBoolean; override; procedure resetCursorRects; override; + function lclGetCallback: ICommonCallback; override; + procedure lclClearCallback; override; // key procedure keyUp(event: NSEvent); override; // mouse @@ -97,7 +99,6 @@ type procedure mouseMoved(event: NSEvent); override; end; - { TCocoaTextView } TCocoaTextView = objcclass(NSTextView, NSTextDelegateProtocol, NSTextViewDelegateProtocol) @@ -137,6 +138,14 @@ type procedure lclExpectedKeys(var wantTabs, wantArrows, wantReturn, wantAll: Boolean); override; end; + { TCococaFieldEditorExt } + + TCococaFieldEditorExt = objccategory(NSTextView) + // this override should take care of any Cocoa editors possible + // for example NSSecureTextView used with TCocoaSecureField aka NSSecureTextField + function lclGetCallback: ICommonCallback; reintroduce; + end; + { TCocoaFieldEditor } TCocoaFieldEditor = objcclass(NSTextView) @@ -419,6 +428,18 @@ begin end; end; +{ TCococaFieldEditorExt } + +function TCococaFieldEditorExt.lclGetCallback: ICommonCallback; +begin + if isFieldEditor and Assigned(delegate) then + begin + Result := NSObject(delegate).lclGetCallback; + end + else + Result := inherited lclGetCallback; +end; + { TCocoaSpinEditStepper } function TCocoaSpinEditStepper.acceptsFirstMouse(event: NSEvent): LCLObjCBoolean; @@ -990,6 +1011,16 @@ begin inherited resetCursorRects; end; +function TCocoaSecureTextField.lclGetCallback: ICommonCallback; +begin + Result := callback; +end; + +procedure TCocoaSecureTextField.lclClearCallback; +begin + callback := nil; +end; + procedure TCocoaSecureTextField.keyUp(event: NSEvent); var res : Boolean;