1. 26 Jan, 1993 5 commits
    • Jim Blandy's avatar
      JimB's changes since January 18th · dbc4e1c1
      Jim Blandy authored
      dbc4e1c1
    • Jim Blandy's avatar
      JimB's changes from January 18 to present · 72766144
      Jim Blandy authored
      72766144
    • Jim Blandy's avatar
      * disass.el (disassemble): Add autoload cookie for this. · ed015bdd
      Jim Blandy authored
      	* bytecomp.el (byte-decompile-bytecode): Add an autoload for this.
      
      	compiled-function-p has been renamed to byte-code-function-p.
      	* subr.el: Define compiled-function-p as an alias for it.
      	* bytecomp.el: Register compiled-function-p as obsolete.
      	* bytecomp.el, byte-opt.el, disass.el, help.el, map-ynp.el: Change
      	uses.
      
      	unread-command-event has been replaced by unread-command-events.
      	* simple.el (prefix-arg-internal): Use this to push back all
      	key sequences for processing by the main command loop, instead of
      	trying to simulate its behavior ourselves.
      	* bytecomp.el: Document unread-command-event as an obsolete
      	variable, although nothing but the GNU Emacs 19 sources use it.
      	Adjust obsolescence message for unread-command-char.
      	* comint.el (comint-dynamic-list-completions): Change uses of
      	unread-command-event to work with unread-command-events.
      	* ebuff-menu.el (electric-buffer-list, Electric-buffer-menu-exit):
      	Same.
      	* edebug.el (edebug-outside-excursion): Same.
      	* ehelp.el (electric-help-command-loop): Same.
      	* electric.el (Electric-command-loop): Same.
      	* emerge.el (emerge-show-file-name): Same.
      	* fortran.el (fortran-abbrev-start,
      	fortran-window-create-momentarily): Same.
      	* gnus.el (gnus-Subject-next-article): Same.
      	* info.el (Info-summary): Same.
      	* isearch-mode.el (isearch-update, isearch-unread): Same.
      	* map-ynp.el (map-y-or-n-p): Same.
      	* mlsupport.el (push-back-character): Same.
      	* replace.el (perform-replace): Same.
      	* simula.el (simula-electric-label): Same.
      	* subr.el (read-quoted-char, momentary-string-display): Same.
      	* sun-mouse.el (mouse-second-hit): Same.
      	* terminal.el (te-escape-extended-command-unread): Same.
      	* vip.el (vip-escape-to-emacs, vip-prefix-arg-value,
      	vip-prefix-arg-com): Same.
      ed015bdd
    • Jim Blandy's avatar
      compiled-function-p has been renamed to byte-code-function-p. · 96d699f3
      Jim Blandy authored
      	* subr.el: Define compiled-function-p as an alias for it.
      	* bytecomp.el: Register compiled-function-p as obsolete.
      	* bytecomp.el, byte-opt.el, disass.el, help.el, map-ynp.el: Change
      	uses.
      96d699f3
    • Jim Blandy's avatar
      x-selection-value has been renamed to x-selection. · d81fd0bf
      Jim Blandy authored
      	x-own-selection has been renamed to x-set-selection, and the order
      	of its arguments has been reversed, for consistency with other
      	lisp functions like put and aset.
      	* term/x-win.el (x-select-text): Adjusted.
      	(x-cut-buffer-or-selection-value): Check the primary selection,
      	using x-selection, instead of checking the cut buffer again.
      
      	* term/x-win.el: Doc fix.
      d81fd0bf
  2. 25 Jan, 1993 6 commits
  3. 22 Jan, 1993 2 commits
    • Jim Blandy's avatar
      * xterm.c (x_scrollbar_create): Set the scrollbars to use · c0ff3fab
      Jim Blandy authored
      	EastGravity.
      
      	* frame.c (Fdelete_frame): Clear the frame's display after calling
      	the window-system-dependent frame destruction routine.  We
      	no longer need to pass the display as a separate argument to
      	x_destroy_window.
      	* xterm.c (x_destroy_window): Put the code which clears out f's
      	display here, right after we free the storage it points to.  Put
      	everything, including the code which clears x_focus_frame and
      	x_highlight_frame, inside the BLOCK/UNBLOCK_INPUT pair.
      c0ff3fab
    • Jim Blandy's avatar
      * frame.c (Fdelete_frame): Clear the frame's display after calling · 8678b9cc
      Jim Blandy authored
      	the window-system-dependent frame destruction routine.  We
      	no longer need to pass the display as a separate argument to
      	x_destroy_window.
      	* xterm.c (x_destroy_window): Put the code which clears out f's
      	display here, right after we free the storage it points to.  Put
      	everything, including the code which clears x_focus_frame and
      	x_highlight_frame, inside the BLOCK/UNBLOCK_INPUT pair.
      
      	* frame.c (Fdelete_frame): Clear the frame's display after calling
      	the window-system-dependent frame destruction routine.  We
      	no longer need to pass the display as a separate argument to
      	x_destroy_window.
      	* xterm.c (x_destroy_window): Put the code which clears out f's
      	display here, right after we free the storage it points to.  Put
      	everything, including the code which clears x_focus_frame and
      	x_highlight_frame, inside the BLOCK/UNBLOCK_INPUT pair.
      8678b9cc
  4. 21 Jan, 1993 2 commits
  5. 19 Jan, 1993 2 commits
  6. 16 Jan, 1993 2 commits
    • Jim Blandy's avatar
      * c-mode.el (c-switch-label-regexp): New constant. · 3a65941e
      Jim Blandy authored
      	(electric-c-terminator, c-indent-line, indent-c-exp): Use it to
      	correctly recognize default labels in switch statements.
      3a65941e
    • Jim Blandy's avatar
      * xterm.c (x_window_to_scrollbar): Search frames' · cf7cb199
      Jim Blandy authored
      	condemned_scrollbars list as well; input might arrive during
      	redisplay.
      	(x_scrollbar_report_motion): Don't forget to BLOCK_INPUT.
      	(XTjudge_scrollbars): Clear the condemned scrollbar list before
      	traversing it, so we don't try to process an event on a scrollbar
      	we've killed.
      cf7cb199
  7. 15 Jan, 1993 3 commits
  8. 14 Jan, 1993 18 commits
    • Roland McGrath's avatar
    • Richard M. Stallman's avatar
      (Fwindow_at): Doc fix. · b0c33a94
      Richard M. Stallman authored
      b0c33a94
    • David J. MacKenzie's avatar
      *** empty log message *** · 65565c68
      David J. MacKenzie authored
      65565c68
    • Richard M. Stallman's avatar
    • Jim Blandy's avatar
      The shell comment char is #, not ;. · bf03a38a
      Jim Blandy authored
      bf03a38a
    • Jim Blandy's avatar
    • Jim Blandy's avatar
      * xterm.c (x_scrollbar_create): Include PointerMotionHintMask in · 9a572e2a
      Jim Blandy authored
      	the event mask for scrollbars.
      9a572e2a
    • Jim Blandy's avatar
      * make-dist: Include `./lisp/calc-2.02' in the distribution. · fda4e8f6
      Jim Blandy authored
      	Add `./cpp', `./info', and `./man' back into the distribution.
      fda4e8f6
    • Jim Blandy's avatar
    • Jim Blandy's avatar
      * make-dist: Remember that the authoritative COPYING notice is · 96858c42
      Jim Blandy authored
      	`etc/COPYING', not `../etc/COPYING'.
      96858c42
    • Jim Blandy's avatar
      * .gdbinit: Add "-geometry +0+0" to default args. · b2367490
      Jim Blandy authored
      	(xscrollbar): New command.
      b2367490
    • Jim Blandy's avatar
      Make scrollbar structures into lisp objects, so that they can be · 4e027793
      Jim Blandy authored
      	GC'd; this allows windows and scrollbars can refer to each other
      	without worrying about dangling pointers.
      	* xterm.h (struct x_display): vertical_scrollbars and
      	judge_timestamp members deleted.
      	(struct scrollbar): Redesigned to be a template for a Lisp_Vector.
      	(SCROLLBAR_VEC_SIZE, XSCROLLBAR, SCROLLBAR_PACK, SCROLLBAR_UNPACK,
      	SCROLLBAR_X_WINDOW, SET_SCROLLBAR_X_WINDOW,
      	VERTICAL_SCROLLBAR_INSIDE_WIDTH, VERTICAL_SCROLLBAR_TOP_RANGE,
      	VERTICAL_SCROLLBAR_INSIDE_HEIGHT, VERTICAL_SCROLLBAR_MIN_HANDLE):
      	New macros, to help deal with the lispy structures, and deal with
      	the graphics.
      	* frame.h (WINDOW_VERTICAL_SCROLLBAR): Macro deleted.
      	(struct frame): New fields `scrollbars' and
      	`condemned_scrollbars', for use by the scrollbar implementation.
      	[MULTI_FRAME and not MULTI_FRAME] (FRAME_SCROLLBARS,
      	FRAME_CONDEMNED_SCROLLBARS): Accessors for the new field.
      	* window.h (struct window): Doc fix for vertical_scrollbar field.
      	* frame.c (make_frame): Initialize the `scrollbars' and
      	`condemned_scrollbars' fields of the new frame.
      	* alloc.c (mark_object): Mark the `scrollbars' and
      	`condemned_scrollbars' slots of frames.
      	* xterm.c (x_window_to_scrollbar): Scrollbars are chained on
      	frames' scrollbar field, not their x.display->vertical_scrollbars
      	field.
      	(x_scrollbar_create, x_scrollbar_set_handle, x_scrollbar_move,
      	x_scrollbar_remove, XTset_vertical_scrollbar,
      	XTcondemn_scrollbars, XTredeem_scrollbar, XTjudge_scrollbars,
      	x_scrollbar_expose, x_scrollbar_handle_click,
      	x_scrollbar_handle_motion): Substantially rewritten to correct
      	typos and brainos, and to accomodate the lispy structures.
      
      	* xterm.h (CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT,
      	PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Rewritten, using:
      	(CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, PIXEL_TO_CHAR_ROW,
      	PIXEL_TO_CHAR_COL): New macros.
      	* xfns.c [not HAVE_X11] (Fx_create_frame): Use the
      	PIXEL_TO_CHAR_{HEIGHT,WIDTH} macros to figure the frame's
      	character size, and the CHAR_TO_PIXEL* macros for vice versa.
      	* xterm.c (XTwrite_glyphs, XTclear_end_of_line, stufflines,
      	scraplines, dumprectangle, pixel_to_glyph_coords, x_draw_box,
      	clear_cursor, x_display_bar_cursor, x_draw_single_glyph,
      	x_set_mouse_position): Use the CHAR_TO_PIXEL_* macros.
      4e027793
    • Jim Blandy's avatar
      Make scrollbar structures into lisp objects, so that they can be · 12ba150f
      Jim Blandy authored
      	GC'd; this allows windows and scrollbars can refer to each other
      	without worrying about dangling pointers.
      	* xterm.h (struct x_display): vertical_scrollbars and
      	judge_timestamp members deleted.
      	(struct scrollbar): Redesigned to be a template for a Lisp_Vector.
      	(SCROLLBAR_VEC_SIZE, XSCROLLBAR, SCROLLBAR_PACK, SCROLLBAR_UNPACK,
      	SCROLLBAR_X_WINDOW, SET_SCROLLBAR_X_WINDOW,
      	VERTICAL_SCROLLBAR_INSIDE_WIDTH, VERTICAL_SCROLLBAR_TOP_RANGE,
      	VERTICAL_SCROLLBAR_INSIDE_HEIGHT, VERTICAL_SCROLLBAR_MIN_HANDLE):
      	New macros, to help deal with the lispy structures, and deal with
      	the graphics.
      	* frame.h (WINDOW_VERTICAL_SCROLLBAR): Macro deleted.
      	(struct frame): New fields `scrollbars' and
      	`condemned_scrollbars', for use by the scrollbar implementation.
      	[MULTI_FRAME and not MULTI_FRAME] (FRAME_SCROLLBARS,
      	FRAME_CONDEMNED_SCROLLBARS): Accessors for the new field.
      	* window.h (struct window): Doc fix for vertical_scrollbar field.
      	* frame.c (make_frame): Initialize the `scrollbars' and
      	`condemned_scrollbars' fields of the new frame.
      	* alloc.c (mark_object): Mark the `scrollbars' and
      	`condemned_scrollbars' slots of frames.
      	* xterm.c (x_window_to_scrollbar): Scrollbars are chained on
      	frames' scrollbar field, not their x.display->vertical_scrollbars
      	field.
      	(x_scrollbar_create, x_scrollbar_set_handle, x_scrollbar_move,
      	x_scrollbar_remove, XTset_vertical_scrollbar,
      	XTcondemn_scrollbars, XTredeem_scrollbar, XTjudge_scrollbars,
      	x_scrollbar_expose, x_scrollbar_handle_click,
      	x_scrollbar_handle_motion): Substantially rewritten to correct
      	typos and brainos, and to accomodate the lispy structures.
      
      	* xterm.c (x_scrollbar_background_expose): Function deleted; we
      	don't want anything in the background there after all.
      	(XTread_socket): Don't call x_scrollbar_background_expose.  We
      	don't care.
      
      	* xterm.h (CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT,
      	PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Rewritten, using:
      	(CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, PIXEL_TO_CHAR_ROW,
      	PIXEL_TO_CHAR_COL): New macros.
      	* xfns.c [not HAVE_X11] (Fx_create_frame): Use the
      	PIXEL_TO_CHAR_{HEIGHT,WIDTH} macros to figure the frame's
      	character size, and the CHAR_TO_PIXEL* macros for vice versa.
      	* xterm.c (XTwrite_glyphs, XTclear_end_of_line, stufflines,
      	scraplines, dumprectangle, pixel_to_glyph_coords, x_draw_box,
      	clear_cursor, x_display_bar_cursor, x_draw_single_glyph,
      	x_set_mouse_position): Use the CHAR_TO_PIXEL_* macros.
      
      	* xterm.c (x_wm_set_size_hint): The max_width and max_height
      	members of the size_hints are expressed in pixels, not columns.
      
      	* xterm.c (x_set_window_size): Remove ibw var; it's not used.
      	Set FRAME_WIDTH (f) to cols instead of rows.  Duh.
      
      	* xterm.c (pixel_to_glyph_coords): Properly set *bounds to the
      	character cell bounding the position, even when the position is
      	off the frame.
      
      	* termhooks.h (mouse_position_hook): Doc fix.
      	(set_vertical_scrollbar_hook): This doesn't return anything any
      	more, and doesn't take a struct scrollbar * argument any more.
      	(condemn_scrollbars_hook, redeem_scrollbar_hook,
      	judge_scrollbars_hook): Doc fixes.
      	* term.c (mouse_position_hook): Doc fix.
      	(set_vertical_scrollbar_hook): This doesn't return
      	anything any more.  Doc fixes.
      	* keyboard.c (kbd_buffer_get_event): Receive the scrollbar's
      	window from *mouse_position_hook and pass it to
      	make_lispy_movement, instead of working with a pointer to a struct
      	scrollbar.
      	(make_lispy_event): We don't need a window_from_scrollbar function
      	anymore; we are given the window directly in *EVENT.
      	Unify the code which generates
      	text-area mouse clicks and scrollbar clicks; use the same code to
      	distinguish clicks from drags on the scrollbar as in the text area.
      	Distinguish clicks from drags by storing a copy of the lispy
      	position list returned as part of the event.
      	(button_down_location): Make this a lisp vector, rather than an
      	array of random structures.
      	(struct mouse_position): Remove this; it's been replaced by a lisp
      	list.
      	(make_lispy_movement): Accept the scrollbar's window as a
      	parameter, rather than the scrollbar itself.
      	If FRAME is zero, assume that the other arguments are garbage.
      	(syms_of_keyboard): No need to staticpro each window of
      	button_down_location now; just initialize and staticpro it.
      	* window.c (window_from_scrollbar): Function deleted; no longer
      	needed.
      	* xdisp.c (redisplay_window): Just pass the window to
      	set_vertical_scrollbar hook; don't pass the scrollbar object too.
      	* xterm.c (XTmouse_position): Don't return a pointer to the
      	scrollbar for scrollbar motion; instead, return the scrollbar's
      	window.
      
      	* xterm.c (XTmouse_position): Entirely rewritten, using
      	XTranslateCoordinates.  Call x_scrollbar_report_motion to handle
      	scrollbar movement events.
      	(x_scrollbar_report_motion): New function, to help out
      	XTmouse_position.
      
      	* termhooks.h (struct input_event): Replace the frame member with
      	a Lisp_Object member by the name of frame_or_window.  Doc fixes.
      	Remove the scrollbar member; instead, use frame_or_window to hold the
      	window whose scrollbar was clicked.
      	* keyboard.c (kbd_buffer_store_event, kbd_buffer_get_event,
      	make_lispy_event): Adjust references to frame member of struct
      	input_event to use frame_or_window now.
      	* xterm.c (construct_mouse_click, XTread_socket): Same.
      
      	* xterm.c (last_mouse_bar, last_mouse_bar_frame, last_mouse_part,
      	last_mouse_scroll_range_start, last_mouse_scroll_range_end):
      	Replaced with...
      	(last_mouse_scrollbar): New variable.
      	(note_mouse_movement): Clear last_mouse_scrollbar when we have
      	receieved a new motion.
      	(syms_of_xterm): Staticpro last_mouse_scrollbar.
      
      	* xterm.c (note_mouse_position): Renamed to note_mouse_movement,
      	because that's what it really does.
      	(x_scrollbar_handle_motion): Renamed to x_scrollbar_note_movement,
      	for consistency.
      	(XTread_socket): Adjusted.
      
      	* xterm.c (XTset_scrollbar): Renamed to XTset_vertical_scrollbar.
      	(x_term_init): Adjusted.
      
      	* emacs.c (shut_down_emacs): New function.
      	(fatal_error_signal, Fkill_emacs): Call it, instead of writing it out.
      	* xterm.c (x_connection_closed): Call shut_down_emacs instead of
      	Fkill_emacs; the latter will try to perform operations on the X
      	server and die a horrible death.
      	* lisp.h (shut_down_emacs): Add extern declaration for it.
      
      	* xterm.c (x_error_quitter): Move the abort call to after we print
      	the error message.  No harm in that.
      12ba150f
    • Jim Blandy's avatar
      * xfns.c (Fx_create_frame): After mapping the frame, call · cf177271
      Jim Blandy authored
      	SET_FRAME_GARBAGED, not just plain FRAME_GARBAGED.
      
      	* xfns.c (Qvertical_scrollbars): New symbol.  Use it as the name
      	of the parameter which decides whether or not the frame has
      	scrollbars, instead of Qvertical_scrollbar.
      	(Fx_create_frame): Adjusted accordingly.
      	(syms_of_xfns): Initialize and staticpro Qvertical_scrollbars.
      	(x_set_vertical_scrollbar): Renamed to x_set_vertical_scrollbars.
      	(x_frame_parms): Adjusted accordingly.
      
      	* xterm.h (CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT,
      	PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Rewritten, using:
      	(CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, PIXEL_TO_CHAR_ROW,
      	PIXEL_TO_CHAR_COL): New macros.
      	* xfns.c [not HAVE_X11] (Fx_create_frame): Use the
      	PIXEL_TO_CHAR_{HEIGHT,WIDTH} macros to figure the frame's
      	character size, and the CHAR_TO_PIXEL* macros for vice versa.
      	* xterm.c (XTwrite_glyphs, XTclear_end_of_line, stufflines,
      	scraplines, dumprectangle, pixel_to_glyph_coords, x_draw_box,
      	clear_cursor, x_display_bar_cursor, x_draw_single_glyph,
      	x_set_mouse_position): Use the CHAR_TO_PIXEL_* macros.
      
      	* xfns.c (x_set_name): To request that the modelines be redrawn,
      	execute the statement "update_mode_lines = 1;" instead of the
      	silly statement "update_mode_lines;".
      
      	* xfns.c (x_set_vertical_scrollbars): Don't try to set the
      	X window's size if the frame's X window hasn't been created yet.
      
      	* xfns.c (x_figure_window_size): Set the frame's
      	vertical_scrollbar_extra field before trying to calculate its
      	pixel dimensions.
      
      	* xfns.c (x_window): When calling x_implicitly_set_name for the
      	sake of drawing the name for the first time, remember to clear and
      	set the frame's explicit_name member as well as its name member.
      	(Fx_create_frame): Set the frame's explicit_name member if the
      	user specified the name explicitly.
      
      	* xfns.c (Fx_get_resource): Add CLASS argument, to give class of
      	ATTRIBUTE.
      	[not HAVE_X11]: Change definition of Fx_get_resource macro
      	accordingly.
      	(x_get_arg): Add CLASS argument, to give the class of ATTRIBUTE.
      	Pass it along to Fx_get_resource.
      	(x_figure_window_size, x_icon): Pass new argument to x_get_arg.
      	(x_default_parameter): Add XCLASS argument, to give the class of
      	XPROP.  Pass it along to x_get_arg.
      	(Fx_create_frame): Pass new args to x_get_arg and
      	x_default_parameter.
      
      	* xfns.c (Fx_create_frame): Use the same resource names and
      	classes as xterm and Emacs 18.
      cf177271
    • Jim Blandy's avatar
      * window.c (window_internal_width): New function, which accounts · b1d1124b
      Jim Blandy authored
      	for scrollbars if present.
      	* lisp.h (window_internal_height, window_internal_width): Add
      	extern declarations for these.
      	* dispnew.c (direct_output_for_insert, direct_output_forward_char,
      	buffer_posn_from_coords): Use window_internal_width instead of
      	writing out its definition.
      	* indent.c (compute_motion): Doc fix; mention scrollbars and
      	window_internal_width.
      	(pos_tab_offset, Fvertical_motion): Use window_internal_width
      	instead of writing it out.
      	* window.c (Fpos_visible_in_window_p, Fwindow_width, Fscroll_left,
      	Fscroll_right): Same.
      	* xdisp.c (redisplay, try_window, try_window_id,
      	display_text_line): Same.
      
      	* xdisp.c (display_string): Add new variable `f', to be W's
      	frame.  Use it to set desired_glyphs, and to get the frame's width
      	to decide whether or not to draw vertical bars.
      
      	* xdisp.c (display_text_line): If we're using vertical scrollbars,
      	don't draw the vertical bars separating side-by-side windows.
      	(display_string): Same thing.  Draw spaces to fill in the part of
      	the mode line that is under the scrollbar in partial-width
      	windows.
      
      	* xdisp.c (display_text_line): Use the usable internal width of
      	the window, as calculated above, as the limit on the length of the
      	overlay arrow's image, rather than using the window's width field,
      	less one.
      
      	* xdisp.c (redisplay): Call condemn_scrollbars_hook and
      	judge_scrollbars_hook whenever they are set, not just when the
      	frame has vertical scrollbars.
      
      	* termhooks.h (mouse_position_hook): Doc fix.
      	(set_vertical_scrollbar_hook): This doesn't return anything any
      	more, and doesn't take a struct scrollbar * argument any more.
      	(condemn_scrollbars_hook, redeem_scrollbar_hook,
      	judge_scrollbars_hook): Doc fixes.
      	* term.c (mouse_position_hook): Doc fix.
      	(set_vertical_scrollbar_hook): This doesn't return
      	anything any more.  Doc fixes.
      	* keyboard.c (kbd_buffer_get_event): Receive the scrollbar's
      	window from *mouse_position_hook and pass it to
      	make_lispy_movement, instead of working with a pointer to a struct
      	scrollbar.
      	(make_lispy_event): We don't need a window_from_scrollbar function
      	anymore; we are given the window directly in *EVENT.
      	Unify the code which generates
      	text-area mouse clicks and scrollbar clicks; use the same code to
      	distinguish clicks from drags on the scrollbar as in the text area.
      	Distinguish clicks from drags by storing a copy of the lispy
      	position list returned as part of the event.
      	(button_down_location): Make this a lisp vector, rather than an
      	array of random structures.
      	(struct mouse_position): Remove this; it's been replaced by a lisp
      	list.
      	(make_lispy_movement): Accept the scrollbar's window as a
      	parameter, rather than the scrollbar itself.
      	If FRAME is zero, assume that the other arguments are garbage.
      	(syms_of_keyboard): No need to staticpro each window of
      	button_down_location now; just initialize and staticpro it.
      	* window.c (window_from_scrollbar): Function deleted; no longer
      	needed.
      	* xdisp.c (redisplay_window): Just pass the window to
      	set_vertical_scrollbar hook; don't pass the scrollbar object too.
      	* xterm.c (XTmouse_position): Don't return a pointer to the
      	scrollbar for scrollbar motion; instead, return the scrollbar's
      	window.
      
      	* xdisp.c (echo_area_display): Move the assignment of f and the
      	check for visibility out of the "#ifdef MULTI_FRAME" clause; they
      	should work under any circumstances.
      
      	* xdisp.c (redisplay_window): If we're not going to redisplay this
      	window because it's a minibuffer whose contents have already been
      	updated, go ahead and jump to the scrollbar refreshing code
      	anyway; they still need to be updated.  Initialize opoint, so it's
      	known to be valid when we jump.  Calculate the scrollbar settings
      	properly for minibuffers, no matter what they are displaying at
      	the time.
      
      	* xdisp.c (redisplay_windows): Don't restore the current buffer
      	and its point before refreshing the scrollbars; we need the buffer
      	accurate.
      b1d1124b
    • Jim Blandy's avatar
      Make scrollbar structures into lisp objects, so that they can be · 7c299e7a
      Jim Blandy authored
      	GC'd; this allows windows and scrollbars can refer to each other
      	without worrying about dangling pointers.
      	* xterm.h (struct x_display): vertical_scrollbars and
      	judge_timestamp members deleted.
      	(struct scrollbar): Redesigned to be a template for a Lisp_Vector.
      	(SCROLLBAR_VEC_SIZE, XSCROLLBAR, SCROLLBAR_PACK, SCROLLBAR_UNPACK,
      	SCROLLBAR_X_WINDOW, SET_SCROLLBAR_X_WINDOW,
      	VERTICAL_SCROLLBAR_INSIDE_WIDTH, VERTICAL_SCROLLBAR_TOP_RANGE,
      	VERTICAL_SCROLLBAR_INSIDE_HEIGHT, VERTICAL_SCROLLBAR_MIN_HANDLE):
      	New macros, to help deal with the lispy structures, and deal with
      	the graphics.
      	* frame.h (WINDOW_VERTICAL_SCROLLBAR): Macro deleted.
      	(struct frame): New fields `scrollbars' and
      	`condemned_scrollbars', for use by the scrollbar implementation.
      	[MULTI_FRAME and not MULTI_FRAME] (FRAME_SCROLLBARS,
      	FRAME_CONDEMNED_SCROLLBARS): Accessors for the new field.
      	* window.h (struct window): Doc fix for vertical_scrollbar field.
      	* frame.c (make_frame): Initialize the `scrollbars' and
      	`condemned_scrollbars' fields of the new frame.
      	* alloc.c (mark_object): Mark the `scrollbars' and
      	`condemned_scrollbars' slots of frames.
      	* xterm.c (x_window_to_scrollbar): Scrollbars are chained on
      	frames' scrollbar field, not their x.display->vertical_scrollbars
      	field.
      	(x_scrollbar_create, x_scrollbar_set_handle, x_scrollbar_move,
      	x_scrollbar_remove, XTset_vertical_scrollbar,
      	XTcondemn_scrollbars, XTredeem_scrollbar, XTjudge_scrollbars,
      	x_scrollbar_expose, x_scrollbar_handle_click,
      	x_scrollbar_handle_motion): Substantially rewritten to correct
      	typos and brainos, and to accomodate the lispy structures.
      7c299e7a
    • Jim Blandy's avatar
      * window.c (window_internal_width): New function, which accounts · 535e0b8e
      Jim Blandy authored
      	for scrollbars if present.
      	* lisp.h (window_internal_height, window_internal_width): Add
      	extern declarations for these.
      	* dispnew.c (direct_output_for_insert, direct_output_forward_char,
      	buffer_posn_from_coords): Use window_internal_width instead of
      	writing out its definition.
      	* indent.c (compute_motion): Doc fix; mention scrollbars and
      	window_internal_width.
      	(pos_tab_offset, Fvertical_motion): Use window_internal_width
      	instead of writing it out.
      	* window.c (Fpos_visible_in_window_p, Fwindow_width, Fscroll_left,
      	Fscroll_right): Same.
      	* xdisp.c (redisplay, try_window, try_window_id,
      	display_text_line): Same.
      
      	* termhooks.h (mouse_position_hook): Doc fix.
      	(set_vertical_scrollbar_hook): This doesn't return anything any
      	more, and doesn't take a struct scrollbar * argument any more.
      	(condemn_scrollbars_hook, redeem_scrollbar_hook,
      	judge_scrollbars_hook): Doc fixes.
      	* term.c (mouse_position_hook): Doc fix.
      	(set_vertical_scrollbar_hook): This doesn't return
      	anything any more.  Doc fixes.
      	* keyboard.c (kbd_buffer_get_event): Receive the scrollbar's
      	window from *mouse_position_hook and pass it to
      	make_lispy_movement, instead of working with a pointer to a struct
      	scrollbar.
      	(make_lispy_event): We don't need a window_from_scrollbar function
      	anymore; we are given the window directly in *EVENT.
      	Unify the code which generates
      	text-area mouse clicks and scrollbar clicks; use the same code to
      	distinguish clicks from drags on the scrollbar as in the text area.
      	Distinguish clicks from drags by storing a copy of the lispy
      	position list returned as part of the event.
      	(button_down_location): Make this a lisp vector, rather than an
      	array of random structures.
      	(struct mouse_position): Remove this; it's been replaced by a lisp
      	list.
      	(make_lispy_movement): Accept the scrollbar's window as a
      	parameter, rather than the scrollbar itself.
      	If FRAME is zero, assume that the other arguments are garbage.
      	(syms_of_keyboard): No need to staticpro each window of
      	button_down_location now; just initialize and staticpro it.
      	* window.c (window_from_scrollbar): Function deleted; no longer
      	needed.
      	* xdisp.c (redisplay_window): Just pass the window to
      	set_vertical_scrollbar hook; don't pass the scrollbar object too.
      	* xterm.c (XTmouse_position): Don't return a pointer to the
      	scrollbar for scrollbar motion; instead, return the scrollbar's
      	window.
      535e0b8e
    • Jim Blandy's avatar
      * termhooks.h (mouse_position_hook): Doc fix. · ec3f896c
      Jim Blandy authored
      	(set_vertical_scrollbar_hook): This doesn't return anything any
      	more, and doesn't take a struct scrollbar * argument any more.
      	(condemn_scrollbars_hook, redeem_scrollbar_hook,
      	judge_scrollbars_hook): Doc fixes.
      	* term.c (mouse_position_hook): Doc fix.
      	(set_vertical_scrollbar_hook): This doesn't return
      	anything any more.  Doc fixes.
      	* keyboard.c (kbd_buffer_get_event): Receive the scrollbar's
      	window from *mouse_position_hook and pass it to
      	make_lispy_movement, instead of working with a pointer to a struct
      	scrollbar.
      	(make_lispy_event): We don't need a window_from_scrollbar function
      	anymore; we are given the window directly in *EVENT.
      	Unify the code which generates
      	text-area mouse clicks and scrollbar clicks; use the same code to
      	distinguish clicks from drags on the scrollbar as in the text area.
      	Distinguish clicks from drags by storing a copy of the lispy
      	position list returned as part of the event.
      	(button_down_location): Make this a lisp vector, rather than an
      	array of random structures.
      	(struct mouse_position): Remove this; it's been replaced by a lisp
      	list.
      	(make_lispy_movement): Accept the scrollbar's window as a
      	parameter, rather than the scrollbar itself.
      	If FRAME is zero, assume that the other arguments are garbage.
      	(syms_of_keyboard): No need to staticpro each window of
      	button_down_location now; just initialize and staticpro it.
      	* window.c (window_from_scrollbar): Function deleted; no longer
      	needed.
      	* xdisp.c (redisplay_window): Just pass the window to
      	set_vertical_scrollbar hook; don't pass the scrollbar object too.
      	* xterm.c (XTmouse_position): Don't return a pointer to the
      	scrollbar for scrollbar motion; instead, return the scrollbar's
      	window.
      
      	* termhooks.h (struct input_event): Replace the frame member with
      	a Lisp_Object member by the name of frame_or_window.  Doc fixes.
      	Remove the scrollbar member; instead, use frame_or_window to hold the
      	window whose scrollbar was clicked.
      	* keyboard.c (kbd_buffer_store_event, kbd_buffer_get_event,
      	make_lispy_event): Adjust references to frame member of struct
      	input_event to use frame_or_window now.
      	* xterm.c (construct_mouse_click, XTread_socket): Same.
      ec3f896c