jkh@ardent.UUCP (Jordan K. Hubbard) (07/07/88)
It looks like my earlier message got eaten. If you've applied
patch #3, please apply this patch as well. It fixes an evil
bug with window positioning.
Jordan
----- cut here -----
---- patch 04 ----
/*
* CHANGES:
*
* Fixed serious problem in GetButton.c which caused window positions
* to be incorrectly calculated. Cleaned up a few nits in the code
* that were wasting cycles.
*
* UPDATED:
*
* GetButton.c now rev 1.3
*
*/
diff -c awm.dst/FocusChng.c awm/FocusChng.c
*** awm.dst/FocusChng.c Sat Jul 2 16:57:20 1988
--- awm/FocusChng.c Tue Jul 5 19:03:21 1988
***************
*** 64,72 ****
awi = GetAwmInfo(w);
if (!awi) /* probably a menu or something */
Leave(FALSE)
-
w = (FrameFocus && awi->frame) ? awi->frame : awi->client;
-
if (e->detail != NotifyInferior && (e->focus || FrameFocus)) {
struct timeval foo;
--- 64,70 ----
diff -c awm.dst/GetButton.c awm/GetButton.c
*** awm.dst/GetButton.c Sat Jul 2 16:57:22 1988
--- awm/GetButton.c Tue Jul 5 21:23:01 1988
***************
*** 3,9 ****
#ifndef lint
! static char *rcsid_GetButton_c = "$Header: GetButton.c,v 1.2 88/06/22 17:20:45 jjkh Exp $";
#endif lint
#include "X11/copyright.h"
--- 3,9 ----
#ifndef lint
! static char *rcsid_GetButton_c = "$Header: GetButton.c,v 1.3 88/07/05 21:20:45 jjkh Exp $";
#endif lint
#include "X11/copyright.h"
***************
*** 615,625 ****
XFree(wmhints);
}
}
! else
! if ((awi = GetAwmInfo(window)) == NULL)
! awi = RegisterWindow(window);
if (awi->state & ST_WINDOW) {
! PlaceWindow(window);
if (awi->frame) {
XMapRaised(dpy, awi->frame);
XMapWindow(dpy, awi->client);
--- 615,625 ----
XFree(wmhints);
}
}
! else if ((awi = GetAwmInfo(window)) == NULL)
! awi = RegisterWindow(window);
if (awi->state & ST_WINDOW) {
! if (!transient_for)
! PlaceWindow(window);
if (awi->frame) {
XMapRaised(dpy, awi->frame);
XMapWindow(dpy, awi->client);
***************
*** 718,724 ****
{
XWindowAttributes xwa;
AwmInfoPtr awi;
- Boolean adjust = FALSE;
int bch = 0, bcv = 0;
Entry("ConfigureWindow")
--- 718,723 ----
***************
*** 725,755 ****
awi = GetAwmInfo(w);
if (!awi)
Leave(FALSE)
! if (w == awi->client) {
! adjust = TRUE;
! if (awi->attrs & AT_BORDER) {
! bcv = BContext + 1;
! bch = bcv * 2;
! }
}
! if (awi->frame && adjust) {
! int height, width;
height = xwc->height;
width = xwc->width;
!
/* width */
xwc->width += bch;
if (awi->title)
XResizeWindow(dpy, awi->title, xwc->width, titleHeight);
/* height */
! if (awi->attrs & AT_TITLE)
! xwc->height += titleHeight + 2;
if (awi->attrs & AT_BORDER) {
! if (!(awi->attrs & AT_TITLE))
xwc->height += (bcv * 2);
else
xwc->height += bcv;
}
if (PushDown == FALSE) {
if (awi->attrs & AT_TITLE)
--- 724,759 ----
awi = GetAwmInfo(w);
if (!awi)
Leave(FALSE)
!
! if (awi->attrs & AT_BORDER) {
! bcv = BContext + 1;
! bch = bcv * 2;
}
! if (awi->frame) {
! int height, width, x, y;
height = xwc->height;
width = xwc->width;
! x = y = 0;
/* width */
xwc->width += bch;
if (awi->title)
XResizeWindow(dpy, awi->title, xwc->width, titleHeight);
/* height */
! if (awi->attrs & AT_TITLE) {
! y = titleHeight + 2;
! xwc->height += y;
! }
if (awi->attrs & AT_BORDER) {
! if (!(awi->attrs & AT_TITLE)) {
xwc->height += (bcv * 2);
+ y = bcv;
+ }
else
xwc->height += bcv;
+ xwc->x -= (BContext + (awi->border_width ? awi->border_width :
+ 1));
+ x = BContext;
}
if (PushDown == FALSE) {
if (awi->attrs & AT_TITLE)
***************
*** 761,771 ****
if (xwc->y < 0)
xwc->y = 0;
XConfigureWindow(dpy, awi->frame, mask, xwc);
- xwc->width = width;
- xwc->height = height;
- mask ^= (CWX | CWY);
if (awi->gadgets)
PutGadgets(w);
}
XConfigureWindow(dpy, awi->client, mask, xwc);
Leave(TRUE)
--- 765,776 ----
if (xwc->y < 0)
xwc->y = 0;
XConfigureWindow(dpy, awi->frame, mask, xwc);
if (awi->gadgets)
PutGadgets(w);
+ xwc->width = width;
+ xwc->height = height;
+ xwc->x = x;
+ xwc->y = y;
}
XConfigureWindow(dpy, awi->client, mask, xwc);
Leave(TRUE)
diff -c awm.dst/Titlebar.c awm/Titlebar.c
*** awm.dst/Titlebar.c Sat Jul 2 16:57:41 1988
--- awm/Titlebar.c Tue Jul 5 18:54:14 1988
***************
*** 238,244 ****
height += bcv;
width += bch;
}
!
foster = XCreateWindow(dpy, RootWindow(dpy, scr), x, y, width,
height, (bw ? bw : 1), xwa.depth, xwa.class,
xwa.visual, valuemask, &swa);
--- 238,245 ----
height += bcv;
width += bch;
}
! if (y < 0)
! y = 0;
foster = XCreateWindow(dpy, RootWindow(dpy, scr), x, y, width,
height, (bw ? bw : 1), xwa.depth, xwa.class,
xwa.visual, valuemask, &swa);
***************
*** 492,500 ****
if (!(awi = IsTitled(w)))
Leave_void
XGetWindowAttributes(dpy, awi->title, &xwa);
- XQueryPointer(dpy, awi->frame, &junk, &chld, &ijunk, &ijunk,
- &ijunk, &ijunk, &ijunk);
-
if (reversed && TFontBoldInfo)
f_info = TFontBoldInfo;
else
--- 493,498 ----
diff -c awm.dst/awm.c awm/awm.c
*** awm.dst/awm.c Sat Jul 2 16:57:44 1988
--- awm/awm.c Tue Jul 5 21:12:27 1988
***************
*** 184,190 ****
}
/* Destroyed arg, skip over what used to be filename for -e */
else if (!(strcmp(*argv, "--"))) {
! argv++; argc--;
continue;
}
else if (!(strcmp(*argv, "-b")))
--- 184,190 ----
}
/* Destroyed arg, skip over what used to be filename for -e */
else if (!(strcmp(*argv, "--"))) {
! argv += 2; argc -= 2;
continue;
}
else if (!(strcmp(*argv, "-b")))
***************
*** 326,335 ****
*/
if (Titles)
Init_Titles();
- /*
- * Set initial focus to PointerRoot.
- */
- XSetInputFocus(dpy, PointerRoot, None, CurrentTime);
/*
* watch for initial window mapping and window destruction
*/
--- 326,331 ----
***************
*** 436,441 ****
--- 432,438 ----
DrawGC = XCreateGC(dpy, RootWindow(dpy, scr),
GCLineWidth|GCForeground|GCFunction|GCSubwindowMode,
&xgc);
+
/*
* As our last "startup" task, invoke the execfile if was specified.
*/