Mercurial > emacs
annotate src/termhooks.h @ 1717:aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
`has_vertical_scrollbars'.
(FRAME_CAN_HAVE_SCROLLBARS, FRAME_HAS_VERTICAL_SCROLLBARS): New
accessors, for both the MULTI_FRAME and non-MULTI_FRAME.
(VERTICAL_SCROLLBAR_WIDTH, WINDOW_VERTICAL_SCROLLBAR,
WINDOW_VERTICAL_SCROLLBAR_COLUMN,
WINDOW_VERTICAL_SCROLLBAR_HEIGHT): New macros.
* window.h (struct window): New field `vertical_scrollbar'.
* xterm.h (struct x_display): vertical_scrollbars,
judge_timestamp, vertical_scrollbar_extra: New fields.
(struct scrollbar): New struct.
(VERTICAL_SCROLLBAR_PIXEL_WIDTH, VERTICAL_SCROLLBAR_PIXEL_HEIGHT,
VERTICAL_SCROLLBAR_LEFT_BORDER, VERTICAL_SCROLLBAR_RIGHT_BORDER,
VERTICAL_SCROLLBAR_TOP_BORDER, VERTICAL_SCROLLBAR_BOTTOM_BORDER,
CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_WIDTH,
PIXEL_TO_CHAR_HEIGHT): New accessors and macros.
* frame.c (make_frame): Initialize the `can_have_scrollbars' and
`has_vertical_scrollbars' fields of the frame.
* term.c (term_init): Note that TERMCAP terminals don't support
scrollbars.
(mouse_position_hook): Document new args.
(set_vertical_scrollbar_hook, condemn_scrollbars_hook,
redeem_scrollbar_hook, judge_scrollbars_hook): New hooks.
* termhooks.h: Declare and document them.
(enum scrollbar_part): New type.
(struct input_event): Describe the new form of the scrollbar_click
event type. Change `part' from a Lisp_Object to an enum
scrollbar_part. Add a new field `scrollbar'.
* keyboard.c (kbd_buffer_get_event): Pass appropriate new
parameters to *mouse_position_hook, and make_lispy_movement.
* xfns.c (x_set_vertical_scrollbar): New function.
(x_figure_window_size): Use new macros to calculate frame size.
(Fx_create_frame): Note that X Windows frames do support scroll
bars. Default to "yes".
* xterm.c: #include <X11/cursorfont.h> and "window.h".
(x_vertical_scrollbar_cursor): New variable.
(x_term_init): Initialize it.
(last_mouse_bar, last_mouse_bar_frame, last_mouse_part,
last_mouse_scroll_range_start, last_mouse_scroll_range_end): New
variables.
(XTmouse_position): Use them to return scrollbar movement events.
Take new arguments, for that purpose.
(x_window_to_scrollbar, x_scrollbar_create,
x_scrollbar_set_handle, x_scrollbar_remove, x_scrollbar_move,
XTset_scrollbar, XTcondemn_scrollbars, XTredeem_scrollbar,
XTjudge_scrollbars, x_scrollbar_expose,
x_scrollbar_background_expose, x_scrollbar_handle_click,
x_scrollbar_handle_motion): New functions to implement scrollbars.
(x_term_init): Set the termhooks.h hooks to point to them.
(x_set_window_size): Use new macros to calculate frame size. Set
vertical_scrollbar_extra field.
(x_make_frame_visible): Use the frame accessor
FRAME_HAS_VERTICAL_SCROLLBARS to decide if we need to map the
frame's subwindows as well.
(XTread_socket): Use new size-calculation macros from xterm.h when
processing ConfigureNotify events.
(x_wm_set_size_hint): Use PIXEL_TO_CHAR_WIDTH and
PIXEL_TO_CHAR_HEIGHT macros.
* ymakefile (xdisp.o): This now depends on termhooks.h.
(xterm.o): This now depends on window.h.
| author | Jim Blandy <jimb@redhat.com> |
|---|---|
| date | Thu, 24 Dec 1992 06:17:18 +0000 |
| parents | 20862b54b932 |
| children | 5d58b9f1ff22 |
| rev | line source |
|---|---|
| 296 | 1 /* Hooks by which low level terminal operations |
| 2 can be made to call other routines. | |
| 648 | 3 Copyright (C) 1985, 1986, 1992 Free Software Foundation, Inc. |
| 296 | 4 |
| 5 This file is part of GNU Emacs. | |
| 6 | |
| 7 GNU Emacs is free software; you can redistribute it and/or modify | |
| 8 it under the terms of the GNU General Public License as published by | |
| 648 | 9 the Free Software Foundation; either version 2, or (at your option) |
| 296 | 10 any later version. |
| 11 | |
| 12 GNU Emacs is distributed in the hope that it will be useful, | |
| 13 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 GNU General Public License for more details. | |
| 16 | |
| 17 You should have received a copy of the GNU General Public License | |
| 18 along with GNU Emacs; see the file COPYING. If not, write to | |
| 19 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ | |
| 20 | |
| 21 | |
| 22 extern int (*cursor_to_hook) (); | |
| 23 extern int (*raw_cursor_to_hook) (); | |
| 24 | |
| 25 extern int (*clear_to_end_hook) (); | |
| 766 | 26 extern int (*clear_frame_hook) (); |
| 296 | 27 extern int (*clear_end_of_line_hook) (); |
| 28 | |
| 29 extern int (*ins_del_lines_hook) (); | |
| 30 | |
| 31 extern int (*change_line_highlight_hook) (); | |
| 32 extern int (*reassert_line_highlight_hook) (); | |
| 33 | |
| 34 extern int (*insert_glyphs_hook) (); | |
| 35 extern int (*write_glyphs_hook) (); | |
| 36 extern int (*delete_glyphs_hook) (); | |
| 37 | |
| 38 extern int (*ring_bell_hook) (); | |
| 39 | |
| 40 extern int (*reset_terminal_modes_hook) (); | |
| 41 extern int (*set_terminal_modes_hook) (); | |
| 42 extern int (*update_begin_hook) (); | |
| 43 extern int (*update_end_hook) (); | |
| 44 extern int (*set_terminal_window_hook) (); | |
| 45 | |
| 46 extern int (*read_socket_hook) (); | |
| 47 | |
|
1717
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
48 enum scrollbar_part { |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
49 scrollbar_above_handle, |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
50 scrollbar_handle, |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
51 scrollbar_below_handle |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
52 }; |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
53 |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
54 /* Return the current position of the mouse. |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
55 Set `bar' to point to the scrollbar if the mouse movement started |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
56 in a scrollbar, or zero if it started elsewhere in the frame. |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
57 This should clear mouse_moved until the next motion event arrives. */ |
| 766 | 58 extern void (*mouse_position_hook) ( /* FRAME_PTR *f, |
|
1717
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
59 struct scrollbar **bar, |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
60 enum scrollbar_part *part, |
| 485 | 61 Lisp_Object *x, |
| 62 Lisp_Object *y, | |
| 732 | 63 unsigned long *time */ ); |
| 296 | 64 |
| 485 | 65 /* The window system handling code should set this if the mouse has |
| 66 moved since the last call to the mouse_position_hook. Calling that | |
| 67 hook should clear this. */ | |
| 68 extern int mouse_moved; | |
| 296 | 69 |
| 766 | 70 /* When a frame's focus redirection is changed, this hook tells the |
| 357 | 71 window system code to re-decide where to put the highlight. Under |
| 485 | 72 X, this means that Emacs lies about where the focus is. */ |
| 766 | 73 extern void (*frame_rehighlight_hook) ( /* void */ ); |
| 338 | 74 |
|
1717
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
75 /* Set vertical scollbar BAR to have its upper left corner at (TOP, |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
76 LEFT), and be LENGTH rows high. Set its handle to indicate that we |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
77 are displaying PORTION characters out of a total of WHOLE |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
78 characters, starting at POSITION. Return BAR. If BAR is zero, |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
79 create a new scrollbar and return a pointer to it. */ |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
80 extern struct scrollbar *(*set_vertical_scrollbar_hook) |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
81 ( /* struct scrollbar *BAR, |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
82 struct window *window, |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
83 int portion, int whole, int position */ ); |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
84 |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
85 |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
86 /* The following three hooks are used when we're doing a thorough |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
87 redisplay of the frame. We don't explicitly know which scrollbars |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
88 are going to be deleted, because keeping track of when windows go |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
89 away is a real pain - can you say set-window-configuration? |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
90 Instead, we just assert at the beginning of redisplay that *all* |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
91 scrollbars are to be removed, and then save scrollbars from the |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
92 firey pit when we actually redisplay their window. */ |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
93 |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
94 /* Arrange for all scrollbars on FRAME to be removed at the next call |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
95 to `*judge_scrollbars_hook'. A scrollbar may be spared if |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
96 `*redeem_scrollbar_hook' is applied to it before the judgement. */ |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
97 extern void (*condemn_scrollbars_hook)( /* FRAME_PTR *FRAME */ ); |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
98 |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
99 /* Unmark BAR for deletion in this judgement cycle. */ |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
100 extern void (*redeem_scrollbar_hook)( /* struct scrollbar *BAR */ ); |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
101 |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
102 /* Remove all scrollbars on FRAME that haven't been saved since the |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
103 last call to `*condemn_scrollbars_hook'. */ |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
104 extern void (*judge_scrollbars_hook)( /* FRAME_PTR *FRAME */ ); |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
105 |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
106 |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
107 |
| 296 | 108 /* If nonzero, send all terminal output characters to this stream also. */ |
| 109 extern FILE *termscript; | |
| 110 | |
| 111 /* Expedient hack: only provide the below definitions to files that | |
| 112 are prepared to handle lispy things. XINT is defined iff lisp.h | |
| 485 | 113 has been included before this file. */ |
| 114 #ifdef XINT | |
| 296 | 115 |
| 116 /* The keyboard input buffer is an array of these structures. Each one | |
| 117 represents some sort of input event - a keystroke, a mouse click, or | |
| 118 a window system event. These get turned into their lispy forms when | |
| 119 they are removed from the event queue. */ | |
| 120 | |
| 121 struct input_event { | |
| 122 | |
| 123 /* What kind of event was this? */ | |
| 124 enum { | |
| 125 no_event, /* nothing happened. This should never | |
| 126 actually appear in the event queue. */ | |
| 338 | 127 ascii_keystroke, /* The ASCII code is in .code. |
| 766 | 128 .frame is the frame in which the key |
| 338 | 129 was typed. |
| 130 Note that this includes meta-keys, and | |
| 131 the modifiers field of the event | |
| 485 | 132 is unused. |
| 133 .timestamp gives a timestamp (in | |
| 134 milliseconds) for the keystroke. */ | |
| 296 | 135 non_ascii_keystroke, /* .code is a number identifying the |
| 136 function key. A code N represents | |
| 137 a key whose name is | |
| 138 function_key_names[N]; function_key_names | |
| 139 is a table in keyboard.c to which you | |
| 140 should feel free to add missing keys. | |
| 141 .modifiers holds the state of the | |
| 338 | 142 modifier keys. |
| 766 | 143 .frame is the frame in which the key |
| 485 | 144 was typed. |
| 145 .timestamp gives a timestamp (in | |
| 146 milliseconds) for the keystroke. */ | |
|
1312
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
147 mouse_click, /* The button number is in .code; it must |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
148 be >= 0 and < NUM_MOUSE_BUTTONS, defined |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
149 below. |
| 296 | 150 .modifiers holds the state of the |
| 151 modifier keys. | |
| 152 .x and .y give the mouse position, | |
| 708 | 153 in characters, within the window. |
| 766 | 154 .frame gives the frame the mouse |
| 296 | 155 click occurred in. |
| 156 .timestamp gives a timestamp (in | |
| 157 milliseconds) for the click. */ | |
|
1717
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
158 |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
159 scrollbar_click, /* .code gives the number of the mouse button |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
160 that was clicked. |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
161 .modifiers holds the state of the modifier |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
162 keys. |
| 296 | 163 .part is a lisp symbol indicating which |
|
1717
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
164 part of the scrollbar got clicked. |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
165 .scrollbar is a pointer to the scrollbar |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
166 clicked on. Since redisplay may delete |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
167 scrollbars at any time, you may not assume |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
168 that this scrollbar still exists when you |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
169 dequeue this event. You have to traverse |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
170 the window tree to make it's in a valid |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
171 window. |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
172 .x gives the distance from the start of the |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
173 scroll bar of the click; .y gives the total |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
174 length of the scroll bar. |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
175 .frame gives the frame the click should |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
176 apply to. |
| 296 | 177 .timestamp gives a timestamp (in |
| 178 milliseconds) for the click. */ | |
| 179 } kind; | |
| 180 | |
| 181 Lisp_Object code; | |
|
1717
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
182 enum scrollbar_part part; |
|
aa7d6d57504b
* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents:
1319
diff
changeset
|
183 struct scrollbar *scrollbar; |
| 732 | 184 |
| 185 /* This is obviously wrong, but I'm not sure what else I should do. | |
| 766 | 186 Obviously, this should be a FRAME_PTR. But that would require that |
| 187 every file which #includes this one should also #include "frame.h", | |
| 732 | 188 which would mean that files like cm.c and other innocents would be |
| 766 | 189 dragged into the set of frame.h users. Maybe the definition of this |
| 732 | 190 structure should be elsewhere? In its own file? */ |
| 766 | 191 #ifdef MULTI_FRAME |
| 192 struct frame *frame; | |
| 732 | 193 #else |
| 766 | 194 int frame; |
| 732 | 195 #endif |
| 296 | 196 int modifiers; /* See enum below for interpretation. */ |
| 732 | 197 |
| 296 | 198 Lisp_Object x, y; |
| 648 | 199 unsigned long timestamp; |
| 296 | 200 }; |
| 201 | |
|
1312
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
202 /* This is used in keyboard.c, to tell how many buttons we will need |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
203 to track the positions of. */ |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
204 #define NUM_MOUSE_BUTTONS (5) |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
205 |
|
1238
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
206 /* Bits in the modifiers member of the input_event structure. |
|
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
207 Note that reorder_modifiers assumes that the bits are in canonical |
|
1312
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
208 order. |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
209 |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
210 The modifiers applied to mouse clicks are rather ornate. The |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
211 window-system-specific code should store mouse clicks with |
| 1319 | 212 up_modifier or down_modifier set. Having an explicit down modifier |
| 213 simplifies some of window-system-independent code; without it, the | |
| 214 code would have to recognize down events by checking if the event | |
| 215 is a mouse click lacking the click and drag modifiers. | |
| 216 | |
| 217 The window-system independent code turns all up_modifier events | |
| 218 bits into either drag_modifier or click_modifier events. The | |
| 219 click_modifier has no written representation in the names of the | |
| 220 symbols used as event heads, but it does appear in the | |
| 221 Qevent_symbol_components property of the event heads. */ | |
| 296 | 222 enum { |
|
1312
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
223 up_modifier = 1, /* Only used on mouse buttons - always |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
224 turned into a click or a drag modifier |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
225 before lisp code sees the event. */ |
|
1238
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
226 alt_modifier = 2, /* Under X, the XK_Alt_[LR] keysyms. */ |
|
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
227 ctrl_modifier = 4, |
|
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
228 hyper_modifier= 8, /* Under X, the XK_Hyper_[LR] keysyms. */ |
|
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
229 meta_modifier = 16, /* Under X, the XK_Meta_[LR] keysyms. */ |
|
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
230 shift_modifier= 32, |
|
407100cee78a
* termhooks.h (alt_modifier, hyper_modifier, super_modifier,
Jim Blandy <jimb@redhat.com>
parents:
766
diff
changeset
|
231 super_modifier= 64, /* Under X, the XK_Super_[LR] keysyms. */ |
|
1312
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
232 down_modifier = 128, /* Only used on mouse buttons. */ |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
233 drag_modifier = 256, /* This is never used in the event |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
234 queue; it's only used internally by |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
235 the window-system-independent code. */ |
|
540110352c0d
* termhooks.h (struct input_event): Doc fix.
Jim Blandy <jimb@redhat.com>
parents:
1238
diff
changeset
|
236 click_modifier= 512, /* See drag_modifier. */ |
| 296 | 237 last_modifier /* This should always be one more than the |
| 238 highest modifier bit defined. */ | |
| 239 }; | |
| 240 | |
| 241 #endif |
