X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/c1ff17c59c87515fcd286fc9bf96122028626b3e..2d0ffc9aa8662ec6d931bcb0d755ceb36fc62020:/src/dispextern.h diff --git a/src/dispextern.h b/src/dispextern.h index a1432ee937..c7edd020f8 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -26,7 +26,10 @@ Boston, MA 02111-1307, USA. */ #ifdef HAVE_X_WINDOWS #include -#endif +#ifdef USE_X_TOOLKIT +#include +#endif /* USE_X_TOOLKIT */ +#endif /* HAVE_X_WINDOWS */ #ifdef MSDOS #include "msdos.h" @@ -36,6 +39,9 @@ Boston, MA 02111-1307, USA. */ #include "w32gui.h" #endif +#ifdef macintosh +#include "macterm.h" +#endif /* Structure forward declarations. Some are here because function prototypes below reference structure types before their definition @@ -50,22 +56,6 @@ struct frame; struct window; - -/*********************************************************************** - Configuration - ***********************************************************************/ - -/* If NO_PROMPT_IN_BUFFER is zero or undefined (default), prompts are - inserted into minibuffers as read-only text. Otherwise, the - behavior of Emacs 20.2 is restored. Define this as part of CFLAGS - because dispextern.h is not included in every C source file - containing conditional code for it. */ - -#if 0 -#define NO_PROMPT_IN_BUFFER 1 -#endif - - /*********************************************************************** Debugging @@ -82,7 +72,7 @@ struct window; #if GLYPH_DEBUG #define IF_DEBUG(X) X -#define xassert(X) if (!(X)) abort (); else (void) 0 +#define xassert(X) do {if (!(X)) abort ();} while (0) #else #define IF_DEBUG(X) (void) 0 #define xassert(X) (void) 0 @@ -474,12 +464,18 @@ struct glyph_matrix /* Non-zero means window displayed in this matrix has a top mode line. */ - unsigned top_line_p : 1; + unsigned header_line_p : 1; #ifdef GLYPH_DEBUG /* A string identifying the method used to display the matrix. */ char method[512]; #endif + + /* The buffer this matrix displays. Set in redisplay_internal. */ + struct buffer *buffer; + + /* Values of BEGV and ZV as of last redisplay. */ + int begv, zv; }; @@ -681,7 +677,7 @@ struct glyph_row *matrix_row P_ ((struct glyph_matrix *, int)); This is always the first row in MATRIX because that's the only way that works in frame-based redisplay. */ -#define MATRIX_TOP_LINE_ROW(MATRIX) (MATRIX)->rows +#define MATRIX_HEADER_LINE_ROW(MATRIX) (MATRIX)->rows /* Return a pointer to first row in MATRIX used for text display. */ @@ -751,7 +747,7 @@ struct glyph_row *matrix_row P_ ((struct glyph_matrix *, int)); #define MATRIX_ROW_PARTIALLY_VISIBLE_AT_TOP_P(W, ROW) \ (MATRIX_ROW_PARTIALLY_VISIBLE_P ((ROW)) \ - && (ROW)->y < WINDOW_DISPLAY_TOP_LINE_HEIGHT ((W))) + && (ROW)->y < WINDOW_DISPLAY_HEADER_LINE_HEIGHT ((W))) /* Non-zero if ROW is partially visible at the bottom of window W. */ @@ -870,9 +866,9 @@ extern struct glyph_row scratch_glyph_row; if not known. This macro is called under circumstances where MATRIX might not have been allocated yet. */ -#define MATRIX_TOP_LINE_HEIGHT(MATRIX) \ +#define MATRIX_HEADER_LINE_HEIGHT(MATRIX) \ ((MATRIX) && (MATRIX)->rows \ - ? MATRIX_TOP_LINE_ROW (MATRIX)->height \ + ? MATRIX_HEADER_LINE_ROW (MATRIX)->height \ : 0) /* Return the current height of the mode line of window W. If not @@ -888,10 +884,10 @@ extern struct glyph_row scratch_glyph_row; known from W's current glyph matrix, return an estimation based on the height of the font of the face `top-line'. */ -#define CURRENT_TOP_LINE_HEIGHT(W) \ - (MATRIX_TOP_LINE_HEIGHT ((W)->current_matrix) \ - ? MATRIX_TOP_LINE_HEIGHT ((W)->current_matrix) \ - : estimate_mode_line_height (XFRAME ((W)->frame), TOP_LINE_FACE_ID)) +#define CURRENT_HEADER_LINE_HEIGHT(W) \ + (MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix) \ + ? MATRIX_HEADER_LINE_HEIGHT ((W)->current_matrix) \ + : estimate_mode_line_height (XFRAME ((W)->frame), HEADER_LINE_FACE_ID)) /* Return the height of the desired mode line of window W. */ @@ -900,8 +896,8 @@ extern struct glyph_row scratch_glyph_row; /* Return the height of the desired top line of window W. */ -#define DESIRED_TOP_LINE_HEIGHT(W) \ - MATRIX_TOP_LINE_HEIGHT ((W)->desired_matrix) +#define DESIRED_HEADER_LINE_HEIGHT(W) \ + MATRIX_HEADER_LINE_HEIGHT ((W)->desired_matrix) /* Like FRAME_INTERNAL_BORDER_WIDTH but checks whether frame F is a window-system frame. */ @@ -917,7 +913,7 @@ extern struct glyph_row scratch_glyph_row; #define WINDOW_DISPLAY_PIXEL_WIDTH(W) \ (((XFASTINT ((W)->width) \ - FRAME_SCROLL_BAR_WIDTH (XFRAME (WINDOW_FRAME ((W)))) \ - - 2 * FRAME_FLAGS_AREA_COLS (XFRAME (WINDOW_FRAME ((W))))) \ + - FRAME_FLAGS_AREA_COLS (XFRAME (WINDOW_FRAME ((W))))) \ * CANON_X_UNIT (XFRAME (WINDOW_FRAME ((W)))))) /* Height of the display region of W, including a mode line, if any. */ @@ -937,9 +933,9 @@ extern struct glyph_row scratch_glyph_row; /* Height in pixels of the top line. Zero if W doesn't have a top line. */ -#define WINDOW_DISPLAY_TOP_LINE_HEIGHT(W) \ - (WINDOW_WANTS_TOP_LINE_P ((W)) \ - ? CURRENT_TOP_LINE_HEIGHT (W) \ +#define WINDOW_DISPLAY_HEADER_LINE_HEIGHT(W) \ + (WINDOW_WANTS_HEADER_LINE_P ((W)) \ + ? CURRENT_HEADER_LINE_HEIGHT (W) \ : 0) /* Pixel height of window W without mode line. */ @@ -953,7 +949,7 @@ extern struct glyph_row scratch_glyph_row; #define WINDOW_DISPLAY_TEXT_HEIGHT(W) \ (WINDOW_DISPLAY_PIXEL_HEIGHT ((W)) \ - WINDOW_DISPLAY_MODE_LINE_HEIGHT ((W)) \ - - WINDOW_DISPLAY_TOP_LINE_HEIGHT ((W))) + - WINDOW_DISPLAY_HEADER_LINE_HEIGHT ((W))) /* Left edge of W in pixels relative to its frame. */ @@ -961,7 +957,7 @@ extern struct glyph_row scratch_glyph_row; (FRAME_INTERNAL_BORDER_WIDTH_SAFE (XFRAME (WINDOW_FRAME ((W)))) \ + (WINDOW_LEFT_MARGIN ((W)) \ * CANON_X_UNIT (XFRAME (WINDOW_FRAME ((W))))) \ - + FRAME_FLAGS_AREA_WIDTH (XFRAME (WINDOW_FRAME ((W))))) + + FRAME_LEFT_FLAGS_AREA_WIDTH (XFRAME (WINDOW_FRAME ((W))))) /* Right edge of window W in pixels, relative to its frame. */ @@ -1063,11 +1059,11 @@ extern struct glyph_row scratch_glyph_row; /* Value is non-zero if window W wants a top line. */ -#define WINDOW_WANTS_TOP_LINE_P(W) \ +#define WINDOW_WANTS_HEADER_LINE_P(W) \ (!MINI_WINDOW_P (W) \ && !(W)->pseudo_window_p \ && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME (W))) \ - && !NILP (XBUFFER ((W)->buffer)->top_line_format)) + && !NILP (XBUFFER ((W)->buffer)->header_line_format)) /*********************************************************************** @@ -1271,9 +1267,14 @@ enum face_id { DEFAULT_FACE_ID, MODE_LINE_FACE_ID, - TOOLBAR_FACE_ID, + TOOL_BAR_FACE_ID, BITMAP_AREA_FACE_ID, - TOP_LINE_FACE_ID, + HEADER_LINE_FACE_ID, + SCROLL_BAR_FACE_ID, + BORDER_FACE_ID, + CURSOR_FACE_ID, + MOUSE_FACE_ID, + MENU_FACE_ID, BASIC_FACE_ID_SENTINEL }; @@ -1480,7 +1481,7 @@ struct it unsigned multibyte_p : 1; /* 1 means window has a mode line at its top. */ - unsigned top_line_p : 1; + unsigned header_line_p : 1; /* 1 means `string' is the value of a `display' property. Don't handle some `display' properties in these strings. */ @@ -1507,8 +1508,11 @@ struct it int saved_face_id; /* Vector of glyphs for control character translation. The pointer - dpvec is set to ctl_chars when a control character is translated. */ - Lisp_Object ctl_chars[4]; + dpvec is set to ctl_chars when a control character is translated. + This vector is also used for incomplete multibyte character + translation (e.g \222\244). Such a character is at most 3 bytes, + thus we need at most 12 bytes here. */ + Lisp_Object ctl_chars[12]; /* Current buffer or string position of the iterator, including position in overlay strings etc. */ @@ -1585,7 +1589,7 @@ struct it unsigned overlay_strings_at_end_processed_p : 1; /* The ID of the default face to use. One of DEFAULT_FACE_ID, - MODE_LINE_FACE_ID, or TOOLBAR_FACE_ID, depending on what we + MODE_LINE_FACE_ID, or TOOL_BAR_FACE_ID, depending on what we are displaying. */ int base_face_id; @@ -1899,6 +1903,9 @@ struct image /* Reference to the type of the image. */ struct image_type *type; + /* 1 means that loading the image failed. Don't try again. */ + unsigned load_failed_p; + /* A place for image types to store additional data. The member data.lisp_val is marked during GC, so it's safe to store Lisp data there. Image types should free this data when their `free' @@ -1965,69 +1972,69 @@ struct image_cache /*********************************************************************** - Toolbars + Tool-bars ***********************************************************************/ -/* Enumeration defining where to find toolbar item information in - toolbar items vectors stored with frames. Each toolbar item - occupies TOOLBAR_ITEM_NSLOTS elements in such a vector. */ +/* Enumeration defining where to find tool-bar item information in + tool-bar items vectors stored with frames. Each tool-bar item + occupies TOOL_BAR_ITEM_NSLOTS elements in such a vector. */ -enum toolbar_item_idx +enum tool_bar_item_idx { - /* The key of the toolbar item. Used to remove items when a binding + /* The key of the tool-bar item. Used to remove items when a binding for `undefined' is found. */ - TOOLBAR_ITEM_KEY, + TOOL_BAR_ITEM_KEY, /* Non-nil if item is enabled. */ - TOOLBAR_ITEM_ENABLED_P, + TOOL_BAR_ITEM_ENABLED_P, /* Non-nil if item is selected (pressed). */ - TOOLBAR_ITEM_SELECTED_P, + TOOL_BAR_ITEM_SELECTED_P, /* Caption. */ - TOOLBAR_ITEM_CAPTION, + TOOL_BAR_ITEM_CAPTION, /* Image(s) to display. This is either a single image specification or a vector of specifications. */ - TOOLBAR_ITEM_IMAGES, + TOOL_BAR_ITEM_IMAGES, /* The binding. */ - TOOLBAR_ITEM_BINDING, + TOOL_BAR_ITEM_BINDING, /* Button type. One of nil, `:radio' or `:toggle'. */ - TOOLBAR_ITEM_TYPE, + TOOL_BAR_ITEM_TYPE, /* Help string. */ - TOOLBAR_ITEM_HELP, + TOOL_BAR_ITEM_HELP, - /* Sentinel = number of slots in toolbar_items occupied by one - toolbar item. */ - TOOLBAR_ITEM_NSLOTS + /* Sentinel = number of slots in tool_bar_items occupied by one + tool-bar item. */ + TOOL_BAR_ITEM_NSLOTS }; /* An enumeration for the different images that can be specified - for a toolbar item. */ + for a tool-bar item. */ -enum toolbar_item_image +enum tool_bar_item_image { - TOOLBAR_IMAGE_ENABLED_SELECTED, - TOOLBAR_IMAGE_ENABLED_DESELECTED, - TOOLBAR_IMAGE_DISABLED_SELECTED, - TOOLBAR_IMAGE_DISABLED_DESELECTED + TOOL_BAR_IMAGE_ENABLED_SELECTED, + TOOL_BAR_IMAGE_ENABLED_DESELECTED, + TOOL_BAR_IMAGE_DISABLED_SELECTED, + TOOL_BAR_IMAGE_DISABLED_DESELECTED }; -/* Non-zero means raise toolbar buttons when the mouse moves over them. */ +/* Non-zero means raise tool-bar buttons when the mouse moves over them. */ -extern int auto_raise_toolbar_buttons_p; +extern int auto_raise_tool_bar_buttons_p; -/* Margin around toolbar buttons in pixels. */ +/* Margin around tool-bar buttons in pixels. */ -extern int toolbar_button_margin; +extern int tool_bar_button_margin; -/* Thickness of relief to draw around toolbar buttons. */ +/* Thickness of relief to draw around tool-bar buttons. */ -extern int toolbar_button_relief; +extern int tool_bar_button_relief; @@ -2037,6 +2044,8 @@ extern int toolbar_button_relief; /* Defined in xdisp.c */ +void resize_echo_area_axactly P_ ((void)); +int resize_mini_window P_ ((struct window *, int)); int try_window P_ ((Lisp_Object, struct text_pos)); void window_box P_ ((struct window *, int, int *, int *, int *, int *)); int window_box_height P_ ((struct window *)); @@ -2063,10 +2072,11 @@ void move_it_vertically P_ ((struct it *, int)); void move_it_by_lines P_ ((struct it *, int, int)); int frame_mode_line_height P_ ((struct frame *)); void highlight_trailing_whitespace P_ ((struct frame *, struct glyph_row *)); -int toolbar_item_info P_ ((struct frame *, struct glyph *, int *)); -extern Lisp_Object Qtoolbar; +int tool_bar_item_info P_ ((struct frame *, struct glyph *, int *)); +extern Lisp_Object Qtool_bar; extern Lisp_Object Vshow_trailing_whitespace; extern int redisplaying_p; +extern void add_to_log P_ ((char *, Lisp_Object, Lisp_Object)); /* Defined in sysdep.c */ @@ -2077,8 +2087,14 @@ int tabs_safe_p P_ ((void)); void init_baud_rate P_ ((void)); void init_sigio P_ ((int)); -/* Defined in xface.c */ +/* Defined in xfaces.c */ + +#ifdef USE_X_TOOLKIT +void x_set_menu_resources_from_menu_face P_ ((struct frame *, Widget)); +#endif +void update_face_from_frame_parameter P_ ((struct frame *, Lisp_Object, + Lisp_Object)); char *x_charset_registry P_ ((int)); void clear_face_cache P_ ((int)); unsigned long load_color P_ ((struct frame *, struct face *, Lisp_Object, @@ -2110,6 +2126,8 @@ extern Lisp_Object Qforeground_color, Qbackground_color; #ifdef HAVE_X_WINDOWS +void gamma_correct P_ ((struct frame *, XColor *)); +void x_kill_gs_process P_ ((Pixmap, struct frame *)); int x_screen_planes P_ ((struct frame *)); void x_implicitly_set_name P_ ((struct frame *, Lisp_Object, Lisp_Object)); struct image_cache *make_image_cache P_ ((void)); @@ -2136,8 +2154,9 @@ extern int display_busy_cursor_p; int popup_activated P_ ((void)); -/* Defined in dispnw.c */ +/* Defined in dispnew.c */ +int estimate_mode_line_height P_ ((struct frame *, enum face_id)); Lisp_Object mode_line_string P_ ((struct window *, int, int, int, int *)); extern void redraw_frame P_ ((struct frame *)); extern void redraw_garbaged_frames P_ ((void)); @@ -2148,8 +2167,6 @@ extern int direct_output_for_insert P_ ((int)); extern int direct_output_forward_char P_ ((int)); extern int update_frame P_ ((struct frame *, int, int)); extern int scrolling P_ ((struct frame *)); -extern void do_pending_window_change P_ ((void)); -extern void change_frame_size P_ ((struct frame *, int, int, int, int)); extern void bitch_at_user P_ ((void)); void adjust_glyphs P_ ((struct frame *)); void free_glyphs P_ ((struct frame *)); @@ -2182,8 +2199,8 @@ int update_frame P_ ((struct frame *, int, int)); void update_single_window P_ ((struct window *, int)); int scrolling P_ ((struct frame *)); int buffer_posn_from_coords P_ ((struct window *, int *, int *)); -void do_pending_window_change P_ ((void)); -void change_frame_size P_ ((struct frame *, int, int, int, int)); +void do_pending_window_change P_ ((int)); +void change_frame_size P_ ((struct frame *, int, int, int, int, int)); void bitch_at_user P_ ((void)); Lisp_Object sit_for P_ ((int, int, int, int, int)); void init_display P_ ((void));