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

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

@ -4,20 +4,17 @@
#include "window.h"
@implementation AvnMenu
- (void)menuNeedsUpdate:(NSMenu *)menu
{
printf("TEST");
NSObject<NSMenuDelegate>* _wtf;
}
- (void)menuWillOpen:(NSMenu *)menu
- (id) initWithDelegate: (NSObject<NSMenuDelegate>*)del
{
self = [super init];
self.delegate = del;
_wtf = del;
return self;
}
- (void)menuDidClose:(NSMenu *)menu
{
}
@end
@implementation AvnMenuItem
@ -159,15 +156,10 @@ void AvnAppMenuItem::RaiseOnClicked()
AvnAppMenu::AvnAppMenu()
{
_native = [AvnMenu new];
[_native setDelegate:_native];
id del = [[AvnMenuDelegate alloc] initWithParent: this];
_native = [[AvnMenu alloc] initWithDelegate: del];
}
AvnAppMenu::AvnAppMenu(AvnMenu* native)
{
_native = native;
[_native setDelegate:_native];
}
AvnMenu* AvnAppMenu::GetNative()
{
@ -214,12 +206,41 @@ HRESULT AvnAppMenu::Clear()
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()
{
@autoreleasepool
{
id menuBar = [NSMenu new];
return new AvnAppMenu(menuBar);
return new AvnAppMenu();
}
}

Loading…
Cancel
Save