< prev index next >
src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuBar.m
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
--- 1,7 ----
/*
! * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
*** 29,38 ****
--- 29,39 ----
#import "CMenuBar.h"
#import "CMenu.h"
#import "ThreadUtilities.h"
+ #import "ApplicationDelegate.h"
#import "sun_lwawt_macosx_CMenuBar.h"
__attribute__((visibility("default")))
NSString *CMenuBarDidReuseItemNotification =
*** 99,108 ****
--- 100,113 ----
if (!menubar) {
[CMenuBar clearMenuBarExcludingAppleMenu_OnAppKitThread:YES];
return;
}
+ #ifdef DEBUG
+ NSLog(@"activating menu bar: %@", menubar);
+ #endif
+
@synchronized([CMenuBar class]) {
sActiveMenuBar = menubar;
}
@synchronized(menubar) {
*** 182,198 ****
--- 187,221 ----
}
-(void) deactivate {
AWT_ASSERT_APPKIT_THREAD;
+ BOOL isDeactivated = NO;
@synchronized([CMenuBar class]) {
+ if (sActiveMenuBar == self) {
sActiveMenuBar = nil;
+ isDeactivated = YES;
+ }
}
+ if (isDeactivated) {
+ #ifdef DEBUG
+ NSLog(@"deactivating menu bar: %@", self);
+ #endif
+
@synchronized(self) {
fModallyDisabled = NO;
}
+
+ // In theory, this might cause flickering if the window gaining focus
+ // has its own menu. However, I couldn't reproduce it on practice, so
+ // perhaps this is a non issue.
+ CMenuBar* defaultMenu = [[ApplicationDelegate sharedDelegate] defaultMenuBar];
+ if (defaultMenu != nil) {
+ [CMenuBar activate:defaultMenu modallyDisabled:NO];
+ }
+ }
}
-(void) javaAddMenu: (CMenu *)theMenu {
@synchronized(self) {
[fMenuList addObject: theMenu];
< prev index next >