1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#if defined(Hiro_PopupMenu)
@implementation CocoaPopupMenu : NSMenuItem
-(id) initWith:(hiro::mPopupMenu&)popupMenuReference {
if(self = [super initWithTitle:@"" action:nil keyEquivalent:@""]) {
popupMenu = &popupMenuReference;
cocoaPopupMenu = [[NSMenu alloc] initWithTitle:@""];
[self setSubmenu:cocoaPopupMenu];
}
return self;
}
-(NSMenu*) cocoaPopupMenu {
return cocoaPopupMenu;
}
@end
namespace hiro {
auto pPopupMenu::construct() -> void {
cocoaPopupMenu = [[CocoaPopupMenu alloc] initWith:self()];
}
auto pPopupMenu::destruct() -> void {
[cocoaPopupMenu cocoaPopupMenu];
}
auto pPopupMenu::append(sAction action) -> void {
if(auto pAction = action->self()) {
[[cocoaPopupMenu cocoaPopupMenu] addItem:pAction->cocoaAction];
}
}
auto pPopupMenu::remove(sAction action) -> void {
if(auto pAction = action->self()) {
[[cocoaPopupMenu cocoaPopupMenu] removeItem:pAction->cocoaAction];
}
}
auto pPopupMenu::setVisible(bool visible) -> void {
if(!visible) return;
NSEvent* event = [[NSApplication sharedApplication] currentEvent];
[NSMenu popUpContextMenu:[cocoaPopupMenu cocoaPopupMenu] withEvent:event forView:nil];
}
}
#endif
|