3
# Date 1330366708 -7200
4
# Node ID 7047bf04103450562b485e00c622fea18b227eea
5
# Parent fec31f67f89f877945d3fd9c827ecbaf55c6c924
6
7143614: SynthLookAndFeel stability improvement
9
diff --git a/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java b/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java
10
--- openjdk/jdk/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java
11
+++ openjdk/jdk/src/share/classes/javax/swing/plaf/synth/SynthButtonUI.java
16
- if (SynthLookAndFeel.selectedUI == this) {
17
- return SynthLookAndFeel.selectedUIState | SynthConstants.ENABLED;
18
+ if (SynthLookAndFeel.getSelectedUI() == this) {
19
+ return SynthLookAndFeel.getSelectedUIState() | SynthConstants.ENABLED;
21
AbstractButton button = (AbstractButton) c;
22
ButtonModel model = button.getModel();
23
diff --git a/src/share/classes/javax/swing/plaf/synth/SynthLabelUI.java b/src/share/classes/javax/swing/plaf/synth/SynthLabelUI.java
24
--- openjdk/jdk/src/share/classes/javax/swing/plaf/synth/SynthLabelUI.java
25
+++ openjdk/jdk/src/share/classes/javax/swing/plaf/synth/SynthLabelUI.java
28
private int getComponentState(JComponent c) {
29
int state = SynthLookAndFeel.getComponentState(c);
30
- if (SynthLookAndFeel.selectedUI == this &&
31
+ if (SynthLookAndFeel.getSelectedUI() == this &&
32
state == SynthConstants.ENABLED) {
33
- state = SynthLookAndFeel.selectedUIState | SynthConstants.ENABLED;
34
+ state = SynthLookAndFeel.getSelectedUIState() | SynthConstants.ENABLED;
38
diff --git a/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java b/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java
39
--- openjdk/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java
40
+++ openjdk/jdk/src/share/classes/javax/swing/plaf/synth/SynthLookAndFeel.java
42
private static final Object STYLE_FACTORY_KEY = new Object(); // com.sun.java.swing.plaf.gtk.StyleCache
45
+ * AppContext key to get selectedUI.
47
+ private static final Object SELECTED_UI_KEY = new StringBuilder("selectedUI");
50
+ * AppContext key to get selectedUIState.
52
+ private static final Object SELECTED_UI_STATE_KEY = new StringBuilder("selectedUIState");
55
* The last SynthStyleFactory that was asked for from AppContext
56
* <code>lastContext</code>.
58
private static SynthStyleFactory lastFactory;
60
- * If this is true it indicates there is more than one AppContext active
61
- * and that we need to make sure in getStyleCache the requesting
62
- * AppContext matches that of <code>lastContext</code> before returning
65
- private static boolean multipleApps;
67
* AppContext lastLAF came from.
69
private static AppContext lastContext;
71
- // Refer to setSelectedUI
72
- static ComponentUI selectedUI;
73
- // Refer to setSelectedUI
74
- static int selectedUIState;
77
* SynthStyleFactory for the this SynthLookAndFeel.
81
private Handler _handler;
83
+ static ComponentUI getSelectedUI() {
84
+ return (ComponentUI) AppContext.getAppContext().get(SELECTED_UI_KEY);
88
* Used by the renderers. For the most part the renderers are implemented
89
* as Labels, which is problematic in so far as they are never selected.
91
static void setSelectedUI(ComponentUI uix, boolean selected,
92
boolean focused, boolean enabled,
95
- selectedUIState = 0;
96
+ int selectedUIState = 0;
99
selectedUIState = SynthConstants.SELECTED;
101
@@ -141,19 +143,32 @@
104
selectedUIState |= SynthConstants.ENABLED;
105
- selectedUIState = SynthConstants.FOCUSED;
107
+ selectedUIState |= SynthConstants.FOCUSED;
111
selectedUIState |= SynthConstants.DISABLED;
115
+ AppContext context = AppContext.getAppContext();
117
+ context.put(SELECTED_UI_KEY, uix);
118
+ context.put(SELECTED_UI_STATE_KEY, Integer.valueOf(selectedUIState));
121
+ static int getSelectedUIState() {
122
+ Integer result = (Integer) AppContext.getAppContext().get(SELECTED_UI_STATE_KEY);
124
+ return result == null ? 0 : result.intValue();
128
* Clears out the selected UI that was last set in setSelectedUI.
130
static void resetSelectedUI() {
132
+ AppContext.getAppContext().remove(SELECTED_UI_KEY);
137
// for a particular AppContext.
138
synchronized(SynthLookAndFeel.class) {
139
AppContext context = AppContext.getAppContext();
140
- if (!multipleApps && context != lastContext &&
141
- lastContext != null) {
142
- multipleApps = true;
145
lastContext = context;
146
context.put(STYLE_FACTORY_KEY, cache);
147
@@ -185,17 +196,13 @@
149
public static SynthStyleFactory getStyleFactory() {
150
synchronized(SynthLookAndFeel.class) {
151
- if (!multipleApps) {
152
- return lastFactory;
154
AppContext context = AppContext.getAppContext();
156
if (lastContext == context) {
159
lastContext = context;
160
- lastFactory = (SynthStyleFactory)AppContext.getAppContext().get
161
- (STYLE_FACTORY_KEY);
162
+ lastFactory = (SynthStyleFactory) context.get(STYLE_FACTORY_KEY);