mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-15 20:22:55 +02:00
106 lines
2.8 KiB
PHP
106 lines
2.8 KiB
PHP
{%mainunit cocoawsextctrls.pas}
|
|
|
|
(*type
|
|
TCocoaStatusItem = objcclass(NSStatusItem)
|
|
{ Fields }
|
|
bar: NSStatusBar;
|
|
image: NSImage;
|
|
menu: NSMenu;
|
|
{ Methods }
|
|
// procedure lclItemSelected(sender: id); message 'lclItemSelected:';
|
|
end;*)
|
|
|
|
{ TCocoaWSCustomTrayIcon }
|
|
|
|
class function TCocoaWSCustomTrayIcon.Hide(const ATrayIcon: TCustomTrayIcon): Boolean;
|
|
{var
|
|
statusitem: TCocoaStatusItem;
|
|
bar: NSStatusBar;}
|
|
begin
|
|
{ bar := NSStatusBar.systemStatusBar();
|
|
statusitem := bar.statusItemWithLength(NSSquareStatusItemLength);
|
|
statusitem.bar := bar;
|
|
statusicon.callback:=TLCLCommonCallback.Create(box, AWinControl);
|
|
statusitem.retain();
|
|
statusitem.item.setImage(APrivateTrayIcon.image.Handle);
|
|
Result:=TLCLIntfHandle(box);
|
|
// APrivateTrayIcon := TPrivateCocoaCocoaTrayIcon(ATrayIcon.Handle);
|
|
|
|
if APrivateTrayIcon.item <> nil then
|
|
begin
|
|
APrivateTrayIcon.item.Free;
|
|
APrivateTrayIcon.item := nil;
|
|
end;}
|
|
|
|
Result := True;
|
|
end;
|
|
|
|
{
|
|
}
|
|
class function TCocoaWSCustomTrayIcon.Show(const ATrayIcon: TCustomTrayIcon): Boolean;
|
|
var
|
|
statusitem: NSStatusItem;
|
|
bar: NSStatusBar;
|
|
image: NSImage;
|
|
{var
|
|
APrivateTrayIcon: TPrivateCocoaCocoaTrayIcon;
|
|
ASize: NSSize;
|
|
ACGRect: CGRect;
|
|
AcurrentContext: NSGraphicsContext;}
|
|
begin
|
|
{$ifdef VerboseCocoaTrayIcon}
|
|
WriteLn(':>[TCocoaWSCustomTrayIcon.Show]');
|
|
{$endif VerboseCocoaTrayIcon}
|
|
|
|
Result := False;
|
|
|
|
{ Creates the handle }
|
|
|
|
bar := NSStatusBar.systemStatusBar();
|
|
statusitem := bar.statusItemWithLength(NSSquareStatusItemLength);
|
|
// statusitem.bar := bar;
|
|
//statusicon.callback:=TLCLCommonCallback.Create(box, AWinControl);
|
|
|
|
{ Shows the icon }
|
|
|
|
statusitem.retain();
|
|
if (ATrayIcon.icon <> nil) and (ATrayIcon.icon.Handle <> 0) then
|
|
begin
|
|
image := TCocoaBitmap(ATrayIcon.icon.Handle).image;
|
|
if image <> nil then statusitem.setImage(image);
|
|
end;
|
|
|
|
// statusitem.setTitle('Menu');
|
|
statusitem.setHighlightMode(True);
|
|
statusitem.setEnabled(True);
|
|
|
|
Result := True;
|
|
|
|
{$ifdef VerboseCocoaTrayIcon}
|
|
{ WriteLn(':<[TCocoaWSCustomTrayIcon.Show]',
|
|
' Handle: ', IntToHex(ATrayIcon.Handle, 8),
|
|
' ACGRect.size.width: ', ACGRect.size.width,
|
|
' ACGRect.size.height: ', ACGRect.size.height,
|
|
' ACGRect.origin.x: ', ACGRect.origin.x,
|
|
' ACGRect.origin.y: ', ACGRect.origin.y,
|
|
' TCocoaBitmap(ATrayIcon.Icon.Handle).CGImage ', IntToHex(Int64(TCocoaBitmap(ATrayIcon.Icon.Handle).CGImage), 8)
|
|
);}
|
|
{$endif VerboseCocoaTrayIcon}
|
|
end;
|
|
|
|
class procedure TCocoaWSCustomTrayIcon.InternalUpdate(const ATrayIcon: TCustomTrayIcon);
|
|
begin
|
|
|
|
end;
|
|
|
|
class function TCocoaWSCustomTrayIcon.ShowBalloonHint(const ATrayIcon: TCustomTrayIcon): Boolean;
|
|
begin
|
|
Result := False;
|
|
end;
|
|
|
|
class function TCocoaWSCustomTrayIcon.GetPosition(const ATrayIcon: TCustomTrayIcon): TPoint;
|
|
begin
|
|
Result := Point(0, 0);
|
|
end;
|
|
|