# HG changeset patch # User dav # Date 1223455817 -14400 # Node ID 07500c30ab46a2d70d8a49a4b9cd6058e56047f9 # Parent 09060e8ca52cf03f395b99238271ad0af7f9a9a7 5076635: Double click speed is not honored in KDE linux Reviewed-by: art, dcherepanov diff -r 09060e8ca52c -r 07500c30ab46 jdk/src/solaris/classes/sun/awt/X11/XToolkit.java --- a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java Fri Jul 25 15:19:11 2008 +0400 +++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java Wed Oct 08 12:50:17 2008 +0400 @@ -61,6 +61,10 @@ private static Logger keyEventLog = Logger.getLogger("sun.awt.X11.kye.XToolkit"); private static final Logger backingStoreLog = Logger.getLogger("sun.awt.X11.backingStore.XToolkit"); + //There is 400 ms is set by default on Windows and 500 by default on KDE and GNOME. + //We use the same hardcoded constant. + private final static int AWT_MULTICLICK_DEFAULT_TIME = 500; + static final boolean PRIMARY_LOOP = false; static final boolean SECONDARY_LOOP = true; @@ -1211,7 +1215,6 @@ String multiclick_time_query = XlibWrapper.XGetDefault(XToolkit.getDisplay(), "*", "multiClickTime"); if (multiclick_time_query != null) { awt_multiclick_time = (int)Long.parseLong(multiclick_time_query); - // awt_multiclick_time = XtGetMultiClickTime(awt_display); } else { multiclick_time_query = XlibWrapper.XGetDefault(XToolkit.getDisplay(), "OpenWindows", "MultiClickTimeout"); @@ -1221,20 +1224,19 @@ milliseconds */ awt_multiclick_time = (int)Long.parseLong(multiclick_time_query) * 100; } else { - awt_multiclick_time = 200; - // awt_multiclick_time = XtGetMultiClickTime(awt_display); + awt_multiclick_time = AWT_MULTICLICK_DEFAULT_TIME; } } } catch (NumberFormatException nf) { - awt_multiclick_time = 200; + awt_multiclick_time = AWT_MULTICLICK_DEFAULT_TIME; } catch (NullPointerException npe) { - awt_multiclick_time = 200; + awt_multiclick_time = AWT_MULTICLICK_DEFAULT_TIME; } } finally { awtUnlock(); } if (awt_multiclick_time == 0) { - awt_multiclick_time = 200; + awt_multiclick_time = AWT_MULTICLICK_DEFAULT_TIME; } } diff -r 09060e8ca52c -r 07500c30ab46 jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.html Wed Oct 08 12:50:17 2008 +0400 @@ -0,0 +1,42 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + + + + + + + +

bug 6176814
Bug ID: 6176814

+ +

This is an AUTOMATIC test, simply wait for completion

+ + + + diff -r 09060e8ca52c -r 07500c30ab46 jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.java Wed Oct 08 12:50:17 2008 +0400 @@ -0,0 +1,112 @@ +/* + * Copyright 2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + test + @bug 6176814 + @summary Metalworks frame maximizes after the move + @author Andrei.Dmitriev area=Event + @run applet MaximizedFrameTest.html +*/ + +import java.applet.Applet; +import javax.swing.*; +import java.awt.event.*; +import java.awt.*; + +public class MaximizedFrameTest extends Applet +{ + final int ITERATIONS_COUNT = 20; + Robot robot; + Point framePosition; + Point newFrameLocation; + JFrame frame; + Rectangle gcBounds; + public static Object LOCK = new Object(); + + public void init() + { + String[] instructions = + { + "This is an AUTOMATIC test", + "simply wait until it is done" + }; + JFrame.setDefaultLookAndFeelDecorated(true); + frame = new JFrame("JFrame Maximization Test"); + frame.pack(); + frame.setSize(450, 260); + }//End init() + + public void start () + { + frame.setVisible(true); + validate(); + JLayeredPane lPane = frame.getLayeredPane(); + // System.out.println("JFrame's LayeredPane " + lPane ); + Component titleComponent = null; + boolean titleFound = false; + for (int j=0; j < lPane.getComponentsInLayer(JLayeredPane.FRAME_CONTENT_LAYER.intValue()).length; j++){ + titleComponent = lPane.getComponentsInLayer(JLayeredPane.FRAME_CONTENT_LAYER.intValue())[j]; + if (titleComponent.getClass().getName().equals("javax.swing.plaf.metal.MetalTitlePane")){ + titleFound = true; + break; + } + } + if ( !titleFound ){ + throw new RuntimeException("Test Failed. Unable to determine title's size."); + } + //-------------------------------- + // it is sufficient to get maximized Frame only once. + Point tempMousePosition; + framePosition = frame.getLocationOnScreen(); + try { + robot = new Robot(); + tempMousePosition = new Point(framePosition.x + + frame.getWidth()/2, + framePosition.y + + titleComponent.getHeight()/2); + robot.mouseMove(tempMousePosition.x, tempMousePosition.y); + for (int iteration=0; iteration < ITERATIONS_COUNT; iteration++){ + robot.mousePress(InputEvent.BUTTON1_MASK); + gcBounds = + GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getConfigurations()[0].getBounds(); + //Moving a mouse pointer less than a few pixels + //leads to rising a double click event. + //We have to use exceeded the AWT_MULTICLICK_SMUDGE + //const value (which is 4 by default on GNOME) to test that. + tempMousePosition.x += 5; + robot.mouseMove(tempMousePosition.x, tempMousePosition.y); + robot.delay(70); + robot.mouseRelease(InputEvent.BUTTON1_MASK); + if ( frame.getExtendedState() != 0 ){ + throw new RuntimeException ("Test failed. JFrame was maximized. ExtendedState is : "+frame.getExtendedState()); + } + robot.delay(500); + } //for iteration + + }catch(AWTException e) { + throw new RuntimeException("Test Failed. AWTException thrown."); + } + System.out.println("Test passed."); + }// start() +}// class