heiser@iis.UUCP (Gernot Heiser) (05/03/89)
[Note: I haven't been reading this newsgroup for about a month, so this may already have been reported.] Emacs version 18.53 when compiled for X11 with menus has the following bug: a popup menu is clipped to emacs's window rather than moved within. The following patches fix that: ======================= patch 1 ========================== *** xterm.h Tue May 2 14:31:51 1989 --- xterm.h.orig Tue Sep 8 02:00:07 1987 *************** *** 12,18 **** XREPBUFFER; extern int x_edges_specified; - extern Window XXwindow; #ifndef sigmask #define sigmask(no) (1L << ((no) - 1)) --- 12,17 ---- ======================= end of patch 1 ========================== ======================= patch 2 ========================== *** xmenu.c Tue May 2 14:31:50 1989 --- xmenu.c.orig Tue May 31 09:23:17 1988 *************** *** 217,225 **** char *datap; int ulx, uly, width, height; int dispwidth, dispheight; - #ifdef X11 - XWindowAttributes attributes; - #endif *error = (char *) 0; /* Initialize error pointer to null */ if ((GXMenu = XMenuCreate( X11ONLY (XXdisplay) parent, "emacs" )) == NUL ) --- 217,222 ---- *************** *** 267,275 **** XMenuRecompute(X11ONLY (XXdisplay) GXMenu); #ifdef X11 XXscreen = DefaultScreen(XXdisplay); ! XGetWindowAttributes(XXdisplay, XXwindow, &attributes); ! dispwidth = attributes.width; ! dispheight = attributes.height; #else dispwidth = DisplayWidth(); dispheight = DisplayHeight(); --- 264,271 ---- XMenuRecompute(X11ONLY (XXdisplay) GXMenu); #ifdef X11 XXscreen = DefaultScreen(XXdisplay); ! width = DisplayWidth(XXdisplay, XXscreen); ! height = DisplayHeight(XXdisplay, XXscreen); #else dispwidth = DisplayWidth(); dispheight = DisplayHeight(); ======================= end of patch 2 ========================== [Exporting a varialbe may not be the most elegant fix but anything else would require more extensive changes.] There is one more menu bug which I didn't notice with X10 (using 18.49): If no selection is made from the popup menu, after the menu vanishes the screen is not refreshed until the next event (e.g. hitting the shift key). -- Gernot Heiser Phone: +41 1/256 23 48 Integrated Systems Laboratory CSNET/ARPA: heiser%iis.ethz.ch@relay.cs.net ETH Zuerich UUCP (new): heiser@iis.uucp CH-8092 Zuerich, Switzerland UUCP (old): {uunet,mcvax,...}!iis!heiser