From c51406a1cab66e9ac7710694c56b9fee13b6b352 Mon Sep 17 00:00:00 2001 From: Damon Nguyen Date: Sat, 23 Nov 2024 20:39:30 -0800 Subject: [PATCH 1/3] Initial commit for backout --- .../swing/plaf/basic/BasicScrollBarUI.java | 45 ----------- .../JComboBox/JComboBoxScrollFocusTest.java | 75 ------------------- 2 files changed, 120 deletions(-) delete mode 100644 test/jdk/javax/swing/JComboBox/JComboBoxScrollFocusTest.java diff --git a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java index 9fc9b64314cb9..60274d766cd70 100644 --- a/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java +++ b/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java @@ -31,7 +31,6 @@ import java.awt.Dimension; import java.awt.Graphics; import java.awt.Insets; -import java.awt.KeyboardFocusManager; import java.awt.LayoutManager; import java.awt.Point; import java.awt.Rectangle; @@ -123,8 +122,6 @@ public class BasicScrollBarUI protected ArrowButtonListener buttonListener; /** Model listener */ protected ModelListener modelListener; - /** KeyboardFocusListener */ - protected KeyboardFocusListener keyboardFocusListener; /** Thumb rectangle */ protected Rectangle thumbRect; @@ -359,15 +356,12 @@ protected void installListeners(){ buttonListener = createArrowButtonListener(); modelListener = createModelListener(); propertyChangeListener = createPropertyChangeListener(); - keyboardFocusListener = createKeyboardFocusListener(); scrollbar.addMouseListener(trackListener); scrollbar.addMouseMotionListener(trackListener); scrollbar.getModel().addChangeListener(modelListener); scrollbar.addPropertyChangeListener(propertyChangeListener); scrollbar.addFocusListener(getHandler()); - KeyboardFocusManager.getCurrentKeyboardFocusManager() - .addPropertyChangeListener(keyboardFocusListener); if (incrButton != null) { incrButton.addMouseListener(buttonListener); @@ -449,8 +443,6 @@ protected void uninstallListeners() { incrButton.removeMouseListener(buttonListener); } - KeyboardFocusManager.getCurrentKeyboardFocusManager() - .removePropertyChangeListener(keyboardFocusListener); scrollbar.getModel().removeChangeListener(modelListener); scrollbar.removeMouseListener(trackListener); scrollbar.removeMouseMotionListener(trackListener); @@ -517,14 +509,6 @@ protected PropertyChangeListener createPropertyChangeListener() { return getHandler(); } - /** - * Creates a keyboard focus listener. - * @return a keyboard focus listener - */ - protected KeyboardFocusListener createKeyboardFocusListener() { - return new KeyboardFocusListener(); - } - private void updateThumbState(int x, int y) { Rectangle rect = getThumbBounds(); @@ -1218,35 +1202,6 @@ public boolean getSupportsAbsolutePositioning() { return supportsAbsolutePositioning; } - /** - * A listener to listen for keyboard focus changes. - */ - protected class KeyboardFocusListener implements PropertyChangeListener { - /** - * Constructs a {@code KeyboardFocusListener}. - */ - protected KeyboardFocusListener() {} - - @Override - public void propertyChange(PropertyChangeEvent e) { - String propertyName = e.getPropertyName(); - - if ("focusOwner" == propertyName) { - // Stop scrolling if no longer focus owner - if (e.getNewValue() == null && scrollTimer.isRunning()) { - scrollTimer.stop(); - buttonListener.handledEvent = false; - scrollbar.setValueIsAdjusting(false); - if (incrButton.getModel().isPressed()) { - incrButton.getModel().setPressed(false); - } else if (decrButton.getModel().isPressed()) { - decrButton.getModel().setPressed(false); - } - } - } - } - } - /** * A listener to listen for model changes. */ diff --git a/test/jdk/javax/swing/JComboBox/JComboBoxScrollFocusTest.java b/test/jdk/javax/swing/JComboBox/JComboBoxScrollFocusTest.java deleted file mode 100644 index 4d2c3bd19ccfe..0000000000000 --- a/test/jdk/javax/swing/JComboBox/JComboBoxScrollFocusTest.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -import javax.swing.JComboBox; -import javax.swing.JFrame; - -/* - * @test - * @bug 6672644 - * @library /java/awt/regtesthelpers - * @build PassFailJFrame - * @summary Tests JComboBox scrollbar behavior when alt-tabbing - * @requires os.family != "mac" - * @run main/manual JComboBoxScrollFocusTest - */ - -public class JComboBoxScrollFocusTest { - private static final String INSTRUCTIONS = - """ - Click on the dropdown button for the JComboBox in the test frame. - Then, press and hold the left click button on the down arrow button - in the popup list. While holding the left click button, the list - should be scrolling down. Press ALT + TAB while holding down the - left click to switch focus to a different window. Then release the - left click button. Focus the test frame again and click the - dropdown button for the JComboBox again. The list should be - stationary and not be automatically scrolling. - - If you are able to execute all steps successfully then the test - passes, otherwise it fails. - """; - - public static void main(String[] args) throws Exception { - PassFailJFrame - .builder() - .title("JComboBoxScrollFocusTest Test Instructions") - .instructions(INSTRUCTIONS) - .columns(40) - .testUI(JComboBoxScrollFocusTest::createAndShowGUI) - .build() - .awaitAndCheck(); - } - - private static JFrame createAndShowGUI() { - JFrame frame = new JFrame("JComboBoxScrollFocusTest Test Frame"); - JComboBox combobox = new JComboBox<>(); - for (int i = 0; i < 100; i++) { - combobox.addItem(String.valueOf(i)); - } - frame.add(combobox); - frame.setSize(400, 200); - frame.setLocationRelativeTo(null); - return frame; - } -} From e1d4caa81723d2c1999b141e85bb6eefc2bfb906 Mon Sep 17 00:00:00 2001 From: Damon Nguyen Date: Tue, 17 Jun 2025 11:14:38 -0700 Subject: [PATCH 2/3] Initial commit --- test/jdk/javax/swing/plaf/windows/bug4991587.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/jdk/javax/swing/plaf/windows/bug4991587.java b/test/jdk/javax/swing/plaf/windows/bug4991587.java index e4e4fde2b8620..1e21b84aac240 100644 --- a/test/jdk/javax/swing/plaf/windows/bug4991587.java +++ b/test/jdk/javax/swing/plaf/windows/bug4991587.java @@ -41,8 +41,7 @@ import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.UIManager; - -import com.sun.java.swing.plaf.windows.WindowsButtonUI; +import javax.swing.plaf.basic.BasicButtonUI; public class bug4991587 { static final String INSTRUCTIONS = """ @@ -80,7 +79,7 @@ static JFrame createUI() { return f; } - static class MyButtonUI extends WindowsButtonUI { + static class MyButtonUI extends BasicButtonUI { protected void paintText(Graphics g, AbstractButton b, Rectangle textRect, String text) { g.setColor(Color.blue); From 632556198679b23a4addb3cb5c05f741d215a7e5 Mon Sep 17 00:00:00 2001 From: Damon Nguyen Date: Wed, 18 Jun 2025 12:20:58 -0700 Subject: [PATCH 3/3] Update test to not extend ButtonUI --- .../javax/swing/plaf/windows/bug4991587.java | 22 +++---------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/test/jdk/javax/swing/plaf/windows/bug4991587.java b/test/jdk/javax/swing/plaf/windows/bug4991587.java index 1e21b84aac240..a65c49cff8a15 100644 --- a/test/jdk/javax/swing/plaf/windows/bug4991587.java +++ b/test/jdk/javax/swing/plaf/windows/bug4991587.java @@ -34,14 +34,11 @@ import java.awt.Color; import java.awt.FlowLayout; -import java.awt.Graphics; -import java.awt.Rectangle; -import javax.swing.AbstractButton; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.UIManager; -import javax.swing.plaf.basic.BasicButtonUI; +import javax.swing.border.LineBorder; public class bug4991587 { static final String INSTRUCTIONS = """ @@ -68,27 +65,14 @@ static JFrame createUI() { f.setSize(400, 100); JButton button1 = new JButton("\u0114 Enabled JButton"); - button1.setUI(new MyButtonUI()); + button1.setBorder(new LineBorder(Color.BLUE)); f.add(button1); JButton button2 = new JButton("\u0114 Disabled JButton"); button2.setEnabled(false); - button2.setUI(new MyButtonUI()); + button2.setBorder(new LineBorder(Color.BLUE)); f.add(button2); return f; } - - static class MyButtonUI extends BasicButtonUI { - protected void paintText(Graphics g, AbstractButton b, - Rectangle textRect, String text) { - g.setColor(Color.blue); - g.drawRect(textRect.x, - textRect.y, - textRect.width + 1, // add 1 for the shadow, otherwise it - // will be painted over the textRect - textRect.height); - super.paintText(g, b, textRect, text); - } - } }