diff --git a/src/share/classes/java/awt/Window.java b/src/share/classes/java/awt/Window.java index d84049ac0d17216af7ea0f77bf3ab8a882a4c857..5d8f1e6695d81e31e5f7fa37055ef87f7a5b240a 100644 --- a/src/share/classes/java/awt/Window.java +++ b/src/share/classes/java/awt/Window.java @@ -504,6 +504,8 @@ public class Window extends Container implements Accessible { } modalExclusionType = Dialog.ModalExclusionType.NO_EXCLUDE; + + SunToolkit.checkAndSetPolicy(this, false); } /** diff --git a/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java b/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java new file mode 100644 index 0000000000000000000000000000000000000000..34b52f0bea0725dd755030c80503d76edb925689 --- /dev/null +++ b/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_AWT.java @@ -0,0 +1,44 @@ +/* + @test + @bug 6741526 + @summary KeyboardFocusManager.setDefaultFocusTraversalPolicy(FocusTraversalPolicy) affects created components + @library ../../regtesthelpers + @build Sysout + @author Andrei Dmitriev : area=awt-focus + @run main DefaultPolicyChange_AWT +*/ + +import java.awt.*; +import test.java.awt.regtesthelpers.Sysout; + +public class DefaultPolicyChange_AWT { + public static void main(String []s) { + DefaultPolicyChange_AWT.runTestAWT(); + } + + private static void runTestAWT(){ + KeyboardFocusManager currentKFM = KeyboardFocusManager.getCurrentKeyboardFocusManager(); + FocusTraversalPolicy defaultFTP = currentKFM.getDefaultFocusTraversalPolicy(); + ContainerOrderFocusTraversalPolicy newFTP = new ContainerOrderFocusTraversalPolicy(); + + Frame frame = new Frame(); + Window window = new Window(frame); + + FocusTraversalPolicy resultFTP = window.getFocusTraversalPolicy(); + Sysout.println("FocusTraversalPolicy on window = " + resultFTP); + /** + * Note: this call doesn't affect already created components as they have + * their policy initialized. Only new components will use this policy as + * their default policy. + **/ + Sysout.println("Now will set another policy."); + currentKFM.setDefaultFocusTraversalPolicy(newFTP); + resultFTP = window.getFocusTraversalPolicy(); + if (!resultFTP.equals(defaultFTP)) { + Sysout.println("Failure! FocusTraversalPolicy should not change"); + Sysout.println("Was: " + defaultFTP); + Sysout.println("Become: " + resultFTP); + throw new RuntimeException("Failure! FocusTraversalPolicy should not change"); + } + } +} diff --git a/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java b/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java new file mode 100644 index 0000000000000000000000000000000000000000..f0680433644a415df6501670028816e885a19efe --- /dev/null +++ b/test/java/awt/KeyboardFocusmanager/DefaultPolicyChange/DefaultPolicyChange_Swing.java @@ -0,0 +1,69 @@ +/* + @test + @bug 6741526 + @summary KeyboardFocusManager.setDefaultFocusTraversalPolicy(FocusTraversalPolicy) affects created components + @library ../../regtesthelpers + @build Sysout + @author Andrei Dmitriev : area=awt-focus + @run main DefaultPolicyChange_Swing +*/ + +import java.awt.*; +import javax.swing.*; +import javax.swing.table.DefaultTableModel; +import test.java.awt.regtesthelpers.Sysout; + +public class DefaultPolicyChange_Swing { + public static void main(String []s) { + EventQueue.invokeLater(new Runnable(){ + public void run (){ + DefaultPolicyChange_Swing.runTestSwing(); + } + }); + } + private static void runTestSwing(){ + KeyboardFocusManager currentKFM = KeyboardFocusManager.getCurrentKeyboardFocusManager(); + FocusTraversalPolicy defaultFTP = currentKFM.getDefaultFocusTraversalPolicy(); + ContainerOrderFocusTraversalPolicy newFTP = new ContainerOrderFocusTraversalPolicy(); + + + JFrame jf = new JFrame("Test1"); + JWindow jw = new JWindow(jf); + JDialog jd = new JDialog(jf); + JPanel jp1 = new JPanel(); + JButton jb1 = new JButton("jb1"); + JTable jt1 = new JTable(new DefaultTableModel()); + + jf.add(jb1); + jf.add(jt1); + jf.add(jp1); + System.out.println("FTP current on jf= " + jf.getFocusTraversalPolicy()); + System.out.println("FTP current on jw= " + jw.getFocusTraversalPolicy()); + System.out.println("FTP current on jd= " + jd.getFocusTraversalPolicy()); + + if (!(jf.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy) || + !(jw.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy) || + !(jd.getFocusTraversalPolicy() instanceof LayoutFocusTraversalPolicy)) + { + throw new RuntimeException("Failure! Swing toplevel must have LayoutFocusTraversalPolicy installed"); + } + + jf.setVisible(true); + + System.out.println("Now will set another policy."); + currentKFM.setDefaultFocusTraversalPolicy(newFTP); + + FocusTraversalPolicy resultFTP = jw.getFocusTraversalPolicy(); + + System.out.println("FTP current on jf= " + jf.getFocusTraversalPolicy()); + System.out.println("FTP current on jw= " + jw.getFocusTraversalPolicy()); + System.out.println("FTP current on jd= " + jd.getFocusTraversalPolicy()); + + if (!resultFTP.equals(defaultFTP)) { + Sysout.println("Failure! FocusTraversalPolicy should not change"); + Sysout.println("Was: " + defaultFTP); + Sysout.println("Become: " + resultFTP); + throw new RuntimeException("Failure! FocusTraversalPolicy should not change"); + } + } +}