src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2001, 2009, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
--- 1,7 ----
/*
! * Copyright (c) 2001, 2014, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
*** 98,117 ****
/**
* Updates the UIs of all the known Frames.
*/
private static void updateAllUIs() {
// Check if the current UI is WindowsLookAndfeel and flush the XP style map.
// Note: Change the package test if this class is moved to a different package.
Class uiClass = UIManager.getLookAndFeel().getClass();
if (uiClass.getPackage().equals(DesktopProperty.class.getPackage())) {
XPStyle.invalidateStyle();
}
- Frame appFrames[] = Frame.getFrames();
- for (Frame appFrame : appFrames) {
- updateWindowUI(appFrame);
- }
}
/**
* Updates the UI of the passed in window and all its children.
*/
--- 98,124 ----
/**
* Updates the UIs of all the known Frames.
*/
private static void updateAllUIs() {
+ invalidateStyle();
+ Frame appFrames[] = Frame.getFrames();
+ for (Frame appFrame : appFrames) {
+ updateWindowUI(appFrame);
+ }
+ }
+
+ /**
+ * Invalidates the current style in WindowsLookAndFeel.
+ */
+ private static void invalidateStyle() {
// Check if the current UI is WindowsLookAndfeel and flush the XP style map.
// Note: Change the package test if this class is moved to a different package.
Class uiClass = UIManager.getLookAndFeel().getClass();
if (uiClass.getPackage().equals(DesktopProperty.class.getPackage())) {
XPStyle.invalidateStyle();
}
}
/**
* Updates the UI of the passed in window and all its children.
*/
*** 205,214 ****
--- 212,223 ----
* many desktop properties will change at once.
*/
protected void updateUI() {
if (!isUpdatePending()) {
setUpdatePending(true);
+ // JDK-8039383: invalidate the cached style as soon as possible
+ invalidateStyle();
Runnable uiUpdater = new Runnable() {
public void run() {
updateAllUIs();
setUpdatePending(false);
}