diff --git a/src/java.desktop/share/classes/java/awt/Window.java b/src/java.desktop/share/classes/java/awt/Window.java index 417ae8b5d6a3..c056123597ef 100644 --- a/src/java.desktop/share/classes/java/awt/Window.java +++ b/src/java.desktop/share/classes/java/awt/Window.java @@ -4373,6 +4373,11 @@ public class Window extends Container implements Accessible { } } + @Override + public void addWindowListener(Window w, WindowListener listener) { + w.addWindowListener(listener); + } + private static void dumpCounter(final String counterName, final double valPerSecond) { if (USE_COUNTERS) { doLog(String.format("%s per second: %.2f", counterName, valPerSecond), diff --git a/src/java.desktop/share/classes/sun/awt/AWTAccessor.java b/src/java.desktop/share/classes/sun/awt/AWTAccessor.java index 492a5f28ca76..bfef836ff25d 100644 --- a/src/java.desktop/share/classes/sun/awt/AWTAccessor.java +++ b/src/java.desktop/share/classes/sun/awt/AWTAccessor.java @@ -37,6 +37,7 @@ import java.awt.event.InputEvent; import java.awt.event.InvocationEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; +import java.awt.event.WindowListener; import java.awt.image.BufferStrategy; import java.awt.peer.ComponentPeer; @@ -337,6 +338,8 @@ public final class AWTAccessor { double getCounterPerSecond(Window w, String counterName); void dumpStats(Window w, boolean reset, StringBuilder sb); + + void addWindowListener(Window w, WindowListener listener); } /** diff --git a/src/java.desktop/unix/classes/sun/awt/wl/WLFramePeer.java b/src/java.desktop/unix/classes/sun/awt/wl/WLFramePeer.java index b4c302268c7a..7a694fd9ca06 100644 --- a/src/java.desktop/unix/classes/sun/awt/wl/WLFramePeer.java +++ b/src/java.desktop/unix/classes/sun/awt/wl/WLFramePeer.java @@ -26,6 +26,7 @@ package sun.awt.wl; import java.awt.*; +import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.peer.FramePeer; import sun.awt.AWTAccessor; @@ -42,6 +43,12 @@ public class WLFramePeer extends WLDecoratedPeer implements FramePeer { super(target, target.isUndecorated(), Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.ICONIFIED), Toolkit.getDefaultToolkit().isFrameStateSupported(Frame.MAXIMIZED_BOTH)); + AWTAccessor.getWindowAccessor().addWindowListener(target, new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + getFrame().removeNotify(); + } + }); } @Override