Bug#512401: general: Java, Tk and Tkinter applications broken in Metacity window manager
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
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
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
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