6825362: Avoid calling peer.setZOrder on Window instances
Reviewed-by: anthony
diff --git a/jdk/src/share/classes/java/awt/Component.java b/jdk/src/share/classes/java/awt/Component.java
index 0374333..84d7a81 100644
--- a/jdk/src/share/classes/java/awt/Component.java
+++ b/jdk/src/share/classes/java/awt/Component.java
@@ -6666,7 +6666,7 @@
// Update stacking order
- peer.setZOrder(getHWPeerAboveMe());
+ updateZOrder();
if (!isAddNotifyComplete) {
mixOnShowing();
@@ -9838,4 +9838,11 @@
return doesClassImplement(obj.getClass(), interfaceName);
}
+
+ // Note that the method is overriden in the Window class,
+ // a window doesn't need to be updated in the Z-order.
+ void updateZOrder() {
+ peer.setZOrder(getHWPeerAboveMe());
+ }
+
}
diff --git a/jdk/src/share/classes/java/awt/Container.java b/jdk/src/share/classes/java/awt/Container.java
index ec77fb9..305a4fe 100644
--- a/jdk/src/share/classes/java/awt/Container.java
+++ b/jdk/src/share/classes/java/awt/Container.java
@@ -840,7 +840,7 @@
// Native container changed - need to reparent native widgets
newNativeContainer.reparentChild(comp);
}
- comp.peer.setZOrder(comp.getHWPeerAboveMe());
+ comp.updateZOrder();
if (!comp.isLightweight() && isLightweight()) {
// If component is heavyweight and one of the containers is lightweight
diff --git a/jdk/src/share/classes/java/awt/Window.java b/jdk/src/share/classes/java/awt/Window.java
index 01d9ff5..a95edb9 100644
--- a/jdk/src/share/classes/java/awt/Window.java
+++ b/jdk/src/share/classes/java/awt/Window.java
@@ -3674,6 +3674,10 @@
}); // WindowAccessor
} // static
+ // a window doesn't need to be updated in the Z-order.
+ @Override
+ void updateZOrder() {}
+
} // class Window
diff --git a/jdk/src/windows/classes/sun/awt/windows/WPanelPeer.java b/jdk/src/windows/classes/sun/awt/windows/WPanelPeer.java
index 10ca423..3b4af6d 100644
--- a/jdk/src/windows/classes/sun/awt/windows/WPanelPeer.java
+++ b/jdk/src/windows/classes/sun/awt/windows/WPanelPeer.java
@@ -99,45 +99,4 @@
public Insets insets() {
return getInsets();
}
-
- private native void pRestack(Object[] peers);
- private void restack(Container cont, Vector peers) {
- for (int i = 0; i < cont.getComponentCount(); i++) {
- Component comp = cont.getComponent(i);
- if (!comp.isLightweight()) {
- ComponentPeer peer = comp.getPeer();
- if (peer != null && (peer instanceof WComponentPeer))
- {
- peers.add(peer);
- } else {
- if (log.isLoggable(Level.FINE)) {
- log.log(Level.FINE,
- "peer of a {0} is null or not a WComponentPeer: {1}.",
- new Object[]{comp, peer});
- }
- }
- }
- if (comp.isLightweight() && comp instanceof Container) {
- restack((Container)comp, peers);
- }
- }
- }
-
- /**
- * @see java.awt.peer.ContainerPeer#restack
- */
- public void restack() {
- Vector peers = new Vector();
- peers.add(this);
- Container cont = (Container)target;
- restack(cont, peers);
- pRestack(peers.toArray());
- }
-
- /**
- * @see java.awt.peer.ContainerPeer#isRestackSupported
- */
- public boolean isRestackSupported() {
- return true;
- }
}