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

2011-06-01 Thread Jonathan Nieder
Hi Miguel,

Miguel Filgueiras wrote:

 I'm willing to help but could you please explain how to get
 the patch and how to install it?

Probably the easiest way is

 # apt-get build-dep metacity
 # apt-get install git fakeroot

 $ apt-get source metacity
 $ cd metacity-2.30.1
 $ git init
 $ git add .
 $ git commit -m basis
 $ wget 'http://bugzilla-attachments.gnome.org/attachment.cgi?id=145814'
 $ git am 'attachment.cgi?id=145814'
 $ sed -i -e 's/== 1/= 1/' configure
 $ dpkg-buildpackage -b

I am not sure why the patch doesn't apply with patch -p1.  Oh well.

 And thanks for your work on it!

Ah, I didn't do anything. :)



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



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

2011-06-01 Thread Miguel Filgueiras
Hi Jonathan,

Thanks for your messages.

Jonathan Nieder jrnie...@gmail.com wrote:
 This looks like the same bug as http://bugs.debian.org/340725, so
 I'm merging them optimistically.

Yes, it seems exactly the same problem. What is described by
Tim Cutts (We have a number of Tcl/Tk apps...) in

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=340725#37

is the original problem I had here.

The fact that raise is just a hint and not assured to work
is annoying: this means we cannot rely on it for making
sure the user will be aware of windows that got hidden.
So it seems we need to check if the window is in fact raised
and if not create a new one (hopefully at the top of the
existing ones) with a message... This quite messy.

 
 The good news is, upstream[1] seems to have a fix:
 
 | Allow explicit raises from same client, not just same app
 |
 | Here's a patch that takes the approach I proposed. As compared to
 | Olivier's patch:
 |
 |  - It works even for clients that don't set WM_CLIENT_LEADER
 |(WM_CLIENT_LEADER will only be set for apps that support session
 |management.)
 |
 |  - It affects only this particular check and not all use of
 |meta_window_same_application(); this means that it won't cause
 |regressions for applications that have intentionally split
 themselves |into mutliple separate window groups.
 |
 |(For this particular case, we can assume that an application
 |sophisticated enough to intentionally use multiple window groups
 is |either not going to XRaiseWindow(), or is only going to
 |XRaiseWindow() when appropriate; there's no point in trying to
 keep |such an application from stepping on its *own* toes.)
 
 If you find a chance to test the patch, that would be excellent.

I'm willing to help but could you please explain how to get
the patch and how to install it?

 Thanks for reporting it.

And thanks for your work on it!
Miguel



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



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

2011-05-28 Thread Jonathan Nieder
forcemerge 340725 512401
quit

Hi Miguel,

Miguel Filgueiras wrote:

 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.
[...]
 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.

This looks like the same bug as http://bugs.debian.org/340725, so
I'm merging them optimistically.

The good news is, upstream[1] seems to have a fix:

| Allow explicit raises from same client, not just same app
|
| Here's a patch that takes the approach I proposed. As compared to
| Olivier's patch:
|
|  - It works even for clients that don't set WM_CLIENT_LEADER
|(WM_CLIENT_LEADER will only be set for apps that support session
|management.)
|
|  - It affects only this particular check and not all use of
|meta_window_same_application(); this means that it won't cause
|regressions for applications that have intentionally split themselves
|into mutliple separate window groups.
|
|(For this particular case, we can assume that an application
|sophisticated enough to intentionally use multiple window groups is
|either not going to XRaiseWindow(), or is only going to
|XRaiseWindow() when appropriate; there's no point in trying to keep
|such an application from stepping on its *own* toes.)

If you find a chance to test the patch, that would be excellent.  Thanks
for reporting it.

Regards,
Jonathan

[1] https://bugzilla.gnome.org/show_bug.cgi?id=567528



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



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

2009-01-20 Thread Miguel Filgueiras
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

http://www.ncc.up.pt/gpsman/tmp/Controller.java
http://www.ncc.up.pt/gpsman/tmp/Raisewindow.java

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

http://www.ncc.up.pt/gpsman/tmp/testraise.tcl

[run with: wish testraise.tcl]

http://www.ncc.up.pt/gpsman/tmp/testraise.py

[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

http://bugzilla.gnome.org/show_bug.cgi?id=567528

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



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org