8160755: bug6492108.java test fails with exception Image comparison failed at (0, 0) for image 4 in GTK L&F

Reviewed-by: aivanov, dnguyen, tr
This commit is contained in:
Abhishek Kumar 2024-06-05 16:03:35 +00:00
parent 438121be6b
commit 5dcb7a627e
2 changed files with 149 additions and 4 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2002, 2023, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 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
@ -747,12 +747,12 @@ class GTKStyle extends SynthStyle implements GTKConstants {
region == Region.TOOL_TIP ||
region == Region.TREE ||
region == Region.VIEWPORT ||
region == Region.TEXT_PANE) {
region == Region.TEXT_PANE ||
region == Region.EDITOR_PANE) {
return true;
}
if (!GTKLookAndFeel.is3()) {
if (region == Region.EDITOR_PANE ||
region == Region.FORMATTED_TEXT_FIELD ||
if (region == Region.FORMATTED_TEXT_FIELD ||
region == Region.PASSWORD_FIELD ||
region == Region.SPINNER ||
region == Region.TEXT_FIELD) {

View File

@ -0,0 +1,145 @@
/*
* Copyright (c) 2011, 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 java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JEditorPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextPane;
import javax.swing.UIManager;
import javax.swing.text.JTextComponent;
import jtreg.SkippedException;
/*
* @test
* @bug 6492108 8160755
* @key headful
* @requires (os.family == "linux")
* @summary Verifies that the background is painted the same for
* JTextArea, JTextPane, and JEditorPane.
* @library /javax/swing/regtesthelpers /test/lib
* @build SwingTestHelper Util
* @run main/othervm bug6492108
*/
public class bug6492108 extends SwingTestHelper {
private JPanel panel;
public static void main(String[] args) throws Throwable {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
} catch (Exception e) {
throw new SkippedException("GTK LAF is not supported on this system");
}
new bug6492108().run(args);
}
private static void addTextComps(Container parent,
Class<? extends JTextComponent> type)
throws Throwable
{
JTextComponent text = type.newInstance();
addTextComp(parent, text);
text = type.newInstance();
text.setEditable(false);
addTextComp(parent, text);
text = type.newInstance();
text.setEnabled(false);
addTextComp(parent, text);
text = type.newInstance();
text.setEnabled(false);
text.setEditable(false);
addTextComp(parent, text);
}
private static void addTextComp(Container parent, JTextComponent text) {
JScrollPane sp = new JScrollPane(text);
text.setFocusable(false); // to avoid showing the blinking caret
sp.setPreferredSize(new Dimension(150, 150));
sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
parent.add(sp);
}
protected Component createContentPane() {
panel = new JPanel();
panel.setLayout(new GridLayout(3, 4));
try {
addTextComps(panel, JTextArea.class);
addTextComps(panel, JEditorPane.class);
addTextComps(panel, JTextPane.class);
} catch (Throwable t) {
fail("Problem creating text components");
}
return panel;
}
private void onEDT10() {
requestAndWaitForFocus(panel);
}
private void onEDT20() {
// For each component on the top row, compare against the two
// components below in the same column. All three components in
// that column should be the same pixel-for-pixel.
for (int count = 0; count < 4; count++) {
Component ref = panel.getComponent(count);
Rectangle refRect = new Rectangle(ref.getLocationOnScreen(), ref.getSize());
BufferedImage refImg = robot.createScreenCapture(refRect);
for (int k = 1; k < 3; k++) {
int index = count + (k*4);
Component test = panel.getComponent(index);
Rectangle testRect = new Rectangle(test.getLocationOnScreen(), test.getSize());
BufferedImage testImg = robot.createScreenCapture(testRect);
if (!Util.compareBufferedImages(refImg, testImg)) {
try {
ImageIO.write(refImg, "png", new File("refImg.png"));
ImageIO.write(testImg, "png", new File("testImg.png"));
} catch (IOException ignored) {}
fail("Image comparison failed for images at index " + count + " and " + index);
}
}
}
}
}