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,
// causing actionPerformed not to fire on mouse release!
//b.getModel().setArmed(false);
b.getModel().setPressed(false);
((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/dnd/8139050/NativeErrorsInTableDnD.java 8202765 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/JTable/6263446/bug6263446.java 8169959 macosx-all
javax/swing/JTree/6263446/bug6263446.java 8213125 macosx-all

View File

@ -24,15 +24,19 @@
/*
* @test
* @key headful
* @bug 4368790
* @summary JButton stays pressed when focus stolen
* @author Alexander Potochkin
* @run main bug4368790
* @bug 4368790 8213123
* @summary JButton stays pressed when focus stolen
* @run main bug4368790
*/
import javax.swing.*;
import java.awt.*;
import java.awt.Robot;
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 {
private static JButton b1;
@ -53,26 +57,43 @@ public class bug4368790 {
b1.requestFocus();
}
public static void main(String[] args) throws Exception {
private static void setLookAndFeel(UIManager.LookAndFeelInfo laf) {
try {
Robot robot = new Robot();
robot.setAutoDelay(50);
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
bug4368790.createGui();
UIManager.setLookAndFeel(laf.getClassName());
} catch (UnsupportedLookAndFeelException ignored) {
System.out.println("Unsupported L&F: " + laf.getClassName());
} catch (ClassNotFoundException | InstantiationException
| 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");
}
});
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 {
if (frame != null) SwingUtilities.invokeAndWait(() -> frame.dispose());
}
} finally {
if (frame != null) SwingUtilities.invokeAndWait(() -> frame.dispose());
robot.delay(1000);
}
}
}