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); } }); } }