Skip to content
This repository has been archived by the owner on Aug 27, 2022. It is now read-only.
/ lanai Public archive

Commit

Permalink
8213123: javax/swing/JButton/4368790/bug4368790.java fails on mac
Browse files Browse the repository at this point in the history
Reviewed-by: serb, jdv
  • Loading branch information
prsadhuk committed Apr 27, 2020
1 parent 059329b commit c18080f
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -522,6 +522,7 @@ public void focusLost(final FocusEvent e) {
// 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();
}

Expand Down
1 change: 0 additions & 1 deletion test/jdk/ProblemList.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
67 changes: 44 additions & 23 deletions test/jdk/javax/swing/JButton/4368790/bug4368790.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -53,26 +57,43 @@ private static void createGui() {
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);
}
}
}

0 comments on commit c18080f

Please sign in to comment.