Browse Source

What the actual duck

pull/3762/head
Nikita Tsukanov 7 years ago
parent
commit
3097546598
  1. 11
      native/Avalonia.Native/src/OSX/menu.h
  2. 57
      native/Avalonia.Native/src/OSX/menu.mm

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

@ -14,7 +14,8 @@
class AvnAppMenuItem; class AvnAppMenuItem;
class AvnAppMenu; class AvnAppMenu;
@interface AvnMenu : NSMenu<NSMenuDelegate> @interface AvnMenu : NSMenu
- (id) initWithDelegate: (NSObject<NSMenuDelegate>*) del;
@end @end
@interface AvnMenuItem : NSMenuItem @interface AvnMenuItem : NSMenuItem
@ -62,9 +63,7 @@ public:
FORWARD_IUNKNOWN() FORWARD_IUNKNOWN()
AvnAppMenu(); AvnAppMenu();
AvnAppMenu(AvnMenu* native);
AvnMenu* GetNative(); AvnMenu* GetNative();
virtual HRESULT InsertItem (int index, IAvnAppMenuItem* item) override; virtual HRESULT InsertItem (int index, IAvnAppMenuItem* item) override;
@ -77,5 +76,9 @@ public:
}; };
@interface AvnMenuDelegate : NSObject<NSMenuDelegate>
- (id) initWithParent: (AvnAppMenu*) parent;
@end
#endif #endif

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

@ -4,20 +4,17 @@
#include "window.h" #include "window.h"
@implementation AvnMenu @implementation AvnMenu
- (void)menuNeedsUpdate:(NSMenu *)menu
{ {
printf("TEST"); NSObject<NSMenuDelegate>* _wtf;
} }
- (id) initWithDelegate: (NSObject<NSMenuDelegate>*)del
- (void)menuWillOpen:(NSMenu *)menu
{ {
self = [super init];
self.delegate = del;
_wtf = del;
return self;
} }
- (void)menuDidClose:(NSMenu *)menu
{
}
@end @end
@implementation AvnMenuItem @implementation AvnMenuItem
@ -159,15 +156,10 @@ void AvnAppMenuItem::RaiseOnClicked()
AvnAppMenu::AvnAppMenu() AvnAppMenu::AvnAppMenu()
{ {
_native = [AvnMenu new]; id del = [[AvnMenuDelegate alloc] initWithParent: this];
[_native setDelegate:_native]; _native = [[AvnMenu alloc] initWithDelegate: del];
} }
AvnAppMenu::AvnAppMenu(AvnMenu* native)
{
_native = native;
[_native setDelegate:_native];
}
AvnMenu* AvnAppMenu::GetNative() AvnMenu* AvnAppMenu::GetNative()
{ {
@ -214,12 +206,41 @@ HRESULT AvnAppMenu::Clear()
return S_OK; return S_OK;
} }
@implementation AvnMenuDelegate
{
ComPtr<AvnAppMenu> _parent;
}
- (id) initWithParent:(AvnAppMenu *)parent
{
self = [super init];
_parent = parent;
return self;
}
- (BOOL)menu:(NSMenu *)menu updateItem:(NSMenuItem *)item atIndex:(NSInteger)index shouldCancel:(BOOL)shouldCancel
{
if(shouldCancel)
return NO;
return YES;
}
- (NSInteger)numberOfItemsInMenu:(NSMenu *)menu
{
return [menu numberOfItems];
}
- (void)menuNeedsUpdate:(NSMenu *)menu
{
printf("NEEDSUPDATE\n");
}
@end
extern IAvnAppMenu* CreateAppMenu() extern IAvnAppMenu* CreateAppMenu()
{ {
@autoreleasepool @autoreleasepool
{ {
id menuBar = [NSMenu new]; return new AvnAppMenu();
return new AvnAppMenu(menuBar);
} }
} }

Loading…
Cancel
Save