diff options
Diffstat (limited to 'src/dispextern.h')
-rw-r--r-- | src/dispextern.h | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/src/dispextern.h b/src/dispextern.h index cc248a4472e..468aee8d1ba 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -482,6 +482,11 @@ struct glyph continuation glyphs, or the overlay-arrow glyphs on TTYs. */ Lisp_Object object; + /* Frame on which the glyph was produced. The face_id of this glyph + refers to the face_cache of this frame. This is used on tty frames + only. */ + struct frame *frame; + /* Width in pixels. */ short pixel_width; @@ -626,10 +631,12 @@ struct glyph #define FONT_TYPE_UNKNOWN 0 -/* Is GLYPH a space? */ +/* Is GLYPH a space in default face on frame FRAME? */ -#define CHAR_GLYPH_SPACE_P(GLYPH) \ - ((GLYPH).u.ch == SPACEGLYPH && (GLYPH).face_id == DEFAULT_FACE_ID) +# define CHAR_GLYPH_SPACE_P(FRAME, GLYPH) \ + ((GLYPH).u.ch == SPACEGLYPH \ + && (GLYPH).face_id == DEFAULT_FACE_ID \ + && (GLYPH).frame == (FRAME)) /* Are glyph slices of glyphs *X and *Y equal? It assumes that both glyphs have the same type. @@ -654,6 +661,7 @@ struct glyph && (X)->u.val == (Y)->u.val \ && GLYPH_SLICE_EQUAL_P (X, Y) \ && (X)->face_id == (Y)->face_id \ + && (X)->frame == (Y)->frame \ && (X)->padding_p == (Y)->padding_p \ && (X)->left_box_line_p == (Y)->left_box_line_p \ && (X)->right_box_line_p == (Y)->right_box_line_p \ @@ -665,16 +673,18 @@ struct glyph #define GLYPH_CHAR_AND_FACE_EQUAL_P(X, Y) \ ((X)->u.ch == (Y)->u.ch \ && (X)->face_id == (Y)->face_id \ + && (X)->frame == (Y)->frame \ && (X)->padding_p == (Y)->padding_p) /* Fill a character glyph GLYPH. CODE, FACE_ID, PADDING_P correspond to the bits defined for the typedef `GLYPH' in lisp.h. */ -#define SET_CHAR_GLYPH(GLYPH, CODE, FACE_ID, PADDING_P) \ +#define SET_CHAR_GLYPH(FRAME, GLYPH, CODE, FACE_ID, PADDING_P) \ do \ { \ (GLYPH).u.ch = (CODE); \ (GLYPH).face_id = (FACE_ID); \ + (GLYPH).frame = (FRAME); \ (GLYPH).padding_p = (PADDING_P); \ } \ while (false) @@ -682,11 +692,9 @@ struct glyph /* Fill a character type glyph GLYPH from a glyph typedef FROM as defined in lisp.h. */ -#define SET_CHAR_GLYPH_FROM_GLYPH(GLYPH, FROM) \ - SET_CHAR_GLYPH (GLYPH, \ - GLYPH_CHAR (FROM), \ - GLYPH_FACE (FROM), \ - false) +#define SET_CHAR_GLYPH_FROM_GLYPH(FRAME, GLYPH, FROM) \ + SET_CHAR_GLYPH (FRAME, GLYPH, GLYPH_CHAR (FROM), \ + GLYPH_FACE (FROM), false) /* Construct a glyph code from a character glyph GLYPH. If the character is multibyte, return -1 as we can't use glyph table for a @@ -3805,7 +3813,7 @@ extern void adjust_frame_glyphs (struct frame *); void free_glyphs (struct frame *); void free_window_matrices (struct window *); void check_glyph_memory (void); -void mirrored_line_dance (struct glyph_matrix *, int, int, int *, char *); +void mirrored_line_dance (struct frame *f, int, int, int *, char *); void clear_glyph_matrix (struct glyph_matrix *); void clear_current_matrices (struct frame *f); void clear_desired_matrices (struct frame *); @@ -3829,7 +3837,7 @@ extern bool frame_size_change_delayed (struct frame *); void init_display (void); void syms_of_display (void); extern void spec_glyph_lookup_face (struct window *, GLYPH *); -extern void fill_up_frame_row_with_spaces (struct glyph_row *, int); +extern void fill_up_frame_row_with_spaces (struct frame *, struct glyph_row *, int); /* Defined in terminal.c. */ @@ -3911,6 +3919,16 @@ extern void gui_redo_mouse_highlight (Display_Info *); #endif /* HAVE_WINDOW_SYSTEM */ +struct frame *root_frame (struct frame *f); +Lisp_Object frames_in_reverse_z_order (struct frame *f, bool visible); +bool is_tty_frame (struct frame *f); +bool is_tty_child_frame (struct frame *f); +bool is_tty_root_frame (struct frame *f); +bool combine_updates (Lisp_Object root_frames, bool force_p, bool inhibit_id_p); +bool combine_updates_for_frame (struct frame *f, bool force_p, bool inhibit_id_p); +void tty_raise_lower_frame (struct frame *f, bool raise); +int max_child_z_order (struct frame *parent); + INLINE_HEADER_END #endif /* not DISPEXTERN_H_INCLUDED */ |