/* Hooks by which low level terminal operations
can be made to call other routines.
- Copyright (C) 1985, 1986, 1993 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1986, 1993, 1994 Free Software Foundation, Inc.
This file is part of GNU Emacs.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
\f
/* Miscellanea. */
enum scroll_bar_part {
scroll_bar_above_handle,
scroll_bar_handle,
- scroll_bar_below_handle
+ scroll_bar_below_handle,
+ scroll_bar_up_arrow,
+ scroll_bar_down_arrow
};
/* Return the current position of the mouse.
away is a real pain - can you say set-window-configuration?
Instead, we just assert at the beginning of redisplay that *all*
scroll bars are to be removed, and then save scroll bars from the
- firey pit when we actually redisplay their window. */
+ fiery pit when we actually redisplay their window. */
/* Arrange for all scroll bars on FRAME to be removed at the next call
to `*judge_scroll_bars_hook'. A scroll bar may be spared if
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
be >= 0 and < NUM_MOUSE_BUTTONS, defined
below.
the mouse click occurred in.
.timestamp gives a timestamp (in
milliseconds) for the click. */
+#ifdef WINDOWSNT
+ mouse_wheel, /* A mouse-wheel event is generated 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
+ is rotated. This delta is typically
+ used to implement a scroll or zoom.
+ .code gives the delta.
+ .modifiers holds the state of the
+ modifier keys.
+ .x and .y give the mouse position,
+ in characters, within the window.
+ .frame_or_window gives the frame
+ the wheel event occurred in.
+ .timestamp gives a timestamp (in
+ milliseconds) for the wheel event. */
+#endif
scroll_bar_click, /* .code gives the number of the mouse button
that was clicked.
.modifiers holds the state of the modifier
whose scroll bar was clicked in.
.timestamp gives a timestamp (in
milliseconds) for the click. */
+#ifdef WINDOWSNT
+ w32_scroll_bar_click, /* 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.
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.
- The frame_or_window field holds the
+ 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
+ (toolkit version only). */
};
/* If a struct input_event has a kind which is selection_request_event
a window system event. These get turned into their lispy forms when
they are removed from the event queue. */
-struct input_event {
+struct input_event
+{
/* What kind of event was this? */
- enum event_kind kind;
+ int kind;
/* For an ascii_keystroke, this is the character.
For a non_ascii_keystroke, 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;
enum scroll_bar_part part;
- /* This field is copied into a vector while the event is in the queue,
- so that garbage collections won't kill it. */
- /* In a menu_bar_event, this holds the Lisp object
- that is the event's value. */
- Lisp_Object frame_or_window;
-
int modifiers; /* See enum below for interpretation. */
Lisp_Object x, y;
unsigned long timestamp;
+
+ /* This is padding just to put the frame_or_window field
+ past the size of struct selection_event. */
+ int *padding[2];
+
+ /* This field is copied into a vector while the event is in the queue,
+ so that garbage collections won't kill it. */
+ /* In a menu_bar_event, this is a cons cell whose car is the frame
+ and whose cdr is the Lisp object that is the event's value. */
+ /* This field is last so that struct selection_input_event
+ does not overlap with it. */
+ Lisp_Object frame_or_window;
};
\f
/* This is used in keyboard.c, to tell how many buttons we will need