unit CocoaWSCommon; {$mode objfpc}{$H+} {$modeswitch objectivec1} interface uses MacOSAll, CocoaAll, Controls, WSControls, CocoaPrivate, CocoaUtils, LCLMessageGlue; type { TControlCallback } TControlCallback = class(TCommonCallback) public Target : TControl; constructor Create(AOwner: NSObject; ATarget: TControl); procedure MouseDown(x,y: Integer); override; procedure MouseUp(x,y: Integer); override; procedure MouseClick(clickCount: Integer); override; procedure MouseMove(x,y: Integer); override; end; { TCocoaWSWinControl } TCocoaWSWinControl=class(TWSWinControl) published class procedure SetText(const AWinControl: TWinControl; const AText: String); override; class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; override; class function GetTextLen(const AWinControl: TWinControl; var ALength: Integer): Boolean; override; end; implementation { TControlCallback } constructor TControlCallback.Create(AOwner: NSObject; ATarget: TControl); begin inherited Create(AOwner); Target:=ATarget; end; procedure TControlCallback.MouseDown(x, y: Integer); begin LCLSendMouseDownMsg(Target,x,y,mbLeft, []); end; procedure TControlCallback.MouseUp(x, y: Integer); begin LCLSendMouseUpMsg(Target,x,y,mbLeft, []); end; procedure TControlCallback.MouseClick(clickCount: Integer); begin LCLSendClickedMsg(Target); end; procedure TControlCallback.MouseMove(x, y: Integer); begin LCLSendMouseMoveMsg(Target, x,y, []); end; { TCocoaWSWinControl } class procedure TCocoaWSWinControl.SetText(const AWinControl: TWinControl; const AText: String); var obj : NSObject; begin // sanity check obj:=NSObject(AWinControl.Handle); if not Assigned(obj) or not obj.isKindOfClass_(NSControl) then Exit; SetNSControlValue(NSControl(obj), AText); end; class function TCocoaWSWinControl.GetText(const AWinControl: TWinControl; var AText: String): Boolean; var obj : NSObject; begin Result:=false; // sanity check obj:=NSObject(AWinControl.Handle); Result:=Assigned(obj) and obj.isKindOfClass_(NSControl); if not Result then Exit; AText:=GetNSControlValue(NSControl(obj)); Result:=true; end; class function TCocoaWSWinControl.GetTextLen(const AWinControl: TWinControl; var ALength: Integer): Boolean; var obj : NSObject; s : NSString; begin Result:=false; // sanity check obj:=NSObject(AWinControl.Handle); Result:= Assigned(obj) and obj.isKindOfClass_(NSControl); if not Result then Exit; s:=NSControl(obj).stringValue; if Assigned(s) then ALength:=s.length else ALength:=0 end; end.