It does solve the firefox problem.
But I tried to reproduce the firefox problem with other apps and here is what I discovered:
When running fullscreen game, tagged as a float, the Sander's patch did all right but your doesn't ( i.e. the behaviour described by usrucb occurs).


On 9/29/06, Anselm R. Garbe <[EMAIL PROTECTED]> wrote:
On Thu, Sep 28, 2006 at 07:28:06PM +0200, Sander van Dijk wrote:
> Well, the problem is quite simple: currently, dwm's configurerequest
> handler (see event.c:configurerequest()) behaves as if it is
> guaranteed that the requesting client is in the view. It calls
> resize() on the floating client, which is then put into view, whether
> or not it should be. In this case, firefox is the one doing that
> configurerequest. Attached to this mail is a possible fix, although
> I'm not sure if it's the best one possible (for instance, this
> wouldn't catch configurerequests by windows that don't belong to a
> client, which seems a possibility looking at configurerequest()) .
> Well, at least it seems to work for the firefox issue :-)
>
> Greetings, Sander.
>
> PS. Note that this turning up now and not earlier may be due to the
> fact that resize() recently changed to make sure that visible clients
> are _always_ at least partially on the screen; this is correct
> behavior, cause otherwise it was possible to generate offscreen
> transient (floating) windows that one could never move on screen (I
> managed to do that with some firefox popups before that change to
> resize()). The only way to get rid of them was to Alt-Tab to them and
> then, without seeing what was going on, Alt-Shift-c'ing them away.
> Yuck.

I'd like to know for dwm-1.8 (which will be released by end of
next week approx.) if the following fixes the problem already:

diff -r 2c29d74b11dc event.c
--- a/event.c   Fri Sep 29 12:38:27 2006 +0200
+++ b/event.c   Fri Sep 29 12:47:59 2006 +0200
@@ -177,9 +177,8 @@ configurerequest(XEvent *e) {
                        configure(c);
                XSync(dpy, False);
                if(c->isfloat) {
-                       resize(c, False, TopLeft);
-                       if(!isvisible(c))
-                               ban(c);
+                       if(isvisible(c))
+                               resize(c, False, TopLeft);
                }
                else
                        arrange(NULL);

This changes Sander's patch somewhat.

Regards,
--
Anselm R. Garbe  ><><   www.ebrag.de  ><><  GPG key: 0D73F361


Reply via email to