Browse Source

allow creating menu with events.

pull/3762/head
Dan Walmsley 7 years ago
parent
commit
e0a5aaf313
  1. 2
      native/Avalonia.Native/src/OSX/common.h
  2. 2
      native/Avalonia.Native/src/OSX/main.mm
  3. 3
      native/Avalonia.Native/src/OSX/menu.h
  4. 5
      native/Avalonia.Native/src/OSX/menu.mm

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

@ -15,7 +15,7 @@ extern IAvnScreens* CreateScreens();
extern IAvnClipboard* CreateClipboard(); extern IAvnClipboard* CreateClipboard();
extern IAvnCursorFactory* CreateCursorFactory(); extern IAvnCursorFactory* CreateCursorFactory();
extern IAvnGlDisplay* GetGlDisplay(); extern IAvnGlDisplay* GetGlDisplay();
extern IAvnMenu* CreateAppMenu(); extern IAvnMenu* CreateAppMenu(IAvnMenuEvents* events);
extern IAvnMenuItem* CreateAppMenuItem(); extern IAvnMenuItem* CreateAppMenuItem();
extern IAvnMenuItem* CreateAppMenuItemSeperator(); extern IAvnMenuItem* CreateAppMenuItemSeperator();
extern void SetAppMenu (NSString* appName, IAvnMenu* appMenu); extern void SetAppMenu (NSString* appName, IAvnMenu* appMenu);

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

@ -229,7 +229,7 @@ public:
virtual HRESULT CreateMenu (IAvnMenuEvents* cb, IAvnMenu** ppv) override virtual HRESULT CreateMenu (IAvnMenuEvents* cb, IAvnMenu** ppv) override
{ {
*ppv = ::CreateAppMenu(); *ppv = ::CreateAppMenu(cb);
return S_OK; return S_OK;
} }

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

@ -58,11 +58,12 @@ class AvnAppMenu : public ComSingleObject<IAvnMenu, &IID_IAvnMenu>
{ {
private: private:
AvnMenu* _native; AvnMenu* _native;
ComPtr<IAvnMenuEvents> _baseEvents;
public: public:
FORWARD_IUNKNOWN() FORWARD_IUNKNOWN()
AvnAppMenu(); AvnAppMenu(IAvnMenuEvents* events);
AvnMenu* GetNative(); AvnMenu* GetNative();

5
native/Avalonia.Native/src/OSX/menu.mm

@ -154,8 +154,9 @@ void AvnAppMenuItem::RaiseOnClicked()
} }
} }
AvnAppMenu::AvnAppMenu() AvnAppMenu::AvnAppMenu(IAvnMenuEvents* events)
{ {
_baseEvents = events;
id del = [[AvnMenuDelegate alloc] initWithParent: this]; id del = [[AvnMenuDelegate alloc] initWithParent: this];
_native = [[AvnMenu alloc] initWithDelegate: del]; _native = [[AvnMenu alloc] initWithDelegate: del];
} }
@ -240,7 +241,7 @@ extern IAvnMenu* CreateAppMenu(IAvnMenuEvents* cb)
{ {
@autoreleasepool @autoreleasepool
{ {
return new AvnAppMenu(); return new AvnAppMenu(cb);
} }
} }

Loading…
Cancel
Save