Browse Source

allow creating menu with events.

pull/3762/head
Dan Walmsley 6 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 IAvnCursorFactory* CreateCursorFactory();
extern IAvnGlDisplay* GetGlDisplay();
extern IAvnMenu* CreateAppMenu();
extern IAvnMenu* CreateAppMenu(IAvnMenuEvents* events);
extern IAvnMenuItem* CreateAppMenuItem();
extern IAvnMenuItem* CreateAppMenuItemSeperator();
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
{
*ppv = ::CreateAppMenu();
*ppv = ::CreateAppMenu(cb);
return S_OK;
}

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

@ -58,11 +58,12 @@ class AvnAppMenu : public ComSingleObject<IAvnMenu, &IID_IAvnMenu>
{
private:
AvnMenu* _native;
ComPtr<IAvnMenuEvents> _baseEvents;
public:
FORWARD_IUNKNOWN()
AvnAppMenu();
AvnAppMenu(IAvnMenuEvents* events);
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];
_native = [[AvnMenu alloc] initWithDelegate: del];
}
@ -240,7 +241,7 @@ extern IAvnMenu* CreateAppMenu(IAvnMenuEvents* cb)
{
@autoreleasepool
{
return new AvnAppMenu();
return new AvnAppMenu(cb);
}
}

Loading…
Cancel
Save