--- old/src/macosx/native/sun/awt/ApplicationDelegate.h 2014-04-08 19:19:17.000000000 +0400 +++ new/src/macosx/native/sun/awt/ApplicationDelegate.h 2014-04-08 19:19:17.000000000 +0400 @@ -42,6 +42,7 @@ BOOL fHandlesDocumentTypes; BOOL fHandlesURLTypes; + BOOL isAppActive; } @property (nonatomic, retain) NSMenuItem *fPreferencesMenu; @@ -49,6 +50,7 @@ @property (nonatomic, retain) NSMenu *fDockMenu; @property (nonatomic, retain) CMenuBar *fDefaultMenuBar; +@property (nonatomic) BOOL isAppActive; // Returns the shared delegate, creating if necessary + (ApplicationDelegate *)sharedDelegate; --- old/src/macosx/native/sun/awt/ApplicationDelegate.m 2014-04-08 19:19:18.000000000 +0400 +++ new/src/macosx/native/sun/awt/ApplicationDelegate.m 2014-04-08 19:19:18.000000000 +0400 @@ -103,6 +103,7 @@ @synthesize fDockMenu; @synthesize fDefaultMenuBar; +@synthesize isAppActive; + (ApplicationDelegate *)sharedDelegate { @@ -228,6 +229,7 @@ BOOL prefsAvailable = ([self.fPreferencesMenu menu] != nil); BOOL prefsEnabled = (prefsAvailable && [self.fPreferencesMenu isEnabled] && ([self.fPreferencesMenu target] != nil)); + isAppActive = NO; JNIEnv *env = [ThreadUtilities getJNIEnv]; static JNF_CLASS_CACHE(sjc_AppMenuBarHandler, "com/apple/eawt/_AppMenuBarHandler"); @@ -500,6 +502,14 @@ return image; } +- (void)applicationWillBecomeActive:(id)application { + isAppActive = YES; +} + +- (void)applicationWillResignActive:(id)application { + isAppActive = NO; +} + @end --- old/src/macosx/native/sun/awt/LWCToolkit.m 2014-04-08 19:19:19.000000000 +0400 +++ new/src/macosx/native/sun/awt/LWCToolkit.m 2014-04-08 19:19:19.000000000 +0400 @@ -34,6 +34,7 @@ #import "AWT_debug.h" #import "CSystemColors.h" #import "NSApplicationAWT.h" +#import "ApplicationDelegate.h" #import "sun_lwawt_macosx_LWCToolkit.h" @@ -439,7 +440,7 @@ JNF_COCOA_ENTER(env); [ThreadUtilities performOnMainThreadWaiting:YES block:^() { - active = (jboolean)[NSRunningApplication currentApplication].active; + active = (jboolean) [[ApplicationDelegate sharedDelegate] isAppActive]; }]; JNF_COCOA_EXIT(env); --- /dev/null 2014-04-08 19:19:20.000000000 +0400 +++ new/test/java/awt/Focus/FocusLostAfterMissionControl/FocusLostAfterMissionControl.html 2014-04-08 19:19:19.000000000 +0400 @@ -0,0 +1,45 @@ + + + + + +Verify that focus is gained after switching to the Mission Control on Mac OS X. + +The test is only applicable for Mac OS X. Press PASS for other platforms. + +1. Run the test. The dialog with the text field should appear. +2. Type in the text field. +3. Press F3 or Ctrl+UP Arrow to open the Mission Control +4. Click mouse on any other application +5. Press F3 or Ctrl+UP Arrow to open the Mission Control +6. Click mouse on the dialog. +7. Type a text into the text field. +The text field should be focused and it should be possible to type in the text field. +If so, press PASS, else press FAIL (Do not forget to close the modal dialog). + + + + + + --- /dev/null 2014-04-08 19:19:21.000000000 +0400 +++ new/test/java/awt/Focus/FocusLostAfterMissionControl/FocusLostAfterMissionControl.java 2014-04-08 19:19:20.000000000 +0400 @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2014, 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.awt.Label; +import javax.swing.JApplet; +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JTextField; +import javax.swing.SwingUtilities; +import sun.awt.OSInfo; + +/* @test + * @bug 8039001 + * @summary [macosx] Textfields in dialogs are disabled after using F3 on os x to select a window + * @run applet/manual=yesno FocusLostAfterMissionControl.html + */ +public class FocusLostAfterMissionControl extends JApplet { + + @Override + public void init() { + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + if (!OSInfo.OSType.MACOSX.equals(OSInfo.getOSType())) { + getContentPane().add(new Label("The test is only applicable on Mac OS X.")); + } else { + getContentPane().add(new Label("The dialog with a text field should appear.")); + JFrame frame = new JFrame("Main Frame"); + frame.setSize(350, 150); + frame.setLocation(100, 100); + frame.setVisible(true); + + JDialog dialog = new JDialog(frame, "Dialog"); + dialog.setModal(true); + JTextField textField = new JTextField("Text"); + dialog.add(textField); + dialog.setSize(300, 100); + dialog.setVisible(true); + } + } + }); + + } +}