1. 26 Dec, 1992 1 commit
  2. 24 Dec, 1992 27 commits
    • Roland McGrath's avatar
      (visit-tags-table-buffer): When picking a table and using tags-table-list, · 21ccfb5c
      Roland McGrath authored
      skip over nonexistent files in the list.
      21ccfb5c
    • Roland McGrath's avatar
    • Jim Blandy's avatar
      *** empty log message *** · 0783dc9a
      Jim Blandy authored
      0783dc9a
    • Jim Blandy's avatar
      * frame.h (struct frame): New fields `can_have_scrollbars' and · c8e3cbe0
      Jim Blandy authored
      	`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.
      
      	* xterm.h (struct x_display): Delete v_scrollbar, v_thumbup,
      	v_thumbdown, v_slider, h_scrollbar, h_thumbup,
      	h_thumbdown, h_slider, v_scrollbar_width, h_scrollbar_height
      	fields.
      	* keyboard.c (Qvscrollbar_part, Qvslider_part, Qvthumbup_part,
      	Qvthumbdown_part, Qhscrollbar_part, Qhslider_part, Qhthumbup_part,
      	Qhthumbdown_part, Qscrollbar_click): Deleted; part of an obsolete
      	interface.
      	(head_table): Removed from here as well.
      	(syms_of_keyboard): And here.
      	* keyboard.h: And here.
      	(POSN_SCROLLBAR_BUTTON): Removed.
      	* xscrollbar.h: File removed - no longer necessary.
      	* xfns.c: Don't #include it any more.
      	(Qhorizontal_scroll_bar, Qvertical_scroll_bar): Deleted.
      	(syms_of_xfns): Don't initialize or staticpro them.
      	(gray_bits): Salvaged from xscrollbar.h.
      	(x_window_to_scrollbar): Deleted.
      	(x_set_horizontal_scrollbar): Deleted.
      	(enum x_frame_parm, x_frame_parms): Remove references to
      	x_set_horizontal_scrollbar.
      	(x_set_foreground_color, x_set_background_color,
      	x_set_border_pixel): Remove special code to support scrollbars.
      	(Fx_create_frame): Remove old scrollbar setup code.
      	(install_vertical_scrollbar, install_horizontal_scrollbar,
      	adjust_scrollbars, x_resize_scrollbars): Deleted.
      	* xterm.c (construct_mouse_click): This doesn't need to take care of
      	scrollbar clicks anymore.
      	(XTread_socket): Remove old code to support scrollbars.  Call new
      	functions instead for events which occur in scrollbar windows.
      	(XTupdate_end): Remove call to adjust_scrollbars; the main
      	redisplay code takes care of that now.
      	(enum window_type): Deleted.
      	* ymakefile: Note that xfns.o no longer depends on xscrollbar.h.
      
      	* xterm.h (PIXEL_WIDTH, PIXEL_HEIGHT): Change name of parameter
      	from `s' to `f'; it's a frame pointer.
      c8e3cbe0
    • Jim Blandy's avatar
      * frame.h (struct frame): New fields `can_have_scrollbars' and · f451eb13
      Jim Blandy authored
      	`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.
      
      	* xterm.h (struct x_display): Delete v_scrollbar, v_thumbup,
      	v_thumbdown, v_slider, h_scrollbar, h_thumbup,
      	h_thumbdown, h_slider, v_scrollbar_width, h_scrollbar_height
      	fields.
      	* keyboard.c (Qvscrollbar_part, Qvslider_part, Qvthumbup_part,
      	Qvthumbdown_part, Qhscrollbar_part, Qhslider_part, Qhthumbup_part,
      	Qhthumbdown_part, Qscrollbar_click): Deleted; part of an obsolete
      	interface.
      	(head_table): Removed from here as well.
      	(syms_of_keyboard): And here.
      	* keyboard.h: And here.
      	(POSN_SCROLLBAR_BUTTON): Removed.
      	* xscrollbar.h: File removed - no longer necessary.
      	* xfns.c: Don't #include it any more.
      	(Qhorizontal_scroll_bar, Qvertical_scroll_bar): Deleted.
      	(syms_of_xfns): Don't initialize or staticpro them.
      	(gray_bits): Salvaged from xscrollbar.h.
      	(x_window_to_scrollbar): Deleted.
      	(x_set_horizontal_scrollbar): Deleted.
      	(enum x_frame_parm, x_frame_parms): Remove references to
      	x_set_horizontal_scrollbar.
      	(x_set_foreground_color, x_set_background_color,
      	x_set_border_pixel): Remove special code to support scrollbars.
      	(Fx_create_frame): Remove old scrollbar setup code.
      	(install_vertical_scrollbar, install_horizontal_scrollbar,
      	adjust_scrollbars, x_resize_scrollbars): Deleted.
      	* xterm.c (construct_mouse_click): This doesn't need to take care of
      	scrollbar clicks anymore.
      	(XTread_socket): Remove old code to support scrollbars.  Call new
      	functions instead for events which occur in scrollbar windows.
      	(XTupdate_end): Remove call to adjust_scrollbars; the main
      	redisplay code takes care of that now.
      	(enum window_type): Deleted.
      	* ymakefile: Note that xfns.o no longer depends on xscrollbar.h.
      
      	* xterm.c (x_set_mouse_position): Clip mouse position to be within
      	frame.
      
      	* xterm.c: Adjust the first line of each page to have a reasonable
      	description.  This makes pages-directory more useful.
      
      	* xterm.c (x_do_pending_expose): Declare this routine only if
      	HAVE_X11 is not #defined; X11 doesn't need it.
      	(XTread_socket): Protect call to x_do_pending_expose with `#ifdef
      	HAVE_X11'.
      
      	* xterm.c (notice_mouse_movement): Deleted; obsolete and unused.
      
      	Properly handle focus shift events, so the cursor is filled and
      	hollow at the appropriate times, even in titleless windows.
      	* xterm.c (x_focus_event_frame): New variable.
      	(XTread_socket): When we receive a FocusIn event that's not
      	NotifyPointer, record the frame in x_focus_event_frame.  When we
      	receive a FocusOut event that's not NotifyPointer, clear it.  When
      	we get a LeaveNotify event, don't take it seriously if we still
      	have focus.
      
      	* xterm.c (XTread_socket): Remove special code in EnterNotify case
      	to handle scrollbars and fake mouse motion events.
      
      	Change the meaning of focus redirection to make switching windows
      	work properly.  Fredirect_frame_focus has the details.
      	* frame.h (focus_frame): Doc fix.
      	[not MULTI_FRAME] (FRAME_FOCUS_FRAME): Make this Qnil, which
      	indicates no focus redirection, instead of zero, which is
      	selected_frame.
      	* frame.c (make_frame): Initialize f->focus_frame to Qnil, rather
      	than making it point to frame itself.
      	(Fselect_frame): If changing the selected frame from FOO to BAR,
      	make all redirections to FOO shift to BAR as well.  Doc fix.
      	(Fredirect_frame_focus): Doc fix.  Accept nil as a valid
      	redirection, not just as a default for FRAME.
      	(Fframe_focus): Doc fix.
      	* keyboard.c (kbd_buffer_store_event, kbd_buffer_get_event): Deal
      	with focus redirections being nil.
      	* xterm.c (XTframe_rehighlight): Doc fix.  Deal with focus
      	redirections being nil.
      
      	* xterm.c (x_error_quitter): Just abort, so we can look at the
      	core to see what happened.
      
      	It's a pain to remember that you can't assign to FRAME->visible.
      	Let's change all references to the `visible' member of struct
      	frame to use the accessor macros, and then write a setter for the
      	`visible' field that does the right thing.
      	* frame.h (FRAME_VISIBLE_P): Make this not an l-value.
      	(FRAME_SET_VISIBLE): New macro.
      	* frame.c (make_terminal_frame, Fdelete_frame): Use FRAME_SET_VISIBLE.
      	(Fframe_visible_p, Fvisible_frame_list): Use FRAME_VISIBLE_P and
      	FRAME_ICONIFIED_P.
      	* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
      	FRAME_GARBAGED_P accessors.
      	* xdisp.c (redisplay): Use the FRAME_VISIBLE_P accessor.
      	* xfns.c (x_set_foreground_color, x_set_background_color,
      	x_set_cursor_color, x_set_border_pixel, x_set_icon_type): Use the
      	FRAME_VISIBLE_P accessor.
      	(Fx_create_frame): Use FRAME_SET_VISIBILITY.
      	* xterm.c (clear_cursor, x_display_bar_cursor,
      	x_display_box_cursor): Use FRAME_SET_VISIBILITY.
      f451eb13
    • Jim Blandy's avatar
      * frame.h (struct frame): New fields `can_have_scrollbars' and · 179956b9
      Jim Blandy authored
      	`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.
      
      	* xterm.h (struct x_display): Delete v_scrollbar, v_thumbup,
      	v_thumbdown, v_slider, h_scrollbar, h_thumbup,
      	h_thumbdown, h_slider, v_scrollbar_width, h_scrollbar_height
      	fields.
      	* keyboard.c (Qvscrollbar_part, Qvslider_part, Qvthumbup_part,
      	Qvthumbdown_part, Qhscrollbar_part, Qhslider_part, Qhthumbup_part,
      	Qhthumbdown_part, Qscrollbar_click): Deleted; part of an obsolete
      	interface.
      	(head_table): Removed from here as well.
      	(syms_of_keyboard): And here.
      	* keyboard.h: And here.
      	(POSN_SCROLLBAR_BUTTON): Removed.
      	* xscrollbar.h: File removed - no longer necessary.
      	* xfns.c: Don't #include it any more.
      	(Qhorizontal_scroll_bar, Qvertical_scroll_bar): Deleted.
      	(syms_of_xfns): Don't initialize or staticpro them.
      	(gray_bits): Salvaged from xscrollbar.h.
      	(x_window_to_scrollbar): Deleted.
      	(x_set_horizontal_scrollbar): Deleted.
      	(enum x_frame_parm, x_frame_parms): Remove references to
      	x_set_horizontal_scrollbar.
      	(x_set_foreground_color, x_set_background_color,
      	x_set_border_pixel): Remove special code to support scrollbars.
      	(Fx_create_frame): Remove old scrollbar setup code.
      	(install_vertical_scrollbar, install_horizontal_scrollbar,
      	adjust_scrollbars, x_resize_scrollbars): Deleted.
      	* xterm.c (construct_mouse_click): This doesn't need to take care of
      	scrollbar clicks anymore.
      	(XTread_socket): Remove old code to support scrollbars.  Call new
      	functions instead for events which occur in scrollbar windows.
      	(XTupdate_end): Remove call to adjust_scrollbars; the main
      	redisplay code takes care of that now.
      	(enum window_type): Deleted.
      	* ymakefile: Note that xfns.o no longer depends on xscrollbar.h.
      
      	* xfns.c (syms_of_xfns): Delete defvars for x_mouse_x and
      	x_mouse_y.  That interface hasn't been live for years.
      	(x_mouse_x, x_mouse_y): Delete these variables.
      
      	* xfns.c (Fx_create_frame): Don't initialize the wm_hints field here.
      	(x_window): Do it here, along with all the similar stuff.
      
      	It's a pain to remember that you can't assign to FRAME->visible.
      	Let's change all references to the `visible' member of struct
      	frame to use the accessor macros, and then write a setter for the
      	`visible' field that does the right thing.
      	* frame.h (FRAME_VISIBLE_P): Make this not an l-value.
      	(FRAME_SET_VISIBLE): New macro.
      	* frame.c (make_terminal_frame, Fdelete_frame): Use FRAME_SET_VISIBLE.
      	(Fframe_visible_p, Fvisible_frame_list): Use FRAME_VISIBLE_P and
      	FRAME_ICONIFIED_P.
      	* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
      	FRAME_GARBAGED_P accessors.
      	* xdisp.c (redisplay): Use the FRAME_VISIBLE_P accessor.
      	* xfns.c (x_set_foreground_color, x_set_background_color,
      	x_set_cursor_color, x_set_border_pixel, x_set_icon_type): Use the
      	FRAME_VISIBLE_P accessor.
      	(Fx_create_frame): Use FRAME_SET_VISIBILITY.
      	* xterm.c (clear_cursor, x_display_bar_cursor,
      	x_display_box_cursor): Use FRAME_SET_VISIBILITY.
      179956b9
    • Jim Blandy's avatar
      * xdisp.c: #include "termhooks.h". · 30c566e4
      Jim Blandy authored
      	(redisplay, redisplay_window): Use set_vertical_scrollbar_hook,
      	condemn_scrollbars_hook, redeem_scrollbar_hook, and
      	judge_scrollbars_hook to make scrollbars redisplay properly.
      
      	It's a pain to remember that you can't assign to FRAME->visible.
      	Let's change all references to the `visible' member of struct
      	frame to use the accessor macros, and then write a setter for the
      	`visible' field that does the right thing.
      	* frame.h (FRAME_VISIBLE_P): Make this not an l-value.
      	(FRAME_SET_VISIBLE): New macro.
      	* frame.c (make_terminal_frame, Fdelete_frame): Use FRAME_SET_VISIBLE.
      	(Fframe_visible_p, Fvisible_frame_list): Use FRAME_VISIBLE_P and
      	FRAME_ICONIFIED_P.
      	* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
      	FRAME_GARBAGED_P accessors.
      	* xdisp.c (redisplay): Use the FRAME_VISIBLE_P accessor.
      	* xfns.c (x_set_foreground_color, x_set_background_color,
      	x_set_cursor_color, x_set_border_pixel, x_set_icon_type): Use the
      	FRAME_VISIBLE_P accessor.
      	(Fx_create_frame): Use FRAME_SET_VISIBILITY.
      	* xterm.c (clear_cursor, x_display_bar_cursor,
      	x_display_box_cursor): Use FRAME_SET_VISIBILITY.
      30c566e4
    • Jim Blandy's avatar
      * frame.h (struct frame): New fields `can_have_scrollbars' and · 20a558dc
      Jim Blandy authored
      	`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.
      20a558dc
    • Jim Blandy's avatar
      * keyboard.c (Qscrollbar_movement, Qvertical_scrollbar, · db269683
      Jim Blandy authored
      	Qabove_handle, Qhandle, Qbelow_handle): New symbols.
      	(make_lispy_event): New code to build scrollbar clicks.
      	(make_lispy_movement): New code to handle scrollbar movement.
      	(head_table): Include Qscrollbar_movement in the event heads.
      	(syms_of_keyboard): Init and staticpro Qvertical_scrollbar,
      	Qabove_handle, Qhandle, and Qbelow_handle.
      	* keyboard.h (Qscrollbar_movement): Declare this along with the
      	other event types.
      	* lisp.h (Qvertical_scrollbar): Declare this.
      	* window.c (window_from_scrollbar): New function.
      
      	* window.c (Fset_window_configuration): Don't restore the frame's
      	focus redirection if the target frame is now dead.
      db269683
    • Jim Blandy's avatar
      * floatfns.c (Flog): Fix unescaped newline in string. · c2e42adb
      Jim Blandy authored
      	* frame.c (Fnext_frame): Same.
      	* textprop.c (Fprevious_single_property_change): Same.
      	(syms_of_textprop): Same, for DEFVAR for
      	`interval_balance_threshold'.
      c2e42adb
    • Jim Blandy's avatar
      * scroll.c (do_scrolling): When bcopying the max_ascent field from · 08b879b4
      Jim Blandy authored
      	current_frame to temp_frame, remember that max_ascent is an array
      	of shorts, not ints.
      08b879b4
    • Jim Blandy's avatar
      * keyboard.c (Qscrollbar_movement, Qvertical_scrollbar, · ea736298
      Jim Blandy authored
      	Qabove_handle, Qhandle, Qbelow_handle): New symbols.
      	(make_lispy_event): New code to build scrollbar clicks.
      	(make_lispy_movement): New code to handle scrollbar movement.
      	(head_table): Include Qscrollbar_movement in the event heads.
      	(syms_of_keyboard): Init and staticpro Qvertical_scrollbar,
      	Qabove_handle, Qhandle, and Qbelow_handle.
      	* keyboard.h (Qscrollbar_movement): Declare this along with the
      	other event types.
      	* lisp.h (Qvertical_scrollbar): Declare this.
      	* window.c (window_from_scrollbar): New function.
      ea736298
    • Jim Blandy's avatar
      * keyboard.c (Qscrollbar_movement, Qvertical_scrollbar, · d56a7c54
      Jim Blandy authored
      	Qabove_handle, Qhandle, Qbelow_handle): New symbols.
      	(make_lispy_event): New code to build scrollbar clicks.
      	(make_lispy_movement): New code to handle scrollbar movement.
      	(head_table): Include Qscrollbar_movement in the event heads.
      	(syms_of_keyboard): Init and staticpro Qvertical_scrollbar,
      	Qabove_handle, Qhandle, and Qbelow_handle.
      	* keyboard.h (Qscrollbar_movement): Declare this along with the
      	other event types.
      	* lisp.h (Qvertical_scrollbar): Declare this.
      	* window.c (window_from_scrollbar): New function.
      
      	* xterm.h (struct x_display): Delete v_scrollbar, v_thumbup,
      	v_thumbdown, v_slider, h_scrollbar, h_thumbup,
      	h_thumbdown, h_slider, v_scrollbar_width, h_scrollbar_height
      	fields.
      	* keyboard.c (Qvscrollbar_part, Qvslider_part, Qvthumbup_part,
      	Qvthumbdown_part, Qhscrollbar_part, Qhslider_part, Qhthumbup_part,
      	Qhthumbdown_part, Qscrollbar_click): Deleted; part of an obsolete
      	interface.
      	(head_table): Removed from here as well.
      	(syms_of_keyboard): And here.
      	* keyboard.h: And here.
      	(POSN_SCROLLBAR_BUTTON): Removed.
      	* xscrollbar.h: File removed - no longer necessary.
      	* xfns.c: Don't #include it any more.
      	(Qhorizontal_scroll_bar, Qvertical_scroll_bar): Deleted.
      	(syms_of_xfns): Don't initialize or staticpro them.
      	(gray_bits): Salvaged from xscrollbar.h.
      	(x_window_to_scrollbar): Deleted.
      	(x_set_horizontal_scrollbar): Deleted.
      	(enum x_frame_parm, x_frame_parms): Remove references to
      	x_set_horizontal_scrollbar.
      	(x_set_foreground_color, x_set_background_color,
      	x_set_border_pixel): Remove special code to support scrollbars.
      	(Fx_create_frame): Remove old scrollbar setup code.
      	(install_vertical_scrollbar, install_horizontal_scrollbar,
      	adjust_scrollbars, x_resize_scrollbars): Deleted.
      	* xterm.c (construct_mouse_click): This doesn't need to take care of
      	scrollbar clicks anymore.
      	(XTread_socket): Remove old code to support scrollbars.  Call new
      	functions instead for events which occur in scrollbar windows.
      	(XTupdate_end): Remove call to adjust_scrollbars; the main
      	redisplay code takes care of that now.
      	(enum window_type): Deleted.
      	* ymakefile: Note that xfns.o no longer depends on xscrollbar.h.
      d56a7c54
    • Jim Blandy's avatar
      * keyboard.c: Protect all references to kbd_buffer_frames with · 4bb994d1
      Jim Blandy authored
      	#ifdef MULTI_FRAME.
      
      	* 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.
      
      	* keyboard.c (Qscrollbar_movement, Qvertical_scrollbar,
      	Qabove_handle, Qhandle, Qbelow_handle): New symbols.
      	(make_lispy_event): New code to build scrollbar clicks.
      	(make_lispy_movement): New code to handle scrollbar movement.
      	(head_table): Include Qscrollbar_movement in the event heads.
      	(syms_of_keyboard): Init and staticpro Qvertical_scrollbar,
      	Qabove_handle, Qhandle, and Qbelow_handle.
      	* keyboard.h (Qscrollbar_movement): Declare this along with the
      	other event types.
      	* lisp.h (Qvertical_scrollbar): Declare this.
      	* window.c (window_from_scrollbar): New function.
      
      	* xterm.h (struct x_display): Delete v_scrollbar, v_thumbup,
      	v_thumbdown, v_slider, h_scrollbar, h_thumbup,
      	h_thumbdown, h_slider, v_scrollbar_width, h_scrollbar_height
      	fields.
      	* keyboard.c (Qvscrollbar_part, Qvslider_part, Qvthumbup_part,
      	Qvthumbdown_part, Qhscrollbar_part, Qhslider_part, Qhthumbup_part,
      	Qhthumbdown_part, Qscrollbar_click): Deleted; part of an obsolete
      	interface.
      	(head_table): Removed from here as well.
      	(syms_of_keyboard): And here.
      	* keyboard.h: And here.
      	(POSN_SCROLLBAR_BUTTON): Removed.
      	* xscrollbar.h: File removed - no longer necessary.
      	* xfns.c: Don't #include it any more.
      	(Qhorizontal_scroll_bar, Qvertical_scroll_bar): Deleted.
      	(syms_of_xfns): Don't initialize or staticpro them.
      	(gray_bits): Salvaged from xscrollbar.h.
      	(x_window_to_scrollbar): Deleted.
      	(x_set_horizontal_scrollbar): Deleted.
      	(enum x_frame_parm, x_frame_parms): Remove references to
      	x_set_horizontal_scrollbar.
      	(x_set_foreground_color, x_set_background_color,
      	x_set_border_pixel): Remove special code to support scrollbars.
      	(Fx_create_frame): Remove old scrollbar setup code.
      	(install_vertical_scrollbar, install_horizontal_scrollbar,
      	adjust_scrollbars, x_resize_scrollbars): Deleted.
      	* xterm.c (construct_mouse_click): This doesn't need to take care of
      	scrollbar clicks anymore.
      	(XTread_socket): Remove old code to support scrollbars.  Call new
      	functions instead for events which occur in scrollbar windows.
      	(XTupdate_end): Remove call to adjust_scrollbars; the main
      	redisplay code takes care of that now.
      	(enum window_type): Deleted.
      	* ymakefile: Note that xfns.o no longer depends on xscrollbar.h.
      
      	* keyboard.c (Fread_key_sequence): Doc fix.
      
      	* keyboard.c (make_lispy_event): Buttons are numbered starting
      	with zero now.
      
      	* keyboard.c (make_lispy_event): Use the proper accessors when
      	manipulating the `x' and `y' fields of struct input_event.
      
      	* keyboard.c (parse_modifiers_uncached): Remember that strncmp
      	returns zero if the two substrings are equal.
      
      	* keyboard.c (do_mouse_tracking, Ftrack_mouse): Doc fix.
      
      	* keyboard.c (read_char): Don't put mouse movements in
      	this_command_keys.
      
      	Change the meaning of focus redirection to make switching windows
      	work properly.  Fredirect_frame_focus has the details.
      	* frame.h (focus_frame): Doc fix.
      	[not MULTI_FRAME] (FRAME_FOCUS_FRAME): Make this Qnil, which
      	indicates no focus redirection, instead of zero, which is
      	selected_frame.
      	* frame.c (make_frame): Initialize f->focus_frame to Qnil, rather
      	than making it point to frame itself.
      	(Fselect_frame): If changing the selected frame from FOO to BAR,
      	make all redirections to FOO shift to BAR as well.  Doc fix.
      	(Fredirect_frame_focus): Doc fix.  Accept nil as a valid
      	redirection, not just as a default for FRAME.
      	(Fframe_focus): Doc fix.
      	* keyboard.c (kbd_buffer_store_event, kbd_buffer_get_event): Deal
      	with focus redirections being nil.
      	* xterm.c (XTframe_rehighlight): Doc fix.  Deal with focus
      	redirections being nil.
      
      	* keyboard.c (kbd_buffer_frames): New vector, to GCPRO frames in
      	kbd_buffer.
      	(kbd_buffer_store_event): When we add an event to kbd_buffer, make
      	sure to store its frame in kbd_buffer_frames.
      	(kbd_buffer_get_event): When we remove an event from kbd_buffer,
      	make sure to set the corresponding element of kbd_buffer_frames to
      	Qnil, to allow the frame to get GC'd.
      	(Fdiscard_input, init_keyboard): Clear all elements of
      	kbd_buffer_frames to nil.
      	(syms_of_keyboard): Create and staticpro kbd_buffer_frames.
      4bb994d1
    • Jim Blandy's avatar
      * frame.h (struct frame): New fields `can_have_scrollbars' and · 46a5c487
      Jim Blandy authored
      	`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.
      
      	Change the meaning of focus redirection to make switching windows
      	work properly.  Fredirect_frame_focus has the details.
      	* frame.h (focus_frame): Doc fix.
      	[not MULTI_FRAME] (FRAME_FOCUS_FRAME): Make this Qnil, which
      	indicates no focus redirection, instead of zero, which is
      	selected_frame.
      	* frame.c (make_frame): Initialize f->focus_frame to Qnil, rather
      	than making it point to frame itself.
      	(Fselect_frame): If changing the selected frame from FOO to BAR,
      	make all redirections to FOO shift to BAR as well.  Doc fix.
      	(Fredirect_frame_focus): Doc fix.  Accept nil as a valid
      	redirection, not just as a default for FRAME.
      	(Fframe_focus): Doc fix.
      	* keyboard.c (kbd_buffer_store_event, kbd_buffer_get_event): Deal
      	with focus redirections being nil.
      	* xterm.c (XTframe_rehighlight): Doc fix.  Deal with focus
      	redirections being nil.
      
      	It's a pain to remember that you can't assign to FRAME->visible.
      	Let's change all references to the `visible' member of struct
      	frame to use the accessor macros, and then write a setter for the
      	`visible' field that does the right thing.
      	* frame.h (FRAME_VISIBLE_P): Make this not an l-value.
      	(FRAME_SET_VISIBLE): New macro.
      	* frame.c (make_terminal_frame, Fdelete_frame): Use FRAME_SET_VISIBLE.
      	(Fframe_visible_p, Fvisible_frame_list): Use FRAME_VISIBLE_P and
      	FRAME_ICONIFIED_P.
      	* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
      	FRAME_GARBAGED_P accessors.
      	* xdisp.c (redisplay): Use the FRAME_VISIBLE_P accessor.
      	* xfns.c (x_set_foreground_color, x_set_background_color,
      	x_set_cursor_color, x_set_border_pixel, x_set_icon_type): Use the
      	FRAME_VISIBLE_P accessor.
      	(Fx_create_frame): Use FRAME_SET_VISIBILITY.
      	* xterm.c (clear_cursor, x_display_bar_cursor,
      	x_display_box_cursor): Use FRAME_SET_VISIBILITY.
      46a5c487
    • Jim Blandy's avatar
      * frame.h (struct frame): New fields `can_have_scrollbars' and · a42e9724
      Jim Blandy authored
      	`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.
      
      	* floatfns.c (Flog): Fix unescaped newline in string.
      	* frame.c (Fnext_frame): Same.
      	* textprop.c (Fprevious_single_property_change): Same.
      	(syms_of_textprop): Same, for DEFVAR for
      	`interval_balance_threshold'.
      
      	Change the meaning of focus redirection to make switching windows
      	work properly.  Fredirect_frame_focus has the details.
      	* frame.h (focus_frame): Doc fix.
      	[not MULTI_FRAME] (FRAME_FOCUS_FRAME): Make this Qnil, which
      	indicates no focus redirection, instead of zero, which is
      	selected_frame.
      	* frame.c (make_frame): Initialize f->focus_frame to Qnil, rather
      	than making it point to frame itself.
      	(Fselect_frame): If changing the selected frame from FOO to BAR,
      	make all redirections to FOO shift to BAR as well.  Doc fix.
      	(Fredirect_frame_focus): Doc fix.  Accept nil as a valid
      	redirection, not just as a default for FRAME.
      	(Fframe_focus): Doc fix.
      	* keyboard.c (kbd_buffer_store_event, kbd_buffer_get_event): Deal
      	with focus redirections being nil.
      	* xterm.c (XTframe_rehighlight): Doc fix.  Deal with focus
      	redirections being nil.
      
      	It's a pain to remember that you can't assign to FRAME->visible.
      	Let's change all references to the `visible' member of struct
      	frame to use the accessor macros, and then write a setter for the
      	`visible' field that does the right thing.
      	* frame.h (FRAME_VISIBLE_P): Make this not an l-value.
      	(FRAME_SET_VISIBLE): New macro.
      	* frame.c (make_terminal_frame, Fdelete_frame): Use FRAME_SET_VISIBLE.
      	(Fframe_visible_p, Fvisible_frame_list): Use FRAME_VISIBLE_P and
      	FRAME_ICONIFIED_P.
      	* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
      	FRAME_GARBAGED_P accessors.
      	* xdisp.c (redisplay): Use the FRAME_VISIBLE_P accessor.
      	* xfns.c (x_set_foreground_color, x_set_background_color,
      	x_set_cursor_color, x_set_border_pixel, x_set_icon_type): Use the
      	FRAME_VISIBLE_P accessor.
      	(Fx_create_frame): Use FRAME_SET_VISIBILITY.
      	* xterm.c (clear_cursor, x_display_bar_cursor,
      	x_display_box_cursor): Use FRAME_SET_VISIBILITY.
      a42e9724
    • Jim Blandy's avatar
      * dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and · 950c2628
      Jim Blandy authored
      	FRAME_GARBAGED_P accessors.
      	* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
      	FRAME_GARBAGED_P accessors.
      950c2628
    • Jim Blandy's avatar
      76f590d7
    • Jim Blandy's avatar
      * ymakefile (all, xemacs): We build an executable called `emacs' now, · 307436bb
      Jim Blandy authored
      	not `xemacs'.
      	* Makefile.in (distclean, xemacs, doxemacs): Same.
      307436bb
    • Jim Blandy's avatar
      * sendmail.el (mail-position-on-field): `end' is guaranteed to be · 70f5352e
      Jim Blandy authored
      	at the beginning of the header separator; don't skip back to the
      	end of the previous line.
      70f5352e
    • Jim Blandy's avatar
      * rmail.el (rmail-unix-mail-delimiter): Not all time zone names · 13a5fb22
      Jim Blandy authored
      	end with "T".  Accept any sequence of three or four alphabetic
      	characters.
      13a5fb22
    • Jim Blandy's avatar
      59f3e9a2
    • Jim Blandy's avatar
      * compile.el (compilation-error-regexp-alist): Tightened up · 57c8389c
      Jim Blandy authored
      	BSD/GNU regexp to insist that line number end with a colon or
      	close-paren.
      
      	* compile.el (compilation-error-regexp-alist): Add regexp for the
      	MIPS CC distributed with Ultrix.
      57c8389c
    • Jim Blandy's avatar
      * c-mode.el (c-fill-paragraph): Calculating the proper fill-prefix · 8931ecc0
      Jim Blandy authored
      	shouldn't change the buffer text.  Make it not.  If we're in the
      	blank space before another comment, fill that one as a comment,
      	not as normal text.
      
      	* c-mode.el (c-fill-paragraph): When guessing the fill prefix,
      	don't ever grab any actual text.
      8931ecc0
    • Jim Blandy's avatar
      * make-dist: Make sure that the COPYING notices in each directory · c87b230f
      Jim Blandy authored
      	are copies, not symlinks.
      c87b230f
    • Jim Blandy's avatar
      * configure: Start with a blank line; this keeps some old CSH's · 0691c179
      Jim Blandy authored
      	from thinking it's a CSH script.  Most systems will just use
      	/bin/sh to run it, which is what we're expecting; the only other
      	shells which might try to interpret it themselves are probably
      	Bourne-compatible.
      0691c179
    • Jim Blandy's avatar
      * INSTALL: The build process produces an executable called `emacs' · 868e080d
      Jim Blandy authored
      	now.  Change references.
      	* Makefile.in: Adjust `install.mumble' targets to install
      	`src/emacs', not `src/xemacs'.
      
      	* Makefile.in (install, install.sysv, install.xenix, install.aix):
      	Don't try to copy the info files if there aren't any; the
      	unexpanded globbing pattern disappoints `install'.  Ignore the
      	return status of that command.
      868e080d
  3. 21 Dec, 1992 5 commits
  4. 19 Dec, 1992 1 commit
  5. 18 Dec, 1992 1 commit
  6. 15 Dec, 1992 1 commit
  7. 14 Dec, 1992 1 commit
  8. 12 Dec, 1992 3 commits
    • Jim Blandy's avatar
      * make-dist: Don't bother creating an arch-lib directory; that's · 1d650ff1
      Jim Blandy authored
      	only for installation now.
      1d650ff1
    • Jim Blandy's avatar
      * configure: Don't make the top-level Makefile read-only - people · e94740ce
      Jim Blandy authored
      	may want to edit the values of the path variables.
      
      	Make path specification conform to GNU coding standards.
      	* configure (long_usage): Remove all traces of old arguments from
      	usage messages, and document the options we do accept in more
      	detail: -with-x... and --srcdir.
      	(options, boolean_opts): Deleted; we don't have enough options to
      	make this worthwhile.
      	(prefix, bindir, lisppath, datadir, libdir, lockdir): Deleted,
      	along with the code which supported them; these should be set as
      	arguments to the top-level make.
      	(config_h_opts): Since this no longer doubles as a list of option
      	names, make them upper case; this simplifies the code which uses
      	them to build the sed command to edit src/config.h.  Change the
      	code which sets them.
      	(cc, g, O): Don't allow the user to set these using options; they
      	should be specified using `CC=' and `CFLAGS=' arguments to the
      	top-level make.  Just choose reasonable default values for them,
      	and edit them into Makefile.in's default CC and CONFIG_CFLAGS
      	values.
      	(gnu_malloc, rel_alloc): Don't allow the user to set these using
      	options; use them whenever the configuration files say they're
      	possible.
      	Simplify the argument processing loop.  Don't accept abbreviations
      	for option names; these might conflict with other configuration
      	options in the future.
      	Add some support for the `--srcdir' option.  Check for the sources
      	in . and .. if `--srcdir' is omitted.  If the directories we will
      	compile in don't exist yet, create them under the current directory.
      	Note that the rest of the build process doesn't really support
      	this.
      	Edit only the top Makefile.  That should edit the others.  Edit
      	into the makefile: `version', from lisp/version.el, `configname'
      	and `srcdir' from the configuration arguments, `CC' and
      	`CONFIG_CFLAGS' as guessed from the presence or absence of GCC in
      	the user's path, and LOADLIBES as gleaned from the system
      	description files.
      	Simplify the report generated; it doesn't need to include any
      	description of paths now.
      	Make `config.status' exec configure instead of just calling it, so
      	there's no harm in overwriting `config.status'.
      	* Makefile.in (version, configname): New variables, used to choose
      	the default values for datadir and libdir.
      	Path variables rearranged into two clearer groups:
      	- In the first group are the variables specified by the GNU coding
      	  standards (prefix, bindir, datadir, statedir, libdir, mandir,
      	  manext, infodir, and srcdir).
      	- In the second are the variables actually used for Emacs's paths
      	  (lispdir, locallisppath, lisppath, buildlisppath, etcdir, lockdir,
      	  archlibdir), which depend on the first category.
      	datadir and libdir default to directories under
      	${prefix}/lib/emacs instead of ${prefix}/emacs, by popular
      	demand.
      	etcdir and lispdir default to subdirectories of datadir.
      	archlibdir defaults to libdir.
      	The new installation tree is a bit deeper than it used to be, so
      	use the new make-path program in lib-src to build them all.
      	Always build a new src/paths.h.tmp and then move-if-change it to
      	src/paths.h, to avoid unnecessary rebuilds while responding to the
      	right changes.
      	Remove all mention of arch-lib.  Run utility commands from
      	lib-src, and let the executables be copied into archlibdir when
      	Emacs is installed.
      	Add targets for src/Makefile, lib-src/Makefile, and
      	oldXMenu/Makefile, editing the values of the path variables into
      	them.
      	Let lib-src do its own installation.
      	(datadir): Default to putting data files under
      	${prefix}/lib/emacs/${version}, not /usr/local/emacs.
      	(emacsdir): Variable deleted; it would only be confusing to use.
      	(lispdir, etcdir): Default to ${datadir}/lisp.
      	(mkdir): Use make-path for this.
      	(lockdir): Do this in mkdir.
      	(Makefile): New target.
      
      	* configure (usage_message): Rename to long_usage.
      e94740ce
    • Jim Blandy's avatar
      * Makefile.in (install, install.sysv, install.xenix, install.aix): · 78008d14
      Jim Blandy authored
      	Install the info files in ${infodir}.  Install the executable
      	under both `emacs' and `emacs-VERSION'.
      
      	* Makefile.in: Doc fix.
      
      	* Makefile.in (exec_prefix): New variable, as per latest version
      	of coding standards.
      	(bindir, libdir): Use it, instead of `prefix'.
      	(lib-src/Makefile): Edit value of exec_prefix into lib-src/Makefile.
      
      	* Makefile.in (mandir): Make the default value for this depend on
      	$(prefix).
      
      	* Makefile.in (datadir, statedir, libdir): Make these all default
      	to ${prefix}/lib.
      	(lispdir, locallisppath, etcdir, lockdir, archlibdir): Adjusted
      	to compensate.
      
      	* Makefile.in (install, install.sysv, install.xenix, install.aix):
      	Install the etags and ctags man pages too.
      
      	* Makefile.in (distclean): Don't delete backup files; that's the
      	job of extraclean.
      	(extraclean): Like distclean, but deletes backup and autosave files.
      
      	Make path specification conform to GNU coding standards.
      	* configure (long_usage): Remove all traces of old arguments from
      	usage messages, and document the options we do accept in more
      	detail: -with-x... and --srcdir.
      	(options, boolean_opts): Deleted; we don't have enough options to
      	make this worthwhile.
      	(prefix, bindir, lisppath, datadir, libdir, lockdir): Deleted,
      	along with the code which supported them; these should be set as
      	arguments to the top-level make.
      	(config_h_opts): Since this no longer doubles as a list of option
      	names, make them upper case; this simplifies the code which uses
      	them to build the sed command to edit src/config.h.  Change the
      	code which sets them.
      	(cc, g, O): Don't allow the user to set these using options; they
      	should be specified using `CC=' and `CFLAGS=' arguments to the
      	top-level make.  Just choose reasonable default values for them,
      	and edit them into Makefile.in's default CC and CONFIG_CFLAGS
      	values.
      	(gnu_malloc, rel_alloc): Don't allow the user to set these using
      	options; use them whenever the configuration files say they're
      	possible.
      	Simplify the argument processing loop.  Don't accept abbreviations
      	for option names; these might conflict with other configuration
      	options in the future.
      	Add some support for the `--srcdir' option.  Check for the sources
      	in . and .. if `--srcdir' is omitted.  If the directories we will
      	compile in don't exist yet, create them under the current directory.
      	Note that the rest of the build process doesn't really support
      	this.
      	Edit only the top Makefile.  That should edit the others.  Edit
      	into the makefile: `version', from lisp/version.el, `configname'
      	and `srcdir' from the configuration arguments, `CC' and
      	`CONFIG_CFLAGS' as guessed from the presence or absence of GCC in
      	the user's path, and LOADLIBES as gleaned from the system
      	description files.
      	Simplify the report generated; it doesn't need to include any
      	description of paths now.
      	Make `config.status' exec configure instead of just calling it, so
      	there's no harm in overwriting `config.status'.
      	* Makefile.in (version, configname): New variables, used to choose
      	the default values for datadir and libdir.
      	Path variables rearranged into two clearer groups:
      	- In the first group are the variables specified by the GNU coding
      	  standards (prefix, bindir, datadir, statedir, libdir, mandir,
      	  manext, infodir, and srcdir).
      	- In the second are the variables actually used for Emacs's paths
      	  (lispdir, locallisppath, lisppath, buildlisppath, etcdir, lockdir,
      	  archlibdir), which depend on the first category.
      	datadir and libdir default to directories under
      	${prefix}/lib/emacs instead of ${prefix}/emacs, by popular
      	demand.
      	etcdir and lispdir default to subdirectories of datadir.
      	archlibdir defaults to libdir.
      	The new installation tree is a bit deeper than it used to be, so
      	use the new make-path program in lib-src to build them all.
      	Always build a new src/paths.h.tmp and then move-if-change it to
      	src/paths.h, to avoid unnecessary rebuilds while responding to the
      	right changes.
      	Remove all mention of arch-lib.  Run utility commands from
      	lib-src, and let the executables be copied into archlibdir when
      	Emacs is installed.
      	Add targets for src/Makefile, lib-src/Makefile, and
      	oldXMenu/Makefile, editing the values of the path variables into
      	them.
      	Let lib-src do its own installation.
      	(datadir): Default to putting data files under
      	${prefix}/lib/emacs/${version}, not /usr/local/emacs.
      	(emacsdir): Variable deleted; it would only be confusing to use.
      	(lispdir, etcdir): Default to ${datadir}/lisp.
      	(mkdir): Use make-path for this.
      	(lockdir): Do this in mkdir.
      	(Makefile): New target.
      78008d14