changeset 6024:0aa565fdb1b9

(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.
author Richard M. Stallman <rms@gnu.org>
date Tue, 22 Feb 1994 00:45:38 +0000
parents 67aa546e4ff1
children 6741685c0bb7
files src/keyboard.c
diffstat 1 files changed, 16 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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
 	      {