Package: libwnck22
Version: 2.30.4-2
Severity: normal
When a Java application has multiple main windows (i.e. Frames), and at least
one of them has a modal dialog blocking it, WNCK applications (like the GNOME
window picker applet or avant-window-navigator) seem to "forget" about that
window, even after the modal dialog closes.
I have attached a small Java program that demonstrates this behavior. It brings
up two JFrames and blocks one with a modal JDialog, but the frame with the
dialog does not appear in the window picker or in AWN.
Unfortunately I am not an X programmer, or I would try to investigate this
issue further.
-- System Information:
Debian Release: squeeze/sid
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.36-rc6-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages libwnck22 depends on:
ii libatk1.0-0 1.30.0-1 The ATK accessibility toolkit
ii libc6 2.11.2-6 Embedded GNU C Library: Shared lib
ii libcairo2 1.8.10-6 The Cairo 2D vector graphics libra
ii libglib2.0-0 2.24.2-1 The GLib library of C routines
ii libgtk2.0-0 2.20.1-1+b1 The GTK+ graphical user interface
ii libpango1.0-0 1.28.1-1 Layout and rendering of internatio
ii libstartup-notification0 0.10-1 library for program launch feedbac
ii libwnck-common 2.30.4-2 Window Navigator Construction Kit
ii libx11-6 2:1.3.3-3 X11 client-side library
ii libxres1 2:1.0.4-1 X11 Resource extension library
libwnck22 recommends no packages.
libwnck22 suggests no packages.
-- no debconf information
import java.awt.EventQueue;
import javax.swing.*;
public final class WNCKBreakageDemo {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame demoFrame1 = new JFrame();
demoFrame1.setTitle("Demo frame 1");
demoFrame1.setSize(100, 100);
demoFrame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
demoFrame1.setVisible(true);
JFrame demoFrame2 = new JFrame();
demoFrame2.setTitle("Demo frame 2");
demoFrame2.setSize(100, 100);
demoFrame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
demoFrame2.setVisible(true);
JDialog demoDialog1 = new JDialog(demoFrame1);
demoDialog1.setModal(true);
demoDialog1.setTitle("Demo dialog 1");
demoDialog1.setSize(50, 50);
demoDialog1.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
demoDialog1.setVisible(true);
}
});
}
}