Skip to content

Commit 2e9cb4b

Browse files
SWinxyTheShermanTanker
authored andcommitted
8267582: BasicLookAndFeel should not call getComponentPopupMenu twice to get a popup menu
Reviewed-by: psadhukhan
1 parent 7348b9e commit 2e9cb4b

File tree

1 file changed

+53
-44
lines changed

1 file changed

+53
-44
lines changed

src/java.desktop/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java

Lines changed: 53 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -25,60 +25,68 @@
2525

2626
package javax.swing.plaf.basic;
2727

28-
import java.awt.Font;
28+
import java.awt.AWTEvent;
2929
import java.awt.Color;
30-
import java.awt.SystemColor;
31-
import java.awt.event.*;
32-
import java.awt.Insets;
3330
import java.awt.Component;
34-
import java.awt.Container;
35-
import java.awt.FocusTraversalPolicy;
36-
import java.awt.AWTEvent;
37-
import java.awt.Toolkit;
38-
import java.awt.Point;
39-
import java.net.URL;
40-
import java.io.*;
4131
import java.awt.Dimension;
42-
import java.awt.KeyboardFocusManager;
32+
import java.awt.Font;
33+
import java.awt.Point;
34+
import java.awt.SystemColor;
35+
import java.awt.Toolkit;
36+
import java.awt.Window;
37+
import java.awt.event.AWTEventListener;
38+
import java.awt.event.ActionEvent;
39+
import java.awt.event.MouseEvent;
40+
import java.beans.PropertyChangeEvent;
41+
import java.beans.PropertyChangeListener;
42+
import java.beans.PropertyVetoException;
43+
import java.io.BufferedInputStream;
44+
import java.io.ByteArrayInputStream;
45+
import java.io.IOException;
46+
import java.io.InputStream;
47+
import java.io.Serializable;
4348
import java.security.AccessController;
4449
import java.security.PrivilegedAction;
45-
import java.util.*;
46-
import java.lang.reflect.*;
47-
import javax.sound.sampled.*;
48-
49-
import sun.awt.AppContext;
50-
import sun.awt.SunToolkit;
51-
import sun.swing.SwingAccessor;
52-
import sun.swing.SwingUtilities2;
53-
import sun.swing.icon.SortArrowIcon;
54-
55-
import javax.swing.LookAndFeel;
50+
import java.util.HashSet;
51+
import java.util.Locale;
52+
53+
import javax.sound.sampled.AudioInputStream;
54+
import javax.sound.sampled.AudioSystem;
55+
import javax.sound.sampled.Clip;
56+
import javax.sound.sampled.DataLine;
57+
import javax.sound.sampled.LineEvent;
58+
import javax.sound.sampled.LineListener;
5659
import javax.swing.AbstractAction;
5760
import javax.swing.Action;
5861
import javax.swing.ActionMap;
59-
import javax.swing.BorderFactory;
62+
import javax.swing.DefaultListCellRenderer;
6063
import javax.swing.JComponent;
61-
import javax.swing.ImageIcon;
62-
import javax.swing.UIDefaults;
63-
import javax.swing.UIManager;
64-
import javax.swing.KeyStroke;
64+
import javax.swing.JInternalFrame;
65+
import javax.swing.JPopupMenu;
6566
import javax.swing.JTextField;
66-
import javax.swing.DefaultListCellRenderer;
67-
import javax.swing.FocusManager;
68-
import javax.swing.LayoutFocusTraversalPolicy;
69-
import javax.swing.SwingUtilities;
70-
import javax.swing.MenuSelectionManager;
67+
import javax.swing.LookAndFeel;
7168
import javax.swing.MenuElement;
72-
import javax.swing.border.*;
73-
import javax.swing.plaf.*;
74-
import javax.swing.text.JTextComponent;
69+
import javax.swing.MenuSelectionManager;
70+
import javax.swing.SwingUtilities;
71+
import javax.swing.UIDefaults;
72+
import javax.swing.UIManager;
73+
import javax.swing.border.BevelBorder;
74+
import javax.swing.plaf.ActionMapUIResource;
75+
import javax.swing.plaf.BorderUIResource;
76+
import javax.swing.plaf.ColorUIResource;
77+
import javax.swing.plaf.ComponentUI;
78+
import javax.swing.plaf.DimensionUIResource;
79+
import javax.swing.plaf.FontUIResource;
80+
import javax.swing.plaf.InsetsUIResource;
7581
import javax.swing.text.DefaultEditorKit;
76-
import javax.swing.JInternalFrame;
82+
83+
import sun.awt.AppContext;
84+
import sun.awt.SunToolkit;
85+
import sun.swing.SwingAccessor;
86+
import sun.swing.SwingUtilities2;
87+
import sun.swing.icon.SortArrowIcon;
88+
7789
import static javax.swing.UIDefaults.LazyValue;
78-
import java.beans.PropertyVetoException;
79-
import java.awt.Window;
80-
import java.beans.PropertyChangeListener;
81-
import java.beans.PropertyChangeEvent;
8290

8391

8492
/**
@@ -2221,14 +2229,15 @@ public void eventDispatched(AWTEvent ev) {
22212229
((BasicSplitPaneDivider)c).getParent();
22222230
}
22232231
if(src != null) {
2224-
if(src.getComponentPopupMenu() != null) {
2232+
JPopupMenu componentPopupMenu = src.getComponentPopupMenu();
2233+
if(componentPopupMenu != null) {
22252234
Point pt = src.getPopupLocation(me);
22262235
if(pt == null) {
22272236
pt = me.getPoint();
22282237
pt = SwingUtilities.convertPoint((Component)c,
22292238
pt, src);
22302239
}
2231-
src.getComponentPopupMenu().show(src, pt.x, pt.y);
2240+
componentPopupMenu.show(src, pt.x, pt.y);
22322241
me.consume();
22332242
}
22342243
}

0 commit comments

Comments
 (0)