Mercurial > emacs
comparison src/term.c @ 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 | 58c373be762c |
children | 3f161f6701b1 |
comparison
equal
deleted
inserted
replaced
1716:95db936d47c0 | 1717:aa7d6d57504b |
---|---|
91 int (*update_end_hook) (); | 91 int (*update_end_hook) (); |
92 int (*set_terminal_window_hook) (); | 92 int (*set_terminal_window_hook) (); |
93 | 93 |
94 int (*read_socket_hook) (); | 94 int (*read_socket_hook) (); |
95 | 95 |
96 /* Return the current position of the mouse. This should clear | 96 /* Return the current position of the mouse. |
97 mouse_moved until the next motion event arrives. */ | 97 Set `bar' to point to the scrollbar if the mouse movement started |
98 in a scrollbar, or zero if it started elsewhere in the frame. | |
99 This should clear mouse_moved until the next motion event arrives. */ | |
98 void (*mouse_position_hook) ( /* FRAME_PTR *f, | 100 void (*mouse_position_hook) ( /* FRAME_PTR *f, |
99 Lisp_Object *x, | 101 struct scrollbar **bar, |
100 Lisp_Object *y, | 102 enum scrollbar_part *part, |
101 unsigned long *time */ ); | 103 Lisp_Object *x, |
104 Lisp_Object *y, | |
105 unsigned long *time */ ); | |
102 | 106 |
103 /* When reading from a minibuffer in a different frame, Emacs wants | 107 /* When reading from a minibuffer in a different frame, Emacs wants |
104 to shift the highlight from the selected frame to the minibuffer's | 108 to shift the highlight from the selected frame to the minibuffer's |
105 frame; under X, this means it lies about where the focus is. | 109 frame; under X, this means it lies about where the focus is. |
106 This hook tells the window system code to re-decide where to put | 110 This hook tells the window system code to re-decide where to put |
107 the highlight. */ | 111 the highlight. */ |
108 void (*frame_rehighlight_hook) ( /* FRAME_PTR f */ ); | 112 void (*frame_rehighlight_hook) ( /* FRAME_PTR f */ ); |
113 | |
114 /* Set vertical scollbar BAR to have its upper left corner at (TOP, | |
115 LEFT), and be LENGTH rows high. Set its handle to indicate that we | |
116 are displaying PORTION characters out of a total of WHOLE | |
117 characters, starting at POSITION. Return BAR. If BAR is zero, | |
118 create a new scrollbar and return a pointer to it. */ | |
119 struct scrollbar *(*set_vertical_scrollbar_hook) | |
120 ( /* struct scrollbar *BAR, | |
121 struct window *window, | |
122 int portion, int whole, int position */ ); | |
123 | |
124 /* The following three hooks are used when we're doing a thorough | |
125 redisplay of the frame. We don't explicitly know which scrollbars | |
126 are going to be deleted, because keeping track of when windows go | |
127 away is a real pain - can you say set-window-configuration? | |
128 Instead, we just assert at the beginning of redisplay that *all* | |
129 scrollbars are to be removed, and then save scrollbars from the | |
130 firey pit when we actually redisplay their window. */ | |
131 | |
132 /* Arrange for all scrollbars on FRAME to be removed at the next call | |
133 to `*judge_scrollbars_hook'. A scrollbar may be spared if | |
134 `*redeem_scrollbar_hook' is applied to it before the judgement. */ | |
135 void (*condemn_scrollbars_hook)( /* FRAME_PTR *FRAME */ ); | |
136 | |
137 /* Unmark BAR for deletion in this judgement cycle. */ | |
138 void (*redeem_scrollbar_hook)( /* struct scrollbar *BAR */ ); | |
139 | |
140 /* Remove all scrollbars on FRAME that haven't been saved since the | |
141 last call to `*condemn_scrollbars_hook'. */ | |
142 void (*judge_scrollbars_hook)( /* FRAME_PTR *FRAME */ ); | |
143 | |
144 | |
109 | 145 |
110 /* Strings, numbers and flags taken from the termcap entry. */ | 146 /* Strings, numbers and flags taken from the termcap entry. */ |
111 | 147 |
112 char *TS_ins_line; /* termcap "al" */ | 148 char *TS_ins_line; /* termcap "al" */ |
113 char *TS_ins_multi_lines; /* "AL" (one parameter, # lines to insert) */ | 149 char *TS_ins_multi_lines; /* "AL" (one parameter, # lines to insert) */ |
1412 | 1448 |
1413 init_baud_rate (); | 1449 init_baud_rate (); |
1414 if (read_socket_hook) /* Baudrate is somewhat */ | 1450 if (read_socket_hook) /* Baudrate is somewhat */ |
1415 /* meaningless in this case */ | 1451 /* meaningless in this case */ |
1416 baud_rate = 9600; | 1452 baud_rate = 9600; |
1453 | |
1454 FRAME_CAN_HAVE_SCROLLBARS (selected_frame) = 0; | |
1455 FRAME_HAS_VERTICAL_SCROLLBARS (selected_frame) = 0; | |
1417 } | 1456 } |
1418 | 1457 |
1419 /* VARARGS 1 */ | 1458 /* VARARGS 1 */ |
1420 fatal (str, arg1, arg2) | 1459 fatal (str, arg1, arg2) |
1421 char *str, *arg1, *arg2; | 1460 char *str, *arg1, *arg2; |