# HG changeset patch # User pbansal # Date 1520427009 -19800 # Node ID d432d559a343ea8d27570b60eadf137b7b209995 # Parent 2cebce5e0ecc33826dbfc1df0579e2696238eda3 8190347: [TESTBUG] Test javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentJComboBox.java fails Reviewed-by: serb, psadhukhan diff -r 2cebce5e0ecc -r d432d559a343 test/jdk/ProblemList.txt --- a/test/jdk/ProblemList.txt Wed Mar 07 17:05:28 2018 +0530 +++ b/test/jdk/ProblemList.txt Wed Mar 07 18:20:09 2018 +0530 @@ -622,7 +622,7 @@ javax/swing/JWindow/ShapedAndTranslucentWindows/PerPixelTranslucentSwing.java 8194128 macosx-all javax/swing/JWindow/ShapedAndTranslucentWindows/ShapedPerPixelTranslucentGradient.java 8198667 macosx-all javax/swing/JWindow/ShapedAndTranslucentWindows/SetShapeAndClickSwing.java 8013450 macosx-all -javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentJComboBox.java 8190347 macosx-all +javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentJComboBox.java 8024627 macosx-all # The next test below is an intermittent failure javax/swing/JComboBox/8033069/bug8033069ScrollBar.java 8163367 generic-all javax/swing/JColorChooser/Test6541987.java 8143021 windows-all,linux-all,macosx-all diff -r 2cebce5e0ecc -r d432d559a343 test/jdk/javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentJComboBox.java --- a/test/jdk/javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentJComboBox.java Wed Mar 07 17:05:28 2018 +0530 +++ b/test/jdk/javax/swing/JWindow/ShapedAndTranslucentWindows/TranslucentJComboBox.java Wed Mar 07 18:20:09 2018 +0530 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2018, 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 @@ -21,15 +21,10 @@ * questions. */ -import javax.swing.*; -import java.awt.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; - /* * @test * @key headful - * @bug 8024627 + * @bug 8024627 8190347 * @summary Check if a JComboBox present in a window set with opacity less than * 1.0 shows a translucent drop down * Test Description: Check if TRANSLUCENT translucency type is supported on the @@ -46,6 +41,24 @@ * @run main TranslucentJComboBox */ +import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.RootPaneContainer; +import javax.swing.JList; +import javax.swing.JComboBox; +import javax.swing.JPopupMenu; +import javax.swing.event.PopupMenuEvent; +import javax.swing.event.PopupMenuListener; +import java.awt.GraphicsDevice; +import java.awt.Container; +import java.awt.BorderLayout; +import java.awt.Point; +import java.awt.Color; +import java.awt.Window; +import java.awt.EventQueue; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + public class TranslucentJComboBox extends Common { JComponent south; @@ -53,6 +66,8 @@ JPanel north; volatile boolean southClicked = false; + JPopupMenu popup = null; + public static void main(String[] args) throws Exception { if (checkTranslucencyMode(GraphicsDevice.WindowTranslucency.TRANSLUCENT)) for (Class windowClass: WINDOWS_TO_TEST) @@ -84,6 +99,24 @@ jComboBox.addItem("item " + i); } south = jComboBox; + jComboBox.addPopupMenuListener(new PopupMenuListener() { + + @Override + public void popupMenuWillBecomeVisible(PopupMenuEvent e) { + popup = (JPopupMenu) jComboBox.getAccessibleContext() + .getAccessibleChild(0); + } + + @Override + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { + + } + + @Override + public void popupMenuCanceled(PopupMenuEvent e) { + + } + }); south.addMouseListener(new MouseAdapter() { @Override @@ -142,12 +175,19 @@ ". Before click: " + c1 + ", after click: " + c1b + ", expected is " + south.getBackground()); - if (!c2.equals(c2b) && !south.getBackground().equals(c2b)) + //This following check is only valid if the popup was created below the + // JComboBox and will be opaque or it is created above the JComboBox + // and it can not fit inside the JWindow along with JComboBox and will + // be opaque + if ( !c2.equals(c2b) && !south.getBackground().equals(c2b) && + (popup.getLocationOnScreen().y > ls.y || + window.getHeight() < popup.getHeight() + south.getHeight())) throw new RuntimeException( "Check for opaque drop down failed at point " + p2 + ". Before click: " + c2 + ", after click: " + c2b + ", expected is " + south.getBackground()); + popup = null; EventQueue.invokeAndWait(this::dispose); } }