# HG changeset patch # User Richard M. Stallman # Date 761877938 0 # Node ID 0aa565fdb1b98b249d6b3d9da05589321423bb1d # Parent 67aa546e4ff178117b9a634a2fc73991cd66de3a (make_lispy_event): For menu bar event in USE_X_TOOLKIT case, convert x position to glyphs after map_event_to_object. Call window_from_coordinates later on. diff -r 67aa546e4ff1 -r 0aa565fdb1b9 src/keyboard.c --- a/src/keyboard.c Tue Feb 22 00:43:04 1994 +0000 +++ b/src/keyboard.c Tue Feb 22 00:45:38 1994 +0000 @@ -2492,9 +2492,7 @@ { int part; FRAME_PTR f = XFRAME (event->frame_or_window); - Lisp_Object window - = window_from_coordinates (f, XINT (event->x), XINT (event->y), - &part); + Lisp_Object window; Lisp_Object posn; #ifdef USE_X_TOOLKIT @@ -2503,14 +2501,22 @@ if (XINT (event->y) < FRAME_MENU_BAR_LINES (f)) #endif { + Lisp_Object items; + #ifdef USE_X_TOOLKIT /* The click happened in the menubar. Look for the menu item selected. */ - Lisp_Object items = map_event_to_object (event, f); + int row, column; + + items = map_event_to_object (event, f); + + pixel_to_glyph_coords (f, XINT (event->x), XINT (event->y), + &column, &row, 0, 0); + XFASTINT (event->x) = column; XFASTINT (event->y) = 1; #else /* not USE_X_TOOLKIT */ int hpos; - Lisp_Object items; + items = FRAME_MENU_BAR_ITEMS (f); for (; CONSP (items); items = XCONS (items)->cdr) { @@ -2535,7 +2541,11 @@ else return Fcons (Qnil, Fcons (position, Qnil)); } - else if (XTYPE (window) != Lisp_Window) + + window = window_from_coordinates (f, XINT (event->x), + XINT (event->y), &part); + + if (XTYPE (window) != Lisp_Window) posn = Qnil; else {