]> code.delx.au - gnu-emacs/blobdiff - src/termhooks.h
2002-08-10 Andrew Choi <akochoi@shaw.ca>
[gnu-emacs] / src / termhooks.h
index 48d66d390ebef52e8f7e9151ad5c27e46efa3041..a479b5bdc1a719028b850a24df92ab6cbaa7e68d 100644 (file)
@@ -44,9 +44,6 @@ extern void (*clear_end_of_line_hook) P_ ((int));
 
 extern void (*ins_del_lines_hook) P_ ((int, int));
 
-extern void (*change_line_highlight_hook) P_ ((int, int, int, int));
-extern void (*reassert_line_highlight_hook) P_ ((int, int));
-
 extern void (*insert_glyphs_hook) P_ ((struct glyph *s, int n));
 extern void (*write_glyphs_hook) P_ ((struct glyph *s, int n));
 extern void (*delete_glyphs_hook) P_ ((int));
@@ -204,10 +201,10 @@ extern void (*judge_scroll_bars_hook) P_ ((struct frame *FRAME));
 
 enum event_kind
 {
-  no_event,                    /* nothing happened.  This should never
+  NO_EVENT,                    /* nothing happened.  This should never
                                   actually appear in the event queue.  */
 
-  ascii_keystroke,             /* The ASCII code is in .code, perhaps
+  ASCII_KEYSTROKE_EVENT,       /* The ASCII code is in .code, perhaps
                                   with modifiers applied.
                                   .modifiers holds the state of the
                                   modifier keys.
@@ -215,7 +212,13 @@ enum event_kind
                                   which the key was typed.
                                   .timestamp gives a timestamp (in
                                   milliseconds) for the keystroke.  */
-  non_ascii_keystroke,         /* .code is a number identifying the
+  MULTIBYTE_CHAR_KEYSTROKE_EVENT,      /* The multibyte char code is in .code,
+                                  perhaps with modifiers applied.
+                                  The others are the same as
+                                  ASCII_KEYSTROKE_EVENT.  This type of event
+                                  is generated only when we are using
+                                  XIM on X window.  */
+  NON_ASCII_KEYSTROKE_EVENT,   /* .code is a number identifying the
                                   function key.  A code N represents
                                   a key whose name is
                                   function_key_names[N]; function_key_names
@@ -227,8 +230,8 @@ enum event_kind
                                   which the key was typed.
                                   .timestamp gives a timestamp (in
                                   milliseconds) for the keystroke.  */
-  timer_event,                  /* A timer fired.  */
-  mouse_click,                 /* The button number is in .code; it must
+  TIMER_EVENT,                  /* A timer fired.  */
+  MOUSE_CLICK_EVENT,           /* The button number is in .code; it must
                                   be >= 0 and < NUM_MOUSE_BUTTONS, defined
                                   below.
                                   .modifiers holds the state of the
@@ -239,9 +242,9 @@ enum event_kind
                                   the mouse click occurred in.
                                   .timestamp gives a timestamp (in
                                   milliseconds) for the click.  */
-#ifdef WINDOWSNT
-  mouse_wheel,                 /* A mouse-wheel event is generated 
-                                  on WINDOWSNT by a 
+#if defined(WINDOWSNT) || defined(MAC_OSX)
+  MOUSE_WHEEL_EVENT,           /* A mouse-wheel event is generated 
+                                  on WINDOWSNT or MAC_OSX by a 
                                   wheel on a mouse (e.g., MS Intellimouse).
                                   The event contains a delta that corresponds
                                   to the amount and direction that the wheel
@@ -256,12 +259,14 @@ enum event_kind
                                   the wheel event occurred in.
                                   .timestamp gives a timestamp (in
                                   milliseconds) for the wheel event.  */
-  language_change_event,       /* A language_change event is generated
+#endif
+#ifdef WINDOWSNT
+  LANGUAGE_CHANGE_EVENT,       /* A LANGUAGE_CHANGE_EVENT is generated
                                   on WINDOWSNT when the keyboard layout
                                   or input language is changed by the
                                   user.  */
 #endif
-  scroll_bar_click,            /* .code gives the number of the mouse button
+  SCROLL_BAR_CLICK_EVENT,      /* .code gives the number of the mouse button
                                   that was clicked.
                                   .modifiers holds the state of the modifier
                                   keys.
@@ -275,23 +280,23 @@ enum event_kind
                                   .timestamp gives a timestamp (in
                                   milliseconds) for the click.  */
 #ifdef WINDOWSNT
-  w32_scroll_bar_click,        /* as for scroll_bar_click, but only generated
+  W32_SCROLL_BAR_CLICK_EVENT,  /* as for SCROLL_BAR_CLICK, but only generated
                                   by MS-Windows scroll bar controls. */
 #endif
-  selection_request_event,     /* Another X client wants a selection from us.
+  SELECTION_REQUEST_EVENT,     /* Another X client wants a selection from us.
                                   See `struct selection_event'.  */
-  selection_clear_event,       /* Another X client cleared our selection.  */
-  buffer_switch_event,         /* A process filter has switched buffers.  */
-  delete_window_event,         /* An X client said "delete this window".  */
-  menu_bar_event,              /* An event generated by the menu bar.
+  SELECTION_CLEAR_EVENT,       /* Another X client cleared our selection.  */
+  BUFFER_SWITCH_EVENT,         /* A process filter has switched buffers.  */
+  DELETE_WINDOW_EVENT,         /* An X client said "delete this window".  */
+  MENU_BAR_EVENT,              /* An event generated by the menu bar.
                                   The frame_or_window field's cdr holds the
                                   Lisp-level event value.
                                   (Only the toolkit version uses these.)  */
-  iconify_event,               /* An X client iconified this window.  */
-  deiconify_event,             /* An X client deiconified this window.  */
-  menu_bar_activate_event,      /* A button press in the menu bar
+  ICONIFY_EVENT,               /* An X client iconified this window.  */
+  DEICONIFY_EVENT,             /* An X client deiconified this window.  */
+  MENU_BAR_ACTIVATE_EVENT,      /* A button press in the menu bar
                                   (toolkit version only).  */
-  drag_n_drop,                 /* A drag-n-drop event is generated when
+  DRAG_N_DROP_EVENT,           /* A drag-n-drop event is generated when
                                   files selected outside of Emacs are dropped
                                   onto an Emacs window.
                                   Currently used only on Windows NT.
@@ -304,25 +309,34 @@ enum event_kind
                                   the filenames of the dropped files.
                                   .timestamp gives a timestamp (in
                                   milliseconds) for the click.  */
-  user_signal,                  /* A user signal.
-                                   .code is a number identifying it,
+  USER_SIGNAL_EVENT,           /* A user signal.
+                                   code is a number identifying it,
                                    index into lispy_user_signals.  */
 
-  /* Currently only returned when the mouse enters a tool-bar item that
-     has a help string.  Member frame_or_window of the input_event is
-     a cons cell whose car is the tool-bar's frame and whose cdr is the
-     help string.  */
+  /* Help events.  Member `frame_or_window' of the input_event is the
+     frame on which the event occurred, and member `arg' contains
+     the help to show.  */
   HELP_EVENT,
 
+  /* An event from a tool-bar.  Member `arg' of the input event
+     contains the tool-bar item selected.  If `frame_or_window'
+     and `arg' are equal, this is a prefix event.  */
   TOOL_BAR_EVENT,
 
   /* Queued from XTread_socket on FocusIn events.  Translated into
      `switch-frame' events in kbd_buffer_get_event, if necessary.  */
-  FOCUS_IN_EVENT
+  FOCUS_IN_EVENT,
+
+  /* Generated when mouse moves over window not currently selected.  */
+  SELECT_WINDOW_EVENT,
+
+  /* Queued from XTread_socket when session manager sends
+     save yourself before shutdown. */
+  SAVE_SESSION_EVENT
 };
 
-/* If a struct input_event has a kind which is selection_request_event
-   or selection_clear_event, then its contents are really described
+/* If a struct input_event has a kind which is SELECTION_REQUEST_EVENT
+   or SELECTION_CLEAR_EVENT, then its contents are really described
    by `struct selection_event'; see xterm.h.  */
 
 /* The keyboard input buffer is an array of these structures.  Each one
@@ -332,12 +346,12 @@ enum event_kind
 
 struct input_event
 {
-
   /* What kind of event was this?  */
-  int kind;
+  enum event_kind kind;
   
-  /* For an ascii_keystroke, this is the character.
-     For a non_ascii_keystroke, this is the keysym code.
+  /* For an ASCII_KEYSTROKE_EVENT and MULTIBYTE_CHAR_KEYSTROKE_EVENT,
+     this is the character.
+     For a NON_ASCII_KEYSTROKE_EVENT, this is the keysym code.
      For a mouse event, this is the button number.  */
   /* In WindowsNT, for a mouse wheel event, this is the delta.  */
   int code;
@@ -359,6 +373,10 @@ struct input_event
   /* This field is last so that struct selection_input_event
      does not overlap with it.  */
   Lisp_Object frame_or_window;
+
+  /* Additional event argument.  This is used for TOOL_BAR_EVENTs and
+     HELP_EVENTs and avoids calling Fcons during signal handling.  */
+  Lisp_Object arg;
 };
 
 /* Called to read input events.  */