Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,20 @@ static void compositeRequestFocus(Component component, boolean direction) {
component.requestFocus();
}

@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
setEnabled(this, enabled);
}

private static void setEnabled(Container container, boolean enabled) {
for (Component component : container.getComponents()) {
component.setEnabled(enabled);
if (component instanceof Container) {
setEnabled((Container) component, enabled);
}
}
}

/**
* Returns a user presentable description of this GTKColorChooserPane.
Expand Down Expand Up @@ -674,6 +688,11 @@ int getColorY() {
}

protected void processEvent(AWTEvent e) {

if (!(getGTKColorChooserPanel().isEnabled())) {
return;
}

if (e.getID() == MouseEvent.MOUSE_PRESSED ||
((isSet(FLAGS_DRAGGING) ||isSet(FLAGS_DRAGGING_TRIANGLE)) &&
e.getID() == MouseEvent.MOUSE_DRAGGED)) {
Expand Down
99 changes: 99 additions & 0 deletions test/jdk/javax/swing/JColorChooser/TestDisabledColorChooser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
/*
* Copyright (c) 2022, 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.
*/

/*
* @test
* @bug 8271328
* @key headful
* @requires (os.family == "linux")
* @summary Verifies if user is not able to select color from disabled ColorChooser
* @run main TestDisabledColorChooser
*/

import java.awt.Color;
import java.awt.event.InputEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.Point;
import java.awt.Robot;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public class TestDisabledColorChooser {
private static JFrame frame;
private static JColorChooser Colorchooser;

public TestDisabledColorChooser() {
createAndShowUI();
}

public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
Robot robot = new Robot();
robot.setAutoDelay(100);
try {
SwingUtilities.invokeAndWait(() -> {
new TestDisabledColorChooser();
});

robot.waitForIdle();
robot.delay(1000);

Point pt = frame.getLocationOnScreen();
robot.mouseMove(pt.x+75, pt.y+frame.getHeight()/2);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
Color c1 = Colorchooser.getColor();

Colorchooser.setEnabled(false);
robot.mouseMove(pt.x+85, pt.y+frame.getHeight()/2);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
Color c2 = Colorchooser.getColor();
robot.delay(1000);

if (c1.getRGB() != c2.getRGB())
throw new RuntimeException("User is able to select color after disabling ColorChooser");
else
System.out.println("passed");
} finally {
SwingUtilities.invokeAndWait(() -> {
if (frame != null) {
frame.dispose();
}
});
}
}

private void createAndShowUI() {
frame = new JFrame("Test Disabled ColorChooser Color Selection");
Colorchooser = new JColorChooser();
frame.add(Colorchooser);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}