Richard.Draves@RPD.MACH.CS.CMU.EDU (11/28/88)
The twm in the contrib distribution of X.V11R3 doesn't handle colormap notifications properly. At least on my system (RT with Megapel & Moniterm, running R2 server), a twm on the (black & white) Moniterm display works fine, but a twm on the (color) Megapel display doesn't handle window movement or resizing properly. It also chews up mucho cycles communicating with the server. The server sends twm a ColormapNotify event; in response, twm does an XInstallColormap; this generates another ColormapNotify event, etc. I modified HandleColormapNotify as follows. Disclaimer: I don't know anything about colormaps or what the ICCCM has to say about them. However, with this change twm seems to work OK on my color display. Rich *** events.c.~1~ Sun Nov 27 14:15:39 1988 --- events.c Sun Nov 27 14:23:27 1988 *************** *** 202,214 **** void HandleColormapNotify() { #ifdef DEBUG fprintf(stderr, "ColormapNotify\n"); #endif - if (tmp_win != NULL) - XGetWindowAttributes(dpy, tmp_win->w, &tmp_win->attr); ! if (tmp_win == Focus) XInstallColormap(dpy, tmp_win->attr.colormap); } --- 202,217 ---- void HandleColormapNotify() { + XColormapEvent *cevent = (XColormapEvent *) &event; + #ifdef DEBUG fprintf(stderr, "ColormapNotify\n"); #endif ! if ((cevent->new == True) && (tmp_win != NULL)) ! tmp_win->attr.colormap = cevent->colormap; ! ! if ((cevent->state == ColormapUninstalled) && (tmp_win == Focus)) XInstallColormap(dpy, tmp_win->attr.colormap); }