diff --git a/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java b/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java index d338c08d6fd8c9c0d14055d085d4e271fbcaa322..a640862c50c506db7c3b8c55a5386516fdb598dc 100644 --- a/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java @@ -97,14 +97,11 @@ class GTKFileChooserUI extends SynthFileChooserUI { private static final Dimension hstrut3 = new Dimension(3, 1); private static final Dimension vstrut10 = new Dimension(1, 10); - private static final Insets insets = new Insets(10, 10, 10, 10); - private static Dimension prefListSize = new Dimension(75, 150); private static Dimension PREF_SIZE = new Dimension(435, 360); private static Dimension MIN_SIZE = new Dimension(200, 300); - private static Dimension PREF_ACC_SIZE = new Dimension(10, 10); private static Dimension ZERO_ACC_SIZE = new Dimension(1, 1); private static Dimension MAX_SIZE = new Dimension(Short.MAX_VALUE, Short.MAX_VALUE); @@ -125,7 +122,6 @@ class GTKFileChooserUI extends SynthFileChooserUI { private JPanel bottomButtonPanel; private GTKDirectoryModel model = null; private Action newFolderAction; - private JPanel interior; private boolean readOnly; private boolean showDirectoryIcons; private boolean showFileIcons; @@ -710,15 +706,19 @@ class GTKFileChooserUI extends SynthFileChooserUI { bottomButtonPanel.setName("GTKFileChooser.bottomButtonPanel"); align(bottomButtonPanel); + JPanel pnButtons = new JPanel(new GridLayout(1, 2, 5, 0)); + JButton cancelButton = getCancelButton(fc); align(cancelButton); cancelButton.setMargin(buttonMargin); - bottomButtonPanel.add(cancelButton); + pnButtons.add(cancelButton); - JButton approveButton = getApproveButton(fc);; + JButton approveButton = getApproveButton(fc); align(approveButton); approveButton.setMargin(buttonMargin); - bottomButtonPanel.add(approveButton); + pnButtons.add(approveButton); + + bottomButtonPanel.add(pnButtons); if (fc.getControlButtonsAreShown()) { fc.add(bottomButtonPanel, BorderLayout.SOUTH); @@ -1108,7 +1108,7 @@ class GTKFileChooserUI extends SynthFileChooserUI { // Get the canonical (full) path. This has the side // benefit of removing extraneous chars from the path, // for example /foo/bar/ becomes /foo/bar - File canonical = null; + File canonical; try { canonical = fsv.createFileObject(ShellFolder.getNormalizedFile(directory).getPath()); } catch (IOException e) { diff --git a/src/share/classes/javax/swing/MenuSelectionManager.java b/src/share/classes/javax/swing/MenuSelectionManager.java index 1070f35983c20a7f7596f47f4d81e084040dc5dd..aec83c9ab193302929d8fad9984ed151a5f375b8 100644 --- a/src/share/classes/javax/swing/MenuSelectionManager.java +++ b/src/share/classes/javax/swing/MenuSelectionManager.java @@ -218,9 +218,9 @@ public class MenuSelectionManager { int selectionSize; p = event.getPoint(); - Component source = (Component)event.getSource(); + Component source = event.getComponent(); - if (!source.isShowing()) { + if ((source != null) && !source.isShowing()) { // This can happen if a mouseReleased removes the // containing component -- bug 4146684 return; @@ -236,7 +236,9 @@ public class MenuSelectionManager { return; } - SwingUtilities.convertPointToScreen(p,source); + if (source != null) { + SwingUtilities.convertPointToScreen(p, source); + } screenX = p.x; screenY = p.y; diff --git a/test/javax/swing/JPopupMenu/6690791/bug6690791.java b/test/javax/swing/JPopupMenu/6690791/bug6690791.java new file mode 100644 index 0000000000000000000000000000000000000000..bfbf3c39e4ea75d8b33876efb2489fac743c7b7f --- /dev/null +++ b/test/javax/swing/JPopupMenu/6690791/bug6690791.java @@ -0,0 +1,44 @@ +/* + * 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 6690791 + * @summary Checks that there is no ClassCastException + * in MenuSelectionManager.processMouseEvent() + * @author Mikhail Lapshin + * @run main bug6690791 + */ + +import javax.swing.*; +import java.awt.event.MouseEvent; + +public class bug6690791 { + public static void main(String[] args) throws Exception { + MouseEvent me = new MouseEvent(new JLabel(), MouseEvent.MOUSE_CLICKED, + System.currentTimeMillis(), MouseEvent.ALT_MASK, + 10, 10, 100, 100, 1, false, MouseEvent.BUTTON1); + me.setSource(new Object()); + MenuSelectionManager.defaultManager().processMouseEvent(me); + } +}