Browse Source

remove trayicon events from osx.

pull/6560/head
Dan Walmsley 4 years ago
parent
commit
daddc71372
  1. 2
      native/Avalonia.Native/src/OSX/common.h
  2. 4
      native/Avalonia.Native/src/OSX/main.mm
  3. 3
      native/Avalonia.Native/src/OSX/trayicon.h
  4. 8
      native/Avalonia.Native/src/OSX/trayicon.mm
  5. 20
      src/Avalonia.Native/TrayIconImpl.cs
  6. 9
      src/Avalonia.Native/avn.idl

2
native/Avalonia.Native/src/OSX/common.h

@ -22,7 +22,7 @@ extern AvnDragDropEffects ConvertDragDropEffects(NSDragOperation nsop);
extern IAvnCursorFactory* CreateCursorFactory();
extern IAvnGlDisplay* GetGlDisplay();
extern IAvnMenu* CreateAppMenu(IAvnMenuEvents* events);
extern IAvnTrayIcon* CreateTrayIcon(IAvnTrayIconEvents* events);
extern IAvnTrayIcon* CreateTrayIcon();
extern IAvnMenuItem* CreateAppMenuItem();
extern IAvnMenuItem* CreateAppMenuItemSeparator();
extern IAvnNativeControlHost* CreateNativeControlHost(NSView* parent);

4
native/Avalonia.Native/src/OSX/main.mm

@ -303,13 +303,13 @@ public:
}
}
virtual HRESULT CreateTrayIcon (IAvnTrayIconEvents*cb, IAvnTrayIcon** ppv) override
virtual HRESULT CreateTrayIcon (IAvnTrayIcon** ppv) override
{
START_COM_CALL;
@autoreleasepool
{
*ppv = ::CreateTrayIcon(cb);
*ppv = ::CreateTrayIcon();
return S_OK;
}
}

3
native/Avalonia.Native/src/OSX/trayicon.h

@ -15,12 +15,11 @@ class AvnTrayIcon : public ComSingleObject<IAvnTrayIcon, &IID_IAvnTrayIcon>
{
private:
NSStatusItem* _native;
ComPtr<IAvnTrayIconEvents> _events;
public:
FORWARD_IUNKNOWN()
AvnTrayIcon(IAvnTrayIconEvents* events);
AvnTrayIcon();
~AvnTrayIcon ();

8
native/Avalonia.Native/src/OSX/trayicon.mm

@ -2,18 +2,16 @@
#include "trayicon.h"
#include "menu.h"
extern IAvnTrayIcon* CreateTrayIcon(IAvnTrayIconEvents* cb)
extern IAvnTrayIcon* CreateTrayIcon()
{
@autoreleasepool
{
return new AvnTrayIcon(cb);
return new AvnTrayIcon();
}
}
AvnTrayIcon::AvnTrayIcon(IAvnTrayIconEvents* events)
AvnTrayIcon::AvnTrayIcon()
{
_events = events;
_native = [[NSStatusBar systemStatusBar] statusItemWithLength: NSSquareStatusItemLength];
}

20
src/Avalonia.Native/TrayIconImpl.cs

@ -8,31 +8,13 @@ using Avalonia.Platform;
namespace Avalonia.Native
{
class TrayIconEvents : CallbackBase, IAvnTrayIconEvents
{
private TrayIconImpl _parent;
public TrayIconEvents (TrayIconImpl parent)
{
_parent = parent;
}
public void Clicked()
{
}
public void DoubleClicked()
{
}
}
internal class TrayIconImpl : ITrayIconImpl
{
private readonly IAvnTrayIcon _native;
public TrayIconImpl(IAvaloniaNativeFactory factory)
{
_native = factory.CreateTrayIcon(new TrayIconEvents(this));
_native = factory.CreateTrayIcon();
MenuExporter = new AvaloniaNativeMenuExporter(_native, factory);
}

9
src/Avalonia.Native/avn.idl

@ -427,7 +427,7 @@ interface IAvaloniaNativeFactory : IUnknown
HRESULT CreateMenu(IAvnMenuEvents* cb, IAvnMenu** ppv);
HRESULT CreateMenuItem(IAvnMenuItem** ppv);
HRESULT CreateMenuItemSeparator(IAvnMenuItem** ppv);
HRESULT CreateTrayIcon(IAvnTrayIconEvents* cb, IAvnTrayIcon** ppv);
HRESULT CreateTrayIcon(IAvnTrayIcon** ppv);
}
[uuid(233e094f-9b9f-44a3-9a6e-6948bbdd9fb1)]
@ -674,13 +674,6 @@ interface IAvnTrayIcon : IUnknown
HRESULT SetIsVisible(bool isVisible);
}
[uuid(a687a6d9-73aa-4fef-9b4a-61587d7285d3)]
interface IAvnTrayIconEvents : IUnknown
{
void Clicked ();
void DoubleClicked ();
}
[uuid(a7724dc1-cf6b-4fa8-9d23-228bf2593edc)]
interface IAvnMenu : IUnknown
{

Loading…
Cancel
Save