Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6417341

IE Window becomes Zombie when closed prior to the modal dialog

    XMLWordPrintable

    Details

    • Subcomponent:
    • Resolved In Build:
      b02
    • CPU:
      x86
    • OS:
      windows_xp

      Backports

        Description

        Run the applet below and press "call dialog" button.

        This creates a modal dialog and a new browser window.

        Close the new browser window using the mouse (click "X" at the right upper corner).

        Result: This window does not exit completely and remains in a "zombie" state. You can see the window in the task bar, but if you click on it, it does not come up.

        The only way to get rid of this window is to kill IE in the task manager.

        Reproducible with the latest 5.0u7 build. This doesn't happen on 1.4.2

        TC05-01_Top.html
        ----------------
        <APPLET CODE="SampleApplet.class" WIDTH=300 HEIGHT=220>
          <PARAM NAME="PAGE" VALUE="TC05-01_Top.html">
        </APPLET>

        SampleApplet.java
        -----------------
        import java.awt.*;
        import java.awt.event.*;
        import java.applet.*;
        import javax.swing.*;
        import java.net.URL;

        public class SampleApplet extends JApplet{
            private JButton jButton1 = new JButton();

            public SampleApplet() {
            }

            public void init() {
                try {
                    jbInit();
                }
                catch(Exception e) {
                    e.printStackTrace();
                }
            }

            private void jbInit() throws Exception {
                jButton1.setBounds(new Rectangle(56, 98, 135, 38));
                jButton1.setText("Call Dialog");
                jButton1.addActionListener(new java.awt.event.ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        jButton1_actionPerformed(e);
                    }
                });
                this.getContentPane().setLayout(null);
                this.setSize(new Dimension(400,300));
                this.getContentPane().add(jButton1, null);
            }

            public void start() {
            }

            public void stop() {
            }

            public void destroy() {
            }

            void jButton1_actionPerformed(ActionEvent e) {
                String strOption[] = new String[2];
                strOption[0] = "OK";
                strOption[1] = "Cancel";
        (new ThreadX(this)).start();
               
                JOptionPane.showOptionDialog(this, "Hello", "Hello", JOptionPane.DEFAULT_OPTION,
        JOptionPane.PLAIN_MESSAGE, null, strOption, strOption[0]);
            }

            class ThreadX extends Thread{
          
                SampleApplet jap = null;

                ThreadX(SampleApplet jap){
        this.jap = jap;
          }

           public void run(){
        try {
                     Thread.sleep(1000);

            this.jap.getAppletContext().showDocument(new URL(this.jap.getCodeBase()+this.jap.getParameter("PAGE")), "_blank");
        }
            catch (Exception ex) {
                ex.printStackTrace();
                 }
        }
        }
        }
        Added two attachements for this zombie windows before and after it happened. (tested with 5u7-b02/XP-pro(sp2) (windows_before_zombie.bmp/windows_zombie_at_close.bmp)

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                ccheung Calvin Cheung
                Reporter:
                ksoshals Kirill Soshalskiy (Inactive)
                Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: