8213123: javax/swing/JButton/4368790/bug4368790.java fails on mac

Reviewed-by: serb, jdv
This commit is contained in:
Prasanta Sadhukhan 2020-04-27 10:37:30 +05:30
parent 059329b346
commit c18080fef7
3 changed files with 45 additions and 24 deletions

View File

@ -522,6 +522,7 @@ public class AquaButtonUI extends BasicButtonUI implements Sizeable {
// If focusLost arrives while the button has been left-clicked this would disarm the button, // If focusLost arrives while the button has been left-clicked this would disarm the button,
// causing actionPerformed not to fire on mouse release! // causing actionPerformed not to fire on mouse release!
//b.getModel().setArmed(false); //b.getModel().setArmed(false);
b.getModel().setPressed(false);
((Component)e.getSource()).repaint(); ((Component)e.getSource()).repaint();
} }

View File

@ -849,7 +849,6 @@ javax/swing/text/Utilities/8142966/SwingFontMetricsTest.java 8199529 windows-all
javax/swing/JPopupMenu/8075063/ContextMenuScrollTest.java 202880 linux-all javax/swing/JPopupMenu/8075063/ContextMenuScrollTest.java 202880 linux-all
javax/swing/dnd/8139050/NativeErrorsInTableDnD.java 8202765 macosx-all,linux-all javax/swing/dnd/8139050/NativeErrorsInTableDnD.java 8202765 macosx-all,linux-all
javax/swing/Popup/TaskbarPositionTest.java 8065097 macosx-all,linux-all javax/swing/Popup/TaskbarPositionTest.java 8065097 macosx-all,linux-all
javax/swing/JButton/4368790/bug4368790.java 8213123 macosx-all
javax/swing/JEditorPane/6917744/bug6917744.java 8213124 macosx-all javax/swing/JEditorPane/6917744/bug6917744.java 8213124 macosx-all
javax/swing/JTable/6263446/bug6263446.java 8169959 macosx-all javax/swing/JTable/6263446/bug6263446.java 8169959 macosx-all
javax/swing/JTree/6263446/bug6263446.java 8213125 macosx-all javax/swing/JTree/6263446/bug6263446.java 8213125 macosx-all

View File

@ -24,15 +24,19 @@
/* /*
* @test * @test
* @key headful * @key headful
* @bug 4368790 * @bug 4368790 8213123
* @summary JButton stays pressed when focus stolen * @summary JButton stays pressed when focus stolen
* @author Alexander Potochkin * @run main bug4368790
* @run main bug4368790
*/ */
import javax.swing.*; import java.awt.Robot;
import java.awt.*;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class bug4368790 { public class bug4368790 {
private static JButton b1; private static JButton b1;
@ -53,26 +57,43 @@ public class bug4368790 {
b1.requestFocus(); b1.requestFocus();
} }
public static void main(String[] args) throws Exception { private static void setLookAndFeel(UIManager.LookAndFeelInfo laf) {
try { try {
Robot robot = new Robot(); UIManager.setLookAndFeel(laf.getClassName());
robot.setAutoDelay(50); } catch (UnsupportedLookAndFeelException ignored) {
SwingUtilities.invokeAndWait(new Runnable() { System.out.println("Unsupported L&F: " + laf.getClassName());
public void run() { } catch (ClassNotFoundException | InstantiationException
bug4368790.createGui(); | IllegalAccessException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) throws Exception {
Robot robot = new Robot();
for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
System.out.println("Testing L&F: " + laf);
SwingUtilities.invokeAndWait(() -> setLookAndFeel(laf));
try {
robot.setAutoDelay(50);
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
bug4368790.createGui();
}
});
robot.waitForIdle();
robot.keyPress(KeyEvent.VK_SPACE);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_SPACE);
robot.waitForIdle();
if (b1.getModel().isPressed()) {
throw new RuntimeException("The button is unexpectedly pressed");
} }
}); } finally {
robot.waitForIdle(); if (frame != null) SwingUtilities.invokeAndWait(() -> frame.dispose());
robot.keyPress(KeyEvent.VK_SPACE);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_SPACE);
robot.waitForIdle();
if (b1.getModel().isPressed()) {
throw new RuntimeException("The button is unexpectedly pressed");
} }
} finally { robot.delay(1000);
if (frame != null) SwingUtilities.invokeAndWait(() -> frame.dispose());
} }
} }
} }