Aha, found it.

In HandleConfigureRequest(), which is called if a client wants to move
its window, you have


    /* If old_bw is zero, the application has asked not to have any border,
       so we indeed do not draw any border.  Maybe it would be better to set
       frame_bw and frame_bw3D to 0 in this case, but I don't know where
       this is handled.  --Stef  */
    if ((cre->value_mask & CWX)/* && Tmp_win->old_bw*/) {       /* override 
even if border change */
        x = cre->x - bw;
        x -= ((gravx < 0) ? 0 : Tmp_win->frame_bw3D);
    }
    if ((cre->value_mask & CWY) /*&& Tmp_win->old_bw*/) {
        y = cre->y - ((gravy < 0) ? 0 : Tmp_win->title_height) - bw;
        y -= ((gravy < 0) ? 0 : Tmp_win->frame_bw3D);
    }


I commented out the /* && Tmp_win->old_bw*/ which you added compared to
the trunk version.

What's happening here is that there is a borderless window with
Tmp_win->old_bw == 0. Above, x and y have been set from the window's
current values. Here, they are to be set to the requested new values.

But the extra condition prevents that.

I'm not 100% sure what you try to do. bw has been set to the requested
new border width, or the existing one. So I think it's fine.
I'm less sure about Tmp_win->frame_bw3D though. Normally only one of the
widths can be non-zero. I'm not sure if we keep that invariant if we
update bw.

-Olaf.
-- 
___ Olaf 'Rhialto' Seibert  -- The Doctor: No, 'eureka' is Greek for
\X/ rhialto/at/xs4all.nl    -- 'this bath is too hot.'

Attachment: pgpS72MexkSC9.pgp
Description: PGP signature

Reply via email to