changeset 6022:713d4d840a11

(x_had_errors_p): New function. (construct_menu_click): Convert x pos from pixels to glyphs. Move function after pixel_to_glyph_coords. [!USE_X_TOOLKIT] (x_any_window_to_frame): Define as x_window_to_frame.
author Richard M. Stallman <rms@gnu.org>
date Mon, 21 Feb 1994 21:54:33 +0000
parents de651e959736
children 67aa546e4ff1
files src/xterm.c
diffstat 1 files changed, 43 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/src/xterm.c	Mon Feb 21 21:50:02 1994 +0000
+++ b/src/xterm.c	Mon Feb 21 21:54:33 1994 +0000
@@ -98,6 +98,10 @@
 extern void free_frame_menubar ();
 #endif /* USE_X_TOOLKIT */
 
+#ifndef USE_X_TOOLKIT
+#define x_any_window_to_frame x_window_to_frame
+#endif
+
 #ifdef HAVE_X11
 #define XMapWindow XMapRaised		/* Raise them when mapping. */
 #else /* ! defined (HAVE_X11) */
@@ -1619,31 +1623,6 @@
   XFreeModifiermap (mods);
 }
 
-/* Prepare a menu-event in *RESULT for placement in the input queue.  */
-
-static Lisp_Object
-construct_menu_click (result, event, f)
-     struct input_event *result;
-     XButtonEvent *event;
-     struct frame *f;
-{
-  /* Make the event type no_event; we'll change that when we decide
-     otherwise.  */
-  result->kind = mouse_click;
-  XSET (result->code, Lisp_Int, event->button - Button1);
-  result->timestamp = event->time;
-  result->modifiers = (x_x_to_emacs_modifiers (event->state)
-		       | (event->type == ButtonRelease
-			  ? up_modifier 
-			  : down_modifier));
-
-  {
-    XFASTINT (result->x) = event->x;
-    XFASTINT (result->y) = -1;    /* special meaning for menubar */
-    XSET (result->frame_or_window, Lisp_Frame, f);
-  }
-}
-
 /* Convert between the modifier bits X uses and the modifier bits
    Emacs uses.  */
 static unsigned int
@@ -1782,6 +1761,34 @@
     XSET (result->frame_or_window, Lisp_Frame, f);
   }
 }
+
+/* Prepare a menu-event in *RESULT for placement in the input queue.  */
+
+static Lisp_Object
+construct_menu_click (result, event, f)
+     struct input_event *result;
+     XButtonEvent *event;
+     struct frame *f;
+{
+  /* Make the event type no_event; we'll change that when we decide
+     otherwise.  */
+  result->kind = mouse_click;
+  XSET (result->code, Lisp_Int, event->button - Button1);
+  result->timestamp = event->time;
+  result->modifiers = (x_x_to_emacs_modifiers (event->state)
+		       | (event->type == ButtonRelease
+			  ? up_modifier 
+			  : down_modifier));
+
+  {
+    int row, column;
+
+    pixel_to_glyph_coords (f, event->x, event->y, &column, &row, NULL, 0);
+    XFASTINT (result->x) = column;
+    XFASTINT (result->y) = -1;
+    XSET (result->frame_or_window, Lisp_Frame, f);
+  }
+}
 
 /* Function to report a mouse movement to the mainstream Emacs code.
    The input handler calls this.
@@ -4291,6 +4298,17 @@
     }
 }
 
+/* Nonzero if we had any X protocol errors since we did x_catch_errors.  */
+
+int
+x_had_errors_p ()
+{
+  /* Make sure to catch any errors incurred so far.  */
+  XSync (x_current_display, False);
+
+  return x_caught_error_message[0] != 0;
+}
+
 /* Stop catching X protocol errors and let them make Emacs die.  */
 
 void