mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-05 06:38:22 +02:00
170 lines
5.0 KiB
PHP
170 lines
5.0 KiB
PHP
{$MainUnit customdrawnwsforms.pp}
|
|
|
|
{ TCDWSCustomForm }
|
|
|
|
class procedure TCDWSCustomForm.BackendAddCDWinControlToForm(const AForm: TCustomForm; ACDWinControl: TCDWinControl);
|
|
var
|
|
lwin: TCocoaWindow;
|
|
begin
|
|
lwin := TCocoaWindow(AForm.Handle);
|
|
if lwin.Children = nil then lwin.Children := TFPList.Create;
|
|
lwin.Children.Add(ACDWinControl);
|
|
end;
|
|
|
|
class function TCDWSCustomForm.BackendGetCDWinControlList(const AForm: TCustomForm): TFPList;
|
|
var
|
|
lwin: TCocoaWindow;
|
|
begin
|
|
lwin := TCocoaWindow(AForm.Handle);
|
|
if lwin.Children = nil then lwin.Children := TFPList.Create;
|
|
Result := lwin.Children;
|
|
end;
|
|
|
|
{------------------------------------------------------------------------------
|
|
Method: TCDWSCustomForm.CreateHandle
|
|
Params: AWinControl - LCL control
|
|
AParams - Creation parameters
|
|
Returns: Handle to the window in Cocoa interface
|
|
|
|
Creates new window in Cocoa interface with the specified parameters
|
|
------------------------------------------------------------------------------}
|
|
|
|
class function TCDWSCustomForm.CreateHandle(const AWinControl: TWinControl;
|
|
const AParams: TCreateParams): TLCLIntfHandle;
|
|
var
|
|
win : TCocoaWindow;
|
|
cnt : TCocoaCustomControl;
|
|
ns : NSString;
|
|
const
|
|
WinMask = NSTitledWindowMask or NSClosableWindowMask or NSMiniaturizableWindowMask or NSResizableWindowMask;
|
|
begin
|
|
win := TCocoaWindow(TCocoaWindow.alloc);
|
|
|
|
if not Assigned(win) then begin
|
|
Result:=0;
|
|
Exit;
|
|
end;
|
|
|
|
win:=TCocoaWindow(win.initWithContentRect_styleMask_backing_defer(CreateParamsToNSRect(AParams), WinMask, NSBackingStoreBuffered, False));
|
|
//TCocoaWindow(win).callback:=TLCLCommonCallback.Create(win, AWinControl);
|
|
//TCocoaWindow(win).wincallback:=TLCLWindowCallback.Create(win, AWinControl);
|
|
TCocoaWindow(win).LCLForm := TCustomForm(AWinControl);
|
|
win.setDelegate(win);
|
|
ns:=NSStringUtf8(AWinControl.Caption);
|
|
win.setTitle(ns);
|
|
ns.release;
|
|
win.setAcceptsMouseMovedEvents(True);
|
|
|
|
cnt:=TCocoaCustomControl.alloc.init;
|
|
cnt.LCLForm := TCustomForm(AWinControl);
|
|
win.setContentView(cnt);
|
|
|
|
Result := TLCLIntfHandle(win);
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.DestroyHandle(const AWinControl: TWinControl);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetBounds(const AWinControl: TWinControl;
|
|
const ALeft, ATop, AWidth, AHeight: Integer);
|
|
begin
|
|
if AWinControl.Handle=0 then Exit;
|
|
{todo: setFrame_display(, true)? }
|
|
//sf:=NSScreen.mainScreen.frame;
|
|
TCocoaWindow(AWinControl.Handle).lclSetFrame(Bounds(ALeft, ATop, AWidth, AHeight));
|
|
|
|
//LCLToCocoaRect( GetNSRect(ALeft,ATop,AWidth,AHeight), sf, wf);
|
|
//NSWindow(AWinControl.Handle).setFrame_display(wf, false);
|
|
//NSWindow(AWinControl.Handle).setFrame_display( GetNSRect(ALeft,ATop, AWidth, AHeight), false);
|
|
//NSWindow(AWinControl.Handle).setFrameTopLeftPoint( GetNSPoint(ALeft, ATop));
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetBorderIcons(const AForm: TCustomForm;
|
|
const ABorderIcons: TBorderIcons);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetFormBorderStyle(const AForm: TCustomForm;
|
|
const AFormBorderStyle: TFormBorderStyle);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetIcon(const AForm: TCustomForm; const Small, Big: HICON);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetShowInTaskbar(const AForm: TCustomForm; const AValue: TShowInTaskbar);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.ShowModal(const ACustomForm: TCustomForm);
|
|
begin
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.ShowHide(const AWinControl: TWinControl);
|
|
var
|
|
win : NSWindow;
|
|
begin
|
|
win:=NSWindow(AWinControl.Handle);
|
|
if not Assigned(win) then Exit;
|
|
|
|
if AWinControl.Visible then
|
|
win.orderFrontRegardless
|
|
else
|
|
win.orderOut(nil);
|
|
end;
|
|
|
|
class function TCDWSCustomForm.GetText(const AWinControl: TWinControl; var AText: String): Boolean;
|
|
var
|
|
win : TCocoaWindow;
|
|
begin
|
|
win:=TCocoaWindow(AWinControl.Handle);
|
|
Result:=Assigned(win);
|
|
if not Result then Exit;
|
|
AText:=NSStringToString(win.title);
|
|
Result:=true;
|
|
end;
|
|
|
|
class function TCDWSCustomForm.GetTextLen(const AWinControl: TWinControl; var ALength: Integer): Boolean;
|
|
var
|
|
win : TCocoaWindow;
|
|
begin
|
|
win:=TCocoaWindow(AWinControl.Handle);
|
|
Result:=Assigned(win);
|
|
if not Result then Exit;
|
|
ALength:=win.title.length;
|
|
end;
|
|
|
|
class procedure TCDWSCustomForm.SetText(const AWinControl: TWinControl; const AText: String);
|
|
var
|
|
win : TCocoaWindow;
|
|
ns : NSString;
|
|
begin
|
|
win:=TCocoaWindow(AWinControl.Handle);
|
|
if not Assigned(win) then Exit;
|
|
ns:=NSStringUtf8(AText);
|
|
win.setTitle(ns);
|
|
ns.release;
|
|
end;
|
|
|
|
class function TCDWSCustomForm.GetClientBounds(const AWinControl: TWinControl; var ARect: TRect): Boolean;
|
|
begin
|
|
Result:=AWinControl.Handle<>0;
|
|
if not Result then Exit;
|
|
ARect:= TCocoaWindow(AWinControl.Handle).lclClientFrame;
|
|
end;
|
|
|
|
class function TCDWSCustomForm.GetClientRect(const AWinControl: TWinControl; var ARect: TRect): Boolean;
|
|
var
|
|
x,y : Integer;
|
|
begin
|
|
Result:=AWinControl.Handle<>0;
|
|
if not Result then Exit;
|
|
ARect:= TCocoaWindow(AWinControl.Handle).lclClientFrame;
|
|
x:=0;y:=0;
|
|
TCocoaWindow(AWinControl.Handle).lclLocalToScreen(x,y);
|
|
MoveRect(ARect, x,y);
|
|
end;
|
|
|