|
|
@ -246,7 +246,7 @@ public: |
|
|
|
|
|
|
|
|
if ([Window isKeyWindow]) |
|
|
if ([Window isKeyWindow]) |
|
|
{ |
|
|
{ |
|
|
[Window reparentMenu]; |
|
|
[Window showWindowMenuWithAppMenu]; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return S_OK; |
|
|
return S_OK; |
|
|
@ -1181,21 +1181,45 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
-(void) reparentMenu |
|
|
-(void) showWindowMenuWithAppMenu |
|
|
|
|
|
{ |
|
|
|
|
|
if(_menu != nullptr) |
|
|
|
|
|
{ |
|
|
|
|
|
auto appMenuItem = ::GetAppMenuItem(); |
|
|
|
|
|
|
|
|
|
|
|
if(appMenuItem != nullptr) |
|
|
|
|
|
{ |
|
|
|
|
|
auto appMenu = [appMenuItem menu]; |
|
|
|
|
|
|
|
|
|
|
|
[appMenu removeItem:appMenuItem]; |
|
|
|
|
|
|
|
|
|
|
|
[_menu insertItem:appMenuItem atIndex:0]; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[NSApp setMenu:_menu]; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
-(void) showAppMenuOnly |
|
|
{ |
|
|
{ |
|
|
auto appMenuItem = ::GetAppMenuItem(); |
|
|
auto appMenuItem = ::GetAppMenuItem(); |
|
|
|
|
|
|
|
|
if(appMenuItem != nullptr) |
|
|
if(appMenuItem != nullptr) |
|
|
{ |
|
|
{ |
|
|
auto appMenu = [appMenuItem menu]; |
|
|
auto appMenu = ::GetAppMenu(); |
|
|
|
|
|
|
|
|
|
|
|
auto nativeAppMenu = dynamic_cast<AvnAppMenu*>(appMenu); |
|
|
|
|
|
|
|
|
|
|
|
[[appMenuItem menu] removeItem:appMenuItem]; |
|
|
|
|
|
|
|
|
[appMenu removeItem:appMenuItem]; |
|
|
[nativeAppMenu->GetNative() addItem:appMenuItem]; |
|
|
|
|
|
|
|
|
[[_menu itemAtIndex:0] setSubmenu:appMenu]; |
|
|
[NSApp setMenu:nativeAppMenu->GetNative()]; |
|
|
//[_menu insertItem:appMenuItem atIndex:0]; |
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
[NSApp setMenu:nullptr]; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
[NSApp setMenu:_menu]; |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
-(void) applyMenu:(NSMenu *)menu |
|
|
-(void) applyMenu:(NSMenu *)menu |
|
|
@ -1308,7 +1332,7 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent |
|
|
{ |
|
|
{ |
|
|
if([self activateAppropriateChild: true]) |
|
|
if([self activateAppropriateChild: true]) |
|
|
{ |
|
|
{ |
|
|
[self reparentMenu]; |
|
|
[self showWindowMenuWithAppMenu]; |
|
|
|
|
|
|
|
|
_parent->BaseEvents->Activated(); |
|
|
_parent->BaseEvents->Activated(); |
|
|
[super becomeKeyWindow]; |
|
|
[super becomeKeyWindow]; |
|
|
@ -1360,24 +1384,7 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent |
|
|
if(_parent) |
|
|
if(_parent) |
|
|
_parent->BaseEvents->Deactivated(); |
|
|
_parent->BaseEvents->Deactivated(); |
|
|
|
|
|
|
|
|
auto appMenuItem = ::GetAppMenuItem(); |
|
|
[self showAppMenuOnly]; |
|
|
|
|
|
|
|
|
if(appMenuItem != nullptr) |
|
|
|
|
|
{ |
|
|
|
|
|
auto appMenu = ::GetAppMenu(); |
|
|
|
|
|
|
|
|
|
|
|
auto nativeAppMenu = dynamic_cast<AvnAppMenu*>(appMenu); |
|
|
|
|
|
|
|
|
|
|
|
//[[appMenuItem menu] removeItem::appMenuItem]; |
|
|
|
|
|
|
|
|
|
|
|
//[nativeAppMenu->GetNative() addItem:appMenuItem]; |
|
|
|
|
|
|
|
|
|
|
|
[NSApp setMenu:nativeAppMenu->GetNative()]; |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
[NSApp setMenu:nullptr]; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[super resignKeyWindow]; |
|
|
[super resignKeyWindow]; |
|
|
} |
|
|
} |
|
|
|