1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-30 09:00:31 -08:00
Commit graph

48 commits

Author SHA1 Message Date
Richard M. Stallman
2e16580f12 (compute_glyph_face_1): New function. 1994-08-07 04:51:57 +00:00
Richard M. Stallman
90e6242c9a (get_cached_face): Set the cached_index field. 1994-07-02 04:23:45 +00:00
Richard M. Stallman
b839cea074 (Fset_face_attribute_internal): Always return valid data. 1994-05-20 05:32:26 +00:00
Karl Heuer
3a22ee3595 Update copyright. 1994-05-04 02:41:09 +00:00
Richard M. Stallman
6717f69111 (frame_update_line_height): Don't call x_set_window_size.
Return 1 if line_height changed.
(Fset_face_attribute_internal): Call x_set_window_size here if nec.
1994-04-14 12:07:21 +00:00
Richard M. Stallman
867dd1594f (frame_update_line_height): Check param_faces[i] not null. 1994-04-10 01:19:57 +00:00
Richard M. Stallman
729425b106 (frame_update_line_height): New function.
(Fset_face_attribute_internal): Call that.
1994-04-09 06:33:49 +00:00
Richard M. Stallman
6f13448620 (compute_char_face): New arg MOUSE.
(Qmouse_face): New variable.
(syms_of_xfaces): Initialize Qmouse_face.
1994-03-31 23:12:26 +00:00
Karl Heuer
4d6ebff804 (compute_char_face): Extract overlay-sorting code as a separate function,
which is now in buffer.c.
1994-02-09 03:25:25 +00:00
Richard M. Stallman
fffc2367a5 (init_frame_faces): Clear FRAME_N_COMPUTED_FACES
and FRAME_SIZE_COMPUTED_FACES.

(compute_glyph_face): New arg CURRENT_FACE specifies face to merge with.
1994-02-06 08:05:58 +00:00
Richard M. Stallman
b349f4fb74 (compute_char_face): Accept new arg LIMIT.
Pass Fnext_single_property_change its new arg LIMIT.
1993-11-20 09:43:41 +00:00
Roland McGrath
18160b98ce Include <config.h> instead of "config.h". 1993-09-10 06:15:46 +00:00
Richard M. Stallman
82411f65a3 (face_name_id_number): Use assq_no_quit, not Fassq. 1993-07-24 05:49:51 +00:00
Jim Blandy
657070acda * xfaces.c [XOS_NEEDS_TIME_H]: #undef USG while #including
<X11/Xos.h>, so that file doesn't try to define struct timeval and
	struct timezone.
1993-07-05 09:31:36 +00:00
Jim Blandy
7b00de84fd Separate parameter faces (those created and modified by the user)
from the computed faces (the combinations created by
	compute_char_face), so that we don't waste global face id's.
	* xterm.h (struct x_display): Replace the fields faces and n_faces
	with fields param_faces, n_param_faces, computed_faces,
	n_computed_faces, and size_computed_faces.
	(FRAME_FACES, FRAME_N_FACES): Replaced by...
	(FRAME_COMPUTED_FACES, FRAME_N_COMPUTED_FACES, FRAME_PARAM_FACES,
	FRAME_N_PARAM_FACES): New macros.
	* xfaces.c: Doc fixes.
	(init_frame_faces): Call new_computed_face to create entries for
	the default and mode line faces.  Use the FRAME...PARAM_FACES
	macros.
	(free_frame_faces): Use the FRAME...PARAM_FACES and
	FRAME...COMPUTED_FACES macros.  Don't use the copy flag; all
	parameter faces have real X resources, and all computed faces just
	have copies.  Free both the parameter and computed face arrays.
	(new_computed_face): New function.
	(intern_computed_face): Renamed from intern_frame_face; callers
	changed.  Call new_computed_face.
	(ensure_face_ready, compute_char_face, compute_glyph_face): Use the
	FRAME...PARAM_FACES macros.
	(recompute_basic_faces): Use the FRAME...PARAM_FACES and
	FRAME...COMPUTED_FACES macros.  Produce the computed faces by
	starting with the base faces and merging in the parameter faces.
	(Fset_face_attribute_internal): Use the FRAME...PARAM_FACES
	macros.  Just call recompute_basic_faces if the default or mode
	line faces have changed.
	* xfns.c (Fx_list_fonts): Use the FRAME...PARAM_FACES macros.
	* xterm.c (dumpglyphs): Use the FRAME...COMPUTED_FACES macros.
	* dispextern.h (struct face): Remove the copy member.  This is no
	longer necessary; all computed faces are copies, and no parameter
	faces are.

	* xfaces.c (face_vector, nfaces, nfaces_allocated): Make these
	static.
1993-06-22 07:25:42 +00:00
Jim Blandy
254a1b6640 * xfaces.c (recompute_basic_faces): This shouldn't be declared static. 1993-06-19 21:28:56 +00:00
Jim Blandy
415445e2ba * xfaces.c: Add forward declaration for recompute_basic_faces. 1993-06-19 01:08:14 +00:00
Jim Blandy
582080c149 * xfaces.c (compute_base_face): Initialize the face's stipple.
Although we don't use this feature now, face_eql notices it.

	* xfaces.c (compute_base_face): Set cached_index to an invalid
	index, to avoid an unnecessary comparison.
1993-06-17 22:03:40 +00:00
Jim Blandy
1120eb5e8d * xfaces.c (init_frame_faces): Remove assumption that the selected
frame must be an X frame whenever there is already an X frame.
1993-06-09 04:36:41 +00:00
Richard M. Stallman
464078619a (same_size_fonts): Compare only the width. 1993-06-06 22:47:15 +00:00
Richard M. Stallman
6233db358f Test XOS_NEEDS_TIME_H, not HPUX, for including time.hj. 1993-06-02 20:15:43 +00:00
Richard M. Stallman
b3d7fa6aab (init_frame_faces): Don't look at selected_frame unless it is an X frame. 1993-06-01 19:23:38 +00:00
Jim Blandy
7a4d2269a7 * xfaces.c (unload_color): Don't #include <X11/Intrinsic.h>,
<X11/StringDefs.h>, or <X11/Xmu/Drawing.h>.  Just write out
	"unsigned long" instead of using the "Pixel" typedef; it's in the
	protocol, so it's not likely to change.
1993-05-30 20:34:54 +00:00
Richard M. Stallman
28d72e6d68 Fix HPUX conditional syntax. 1993-05-30 18:37:36 +00:00
Jim Blandy
7b37f67b57 * xfaces.c (init_frame_faces): We have to make sure that face ID's
are valid on all frames or no frames; make sure F has allocated
	faces for any face valid on the selected frame.
1993-05-30 18:12:11 +00:00
Richard M. Stallman
e11d186d50 [HPUX]: Include time.h and define __TIMEVAL__. 1993-05-29 21:10:41 +00:00
Jim Blandy
660ed6694b * xterm.h: New section for declarations for xfaces.c.
(init_frame_faces, free_frame_faces, intern_face,
	face_name_id_number, same_size_fonts, recompute_basic_faces,
	compute_char_face, compute_glyph_face): Declare these here.
	* xfaces.c (same_size_fonts): We can now remove this extern
	declaration.
	* xfns.c (face_name_id_number): Likewise.
	* xterm.c (intern_face): Likewise.

	* xfaces.c (build_face, unload_font, free_frame_faces): Don't
	forget to block input while making X calls.

	Treat faces as structures specifying modifications to the frame's
	parameters, rather than things which need to specify a complete
	set of parameters by themselves.
	* xfaces.c (init_frame_faces): Don't set up the two frame display
	faces by querying the GC - just leave all their fields blank, and
	call recompute_basic_faces, letting build_face do the work of
	consulting the frame when necessary.
	(recompute_basic_faces): New function.
	(compute_base_faces): New function for obtaining the "identity"
	for compute_char_face and compute_glyph_face.
	(compute_char_face, compute_glyph_face): Call it, instead of copying
	FRAME_DEFAULT_FACE.
	* xfns.c (x_make_gc): No need to call init_frame_faces here.

	* xfaces.c (intern_frame_face): This can be static.

	* dispextern.h (struct face): New field - `copy', to help us with
	resource allocation.
	* xfaces.c (free_frame_faces): Do free the first two faces; don't
	free anything from a face that's a copy.
	(intern_frame_face): Mark every face we intern as a copy; its
	resources are actually a combination of the real faces.
	(Fset_face_attribute_internal): No need to check if we're trying
	to free one of the frame's GC's; they never enter into the
	picture.

	* xfns.c (Fx_list_fonts): New function.
	(face_name_id_number): Add extern declaration for this.
	* xfaces.c (face_name_id_number): Make this externally visible,
	and make the FRAME argument a FRAME_PTR, not a Lisp_Object.
	(compute_char_face): Call face_name_id_number properly.
1993-05-25 14:02:58 +00:00
Jim Blandy
1d9fd7feaa * xfns.c (Fx_list_fonts): New function.
(same_size_fonts): Function moved here from xfaces.c.
	(face_name_id_number): Add extern declaration for this.
	* xfaces.c (same_size_fonts): Moved to xfns.c.  Left an extern
	declaration behind.
	(face_name_id_number): Make this externally visible, and make the
	FRAME argument a FRAME_PTR, not a Lisp_Object.
	(compute_char_face): Call face_name_id_number properly.

	* xfaces.c (unload_color): Don't free the pixel for now.

	* xfaces.c (merge_faces): You can't tell if a font is a
	character-cell font or not by testing whether or not it has a
	per_char table.  They all do.
1993-05-25 06:59:12 +00:00
Richard M. Stallman
ebc64af3a0 (Fset_face_attribute_internal): Don't call unload_font
for the frame's own font.
1993-05-24 00:03:08 +00:00
Jim Blandy
173004a3a4 * xfaces.c (Fset_face_attribute_internal): Don't free the frame's
normal_gc or reverse_gc.
1993-05-23 20:01:34 +00:00
Jim Blandy
c6c5df7f76 Updated copyright years. 1993-05-22 21:34:42 +00:00
Jim Blandy
3e4439ab30 Get the types right, baby. 1993-05-20 02:15:28 +00:00
Jim Blandy
68a973351f Make sure that all the display faces use fonts of the
same dimensions as the default face, so as not to confuse the rest
	of the redisplay code.
	* xfaces.c (same_size_fonts): New function.
	(merge_faces): Only merge in a new font from the FROM face if it
	is the same size as the font in the TO face.
1993-05-19 03:07:10 +00:00
Jim Blandy
a785758151 * xfaces.c (free_frame_faces): Don't free the resources from the
first two faces.
1993-05-18 22:46:17 +00:00
Richard M. Stallman
9516fe943a (compute_char_face): Pass 0 as EXTEND arg to overlays_at.
Try first with small overlay_vec, then use a big enough one.
1993-05-16 22:31:04 +00:00
Jim Blandy
584d063432 * xfaces.c (Fset_face_attribute_internal): Jolt redisplay, so it
knows something has changed.
1993-05-16 01:32:11 +00:00
Jim Blandy
32dc08666b * xfaces.c (unload_color): Don't try to unload the standard black
or white pixel.
1993-05-16 00:23:33 +00:00
Richard M. Stallman
bc0db68d47 (compute_char_face): New args REGION_BEG, REGION_END.
Don't sort if noverlays is 0 or 1.
1993-05-15 18:45:14 +00:00
Jim Blandy
f6b98e0be9 * xfaces.c (compute_char_face): When merging the overlays,
traverse sortvec, not overlay_vec; the latter isn't the one we
	sorted.

	* xfaces.c (intern_face): If the face has a GC, but it's not the
	default or modeline face, abort.  Nothing but those two faces
	should have a GC *and* be passed to intern_face.
	(compute_char_face, compute_glyph_face): After copying
	the frame's default face into face, to use as a base case for
	calculation, set the `gc' member to zero; that way we don't have
	things lying around that look like display faces but aren't.

	* xfaces.c (intern_frame_face): When copying the new face into the
	frame's face array, remember that the number of bytes to copy is
	sizeof (*new_face), not sizeof (new_face).

	* xfaces.c (compute_char_face): Assume that W is displaying the
	current buffer.  Abort if it isn't.
1993-05-14 14:44:01 +00:00
Jim Blandy
b6d40e465b * xfaces.c (intern_frame_face): Exchange order of arguments, to
make callers correct.

	* xfaces.c (compute_char_face): Notice the next property change
	location correctly.

	* xfaces.c (face_name_id_number): Return 0 (the default face) if
	the name is undefined.

	* xfaces.c (Fset_face_attribute_internal): Do nothing unless FRAME
	is an X frame.
1993-05-13 04:08:52 +00:00
Jim Blandy
18004d2b7f * xdisp.c (display_text_line): We can't use the FRAME_DEFAULT_FACE
macro here; that's x-specific.  Just don't pass the second
	argument.
	* xfaces.c (compute_glyph_face): Remove the BASIC_FACE argument;
	use F's default face.
1993-05-11 02:48:07 +00:00
Jim Blandy
cb63767871 * xfaces.c (Fmake_face_internal): Do nothing for non-X frames.
* dispextern.h (struct face): Add cached_index member.
	* xfaces.c (get_cached_face): Use it to avoid unnecessary
	searches of face_vector.

	* xfaces.c (intern_face): Renamed from get_display_face.

	* xfns.c (x_make_gc): After building the GC's for the frame, call
	init_frame_faces to set up the first two faces.
	* xfaces.c (init_frame_faces): Don't just try to copy the default
	and mode line faces from some other random frame; instead, consult
	the normal_gc and reverse_gc members of the frame, and build the
	faces based on their parameters.

	Adjust the face computation functions to return frame face ID's,
	not pointers to display faces; since we call these functions
	during display construction, we don't want the display faces yet.
	* xfaces.c (intern_frame_face): New function.
	(compute_char_face, compute_glyph_face): Apply intern_frame_face
	to the computed face, and return the frame face's ID, instead of
	calling intern_face and returning a pointer to a display frame.

	* xfaces.c: Describe the facial data structures.  It took me a
	while to figure them out; perhaps this will save someone else the
	trouble.

	* xfaces.c (get_display_face): Use face_eql instead of writing it out.
1993-05-10 00:25:17 +00:00
Richard M. Stallman
3dbae1e48e Don't include Xmu/Drawing.h. 1993-04-15 21:40:01 +00:00
Jim Blandy
367bf23780 * xfaces.c (sort_overlays): Define this to be static, as declared. 1993-04-10 08:03:51 +00:00
Jim Blandy
357f32fcd0 * xfaces.c: Doc fixes.
Put interrupt input blocking in a separate file from xterm.h.
	This isn't specific to X, and it allows us to avoid #including
	xterm.h in files that don't really have anything to do with X.
	* blockinput.h: New file.
	* xterm.h (BLOCK_INPUT, UNBLOCK_INPUT, TOTALLY_UNBLOCK_INPUT,
	UNBLOCK_INPUT_RESIGNAL): These are now in blockinput.h.
	(x_input_blocked, x_pending_input): Deleted; there are analogs
	in blockinput.h called interrupt_input_blocked and
	interrupt_input_pending.
	* keyboard.c (interrupt_input_blocked, interrupt_input_pending):
	New variables, used by the macros in blockinput.h.
	* xterm.c: #include blockinput.h.
	(x_input_blocked, x_pending_input): Deleted.
	(XTread_socket): Test and set interrupt_input_blocked and
	interrupt_input_pending instead of the old variables.
	* alloc.c, xfaces.c, xfns.c, xmenu.c, xselect.c, keymap.c:
	#include blockinput.h.
	* eval.c: #include blockinput.h instead of xterm.h.
	* keyboard.c: #include blockinput.h.
	(input_poll_signal): Just test
	interrupt_input_blocked, instead of testing HAVE_X_WINDOWS and
	x_input_blocked.

	Block the processing of interrupt input while we're manipulating the
	malloc heap.
	* alloc.c: (xfree): New function, to make it easy to free things
	safely.
	(xmalloc, xrealloc): Block X input while doing the deed.
	(VALIDATE_LISP_STORAGE, gc_sweep, compact_strings): Use xfree
	instead of free.
	(uninterrupt_malloc): New function, to install input-blocking
	hooks into the GNU malloc routines.
	* emacs.c [not SYSTEM_MALLOC] (main): Call uninterrupt_malloc
	on startup.
	* alloc.c: (make_interval, make_float, Fcons, Fmake_vector,
	Fmake_symbol, Fmake_marker, make_uninit_string, Fgarbage_collect):
	Use xmalloc instead of malloc; don't bother to check if out of
	memory here.
	(Fgarbage_collect): Call xrealloc instead of realloc.
	* buffer.c: Use xmalloc and xfree instead of malloc and free;
	don't bother to check if out of memory here.
	(Fget_buffer_create): Put BLOCK_INPUT/UNBLOCK_INPUT pair around
	calls to ralloc routines.
	* insdel.c: Same.
	* lisp.h (xfree): New extern declaration.
	* xfaces.c (xfree): Don't #define this to be free; use the
	definition in alloc.c.
	* dispnew.c, doc.c, doprnt.c, fileio.c, lread.c, term.c, xfns.c,
	xmenu.c, xterm.c: Use xfree instead of free.
	* hftctl.c: Use xfree and xmalloc instead of free and malloc.
	* keymap.c (current_minor_maps): BLOCK_INPUT while calling realloc
	and malloc.
	* search.c: Since the regexp routines can malloc, BLOCK_INPUT
	while runing them.  #include blockinput.h.
	* sysdep.c: #include blockinput.h.  Call xfree and xmalloc instead
	of free and malloc.  BLOCK_INPUT around routines which we know
	will call malloc.

	ymakefile (keyboard.o, keymap.o, search.o, sysdep.o, xfaces.o,
	xfns.o, xmenu.o, xterm.o, xselect.o, alloc.o, eval.o): Note that
	these depend on blockinput.h.
1993-03-31 10:47:13 +00:00
Jim Blandy
f211082d1e *** empty log message *** 1993-03-27 18:32:23 +00:00
Jim Blandy
7b7739b106 *** empty log message *** 1993-03-24 02:48:44 +00:00
Jim Blandy
c115973b6d Initial revision 1993-03-23 08:06:31 +00:00