RFR: 8282789: Create a regression test for the JTree usecase of JDK-4618767

Alexey Ivanov aivanov at openjdk.java.net
Wed Mar 16 16:00:56 UTC 2022


On Tue, 8 Mar 2022 10:52:44 GMT, Manukumar V S <mvs at openjdk.org> wrote:

> Create a regression test for the JTree usecase of [JDK-4618767](https://bugs.openjdk.java.net/browse/JDK-4618767)
> Context: Migrating tests from a closed tonga based test suite to open regression based one.
> 
> Issue identified in [JDK-4618767](https://bugs.openjdk.java.net/browse/JDK-4618767):
> Typing a letter while a JTree has focus now makes the selection jump to the first/next node/item whose text starts with that letter even though that letter is accompanied by modifier keys such as ALT or CTRL.
> 
> Fix:
> Only enable JTree letter navigation when the user doesn't press any modifier keys such as ALT or CTRL.
> 
> Testing:
> Java 1.4.0 -> Test Failed.
> $ ./j2sdk1.4.0/bin/java JTreeOld
> LookAndFeel: javax.swing.plaf.metal.MetalLookAndFeel
> OS = windows nt (unknown)
> java.lang.RuntimeException: Test Failed, expected colors, but got food
>         at JTreeOld.doTest(JTreeOld.java:166)
>         at JTreeOld.main(JTreeOld.java:32)
> Exception in thread "main"
> 
> Java 1.4.1 -> Test Passed.
> $ ./j2sdk1.4.1/bin/java JTreeOld
> LookAndFeel: javax.swing.plaf.metal.MetalLookAndFeel
> OS = windows nt (unknown)
> Test passed javax.swing.plaf.metal.MetalLookAndFeel
> LookAndFeel: com.sun.java.swing.plaf.motif.MotifLookAndFeel
> OS = windows nt (unknown)
> Test passed com.sun.java.swing.plaf.motif.MotifLookAndFeel
> LookAndFeel: com.sun.java.swing.plaf.windows.WindowsLookAndFeel
> OS = windows nt (unknown)
> Test passed com.sun.java.swing.plaf.windows.WindowsLookAndFeel

Marked as reviewed by aivanov (Reviewer).

test/jdk/javax/swing/JTree/4618767/JTreeSelectedElementTest.java line 166:

> 164:             final Point locationOnScreen = tree.getLocationOnScreen();
> 165:             Rectangle rt = tree.getPathBounds(tree.getPathForRow(rowCount));
> 166:             locationOnScreen.translate((int) (rt.getX() + rt.getWidth() / 2), (int) (rt.getY() + rt.getHeight() / 2));

Suggestion:

            locationOnScreen.translate(rt.x + rt.width / 2, rt.y + rt.height / 2);

-------------

PR: https://git.openjdk.java.net/jdk/pull/7742



More information about the client-libs-dev mailing list