[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#512401: general: Java, Tk and Tkinter applications broken in Metacity window manager

Package: general
Severity: important

Applications implemented in Java, in Tcl/Tk and in Python using Tkinter
fail to raise their own toplevel windows when working under the Metacity
window manager. This is the case with gpsman and the practical result
is that part of its functionality is broken (e.g., buttons that do
nothing) and users can be unaware of new toplevels that are created
under existing windows and are not visible by failing to be raised.

You can retrieve small tests in Java, Tcl/Tk and Python from


[compile and run with:  javac Controller.java ; java Controller]


[run with: wish testraise.tcl]


[run with: python testraise.py]

These tests create 3 windows each with two buttons for raising the other
two using the standard ways: tofront method in Java, raise command in
Tcl/Tk, tk_raise method in Python+Tkinter. To reproduce the bug, run
each program under Metacity, move the windows so that they partially
overlap the others and then try to use the buttons. The Java program 
only changes the focus, while the other two programs do nothing at all.
Under other window managers (kwin, sawfish, wmaker, fvwm2) all of them
work as expected.

I submitted a bug report to Bugzilla


but the last answer to it was that I should file a bug with the 
language developers as they "need to provide a way to send 
_NET_ACTIVE_WINDOW (and with a correct timestamp!)" when trying
to "bring this window to user's attention".

As Metacity is used by default in many Debian distributions this
problem is likely to severely affect many applications.

Best regards,
Miguel Filgueiras

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.utf-8, LC_CTYPE=en_GB.utf-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Reply to: