Browse Source

remove trayicon events from osx.

pull/6560/head
Dan Walmsley 5 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 IAvnCursorFactory* CreateCursorFactory();
extern IAvnGlDisplay* GetGlDisplay(); extern IAvnGlDisplay* GetGlDisplay();
extern IAvnMenu* CreateAppMenu(IAvnMenuEvents* events); extern IAvnMenu* CreateAppMenu(IAvnMenuEvents* events);
extern IAvnTrayIcon* CreateTrayIcon(IAvnTrayIconEvents* events); extern IAvnTrayIcon* CreateTrayIcon();
extern IAvnMenuItem* CreateAppMenuItem(); extern IAvnMenuItem* CreateAppMenuItem();
extern IAvnMenuItem* CreateAppMenuItemSeparator(); extern IAvnMenuItem* CreateAppMenuItemSeparator();
extern IAvnNativeControlHost* CreateNativeControlHost(NSView* parent); 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; START_COM_CALL;
@autoreleasepool @autoreleasepool
{ {
*ppv = ::CreateTrayIcon(cb); *ppv = ::CreateTrayIcon();
return S_OK; return S_OK;
} }
} }

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

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

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

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

20
src/Avalonia.Native/TrayIconImpl.cs

@ -8,31 +8,13 @@ using Avalonia.Platform;
namespace Avalonia.Native 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 internal class TrayIconImpl : ITrayIconImpl
{ {
private readonly IAvnTrayIcon _native; private readonly IAvnTrayIcon _native;
public TrayIconImpl(IAvaloniaNativeFactory factory) public TrayIconImpl(IAvaloniaNativeFactory factory)
{ {
_native = factory.CreateTrayIcon(new TrayIconEvents(this)); _native = factory.CreateTrayIcon();
MenuExporter = new AvaloniaNativeMenuExporter(_native, factory); 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 CreateMenu(IAvnMenuEvents* cb, IAvnMenu** ppv);
HRESULT CreateMenuItem(IAvnMenuItem** ppv); HRESULT CreateMenuItem(IAvnMenuItem** ppv);
HRESULT CreateMenuItemSeparator(IAvnMenuItem** ppv); HRESULT CreateMenuItemSeparator(IAvnMenuItem** ppv);
HRESULT CreateTrayIcon(IAvnTrayIconEvents* cb, IAvnTrayIcon** ppv); HRESULT CreateTrayIcon(IAvnTrayIcon** ppv);
} }
[uuid(233e094f-9b9f-44a3-9a6e-6948bbdd9fb1)] [uuid(233e094f-9b9f-44a3-9a6e-6948bbdd9fb1)]
@ -674,13 +674,6 @@ interface IAvnTrayIcon : IUnknown
HRESULT SetIsVisible(bool isVisible); HRESULT SetIsVisible(bool isVisible);
} }
[uuid(a687a6d9-73aa-4fef-9b4a-61587d7285d3)]
interface IAvnTrayIconEvents : IUnknown
{
void Clicked ();
void DoubleClicked ();
}
[uuid(a7724dc1-cf6b-4fa8-9d23-228bf2593edc)] [uuid(a7724dc1-cf6b-4fa8-9d23-228bf2593edc)]
interface IAvnMenu : IUnknown interface IAvnMenu : IUnknown
{ {

Loading…
Cancel
Save