filled_box_cursor, hollow_box_cursor, bar_cursor
};
-/* This data type is used for the font_table field
- of struct x_display_info. */
-
-struct font_info
-{
- XFontStruct *font;
- char *name;
- char *full_name;
-};
-
/* Structure recording X pixmap and reference count.
If REFCOUNT is 0 then this record is free to be reused. */
/* More atoms, which are selection types. */
Atom Xatom_CLIPBOARD, Xatom_TIMESTAMP, Xatom_TEXT, Xatom_DELETE,
+ Xatom_COMPOUND_TEXT,
Xatom_MULTIPLE, Xatom_INCR, Xatom_EMACS_TMP, Xatom_TARGETS, Xatom_NULL,
Xatom_ATOM_PAIR;
+
+ /* More atoms for font properties. The last three are private
+ properties, see the comments in src/fontset.h. */
+ Atom Xatom_PIXEL_SIZE,
+ Xatom_MULE_BASELINE_OFFSET, Xatom_MULE_RELATIVE_COMPOSE,
+ Xatom_MULE_DEFAULT_ASCENT;
+
#ifdef MULTI_KBOARD
struct kboard *kboard;
#endif
frame. It differs from x_focus_frame when we're using a global
minibuffer. */
struct frame *x_highlight_frame;
+
+ /* The null pixel used for filling a character background with
+ background color of a gc. */
+ Pixmap null_pixel;
};
/* This is a chain of structures for all the X displays currently in use. */
FONT-LIST-CACHE records previous values returned by x-list-fonts. */
extern Lisp_Object x_display_name_list;
+/* Regexp matching a font name whose width is the same as `PIXEL_SIZE'. */
+extern Lisp_Object Vx_pixel_size_width_font_regexp;
+
extern struct x_display_info *x_display_info_for_display ();
extern struct x_display_info *x_display_info_for_name ();
extern struct x_display_info *x_term_init ();
+
+extern Lisp_Object x_list_fonts ();
+extern struct font_info *x_get_font_info(), *x_load_font (), *x_query_font ();
\f
/* Each X frame object points to its own struct x_output object
in the output_data.x field. The x_output structure contains
icon. */
int icon_bitmap;
+ /* Default ASCII font of this frame. */
XFontStruct *font;
+ /* The baseline position of the default ASCII font. */
+ int font_baseline;
+
+ /* If a fontset is specified for this frame instead of font, this
+ value contains an ID of the fontset, else -1. */
+ int fontset;
+
/* Pixel values used for various purposes.
border_pixel may be -1 meaning use a gray tile. */
unsigned long background_pixel;
struct x_display_info *display_info;
/* This is a button event that wants to activate the menubar.
- We save it here until the command loop gets to think about it. */
- XButtonEvent *saved_button_event;
+ We save it here until the command loop gets to think about it. */
+ XEvent *saved_menu_event;
/* This is the widget id used for this frame's menubar in lwlib. */
#ifdef USE_X_TOOLKIT
#define FRAME_FOREGROUND_PIXEL(f) ((f)->output_data.x->foreground_pixel)
#define FRAME_BACKGROUND_PIXEL(f) ((f)->output_data.x->background_pixel)
#define FRAME_FONT(f) ((f)->output_data.x->font)
+#define FRAME_FONTSET(f) ((f)->output_data.x->fontset)
#define FRAME_INTERNAL_BORDER_WIDTH(f) ((f)->output_data.x->internal_border_width)
#define FRAME_LINE_HEIGHT(f) ((f)->output_data.x->line_height)
/* This is the `Screen *' which frame F is on. */
#define FRAME_X_SCREEN(f) (FRAME_X_DISPLAY_INFO (f)->screen)
+/* This is the 'font_info *' which frame F has. */
+#define FRAME_X_FONT_TABLE(f) (FRAME_X_DISPLAY_INFO (f)->font_table)
+
/* These two really ought to be called FRAME_PIXEL_{WIDTH,HEIGHT}. */
#define PIXEL_WIDTH(f) ((f)->output_data.x->pixel_width)
#define PIXEL_HEIGHT(f) ((f)->output_data.x->pixel_height)
/* Return the inside width of a vertical scroll bar, given the outside
width. */
-#define VERTICAL_SCROLL_BAR_INSIDE_WIDTH(width) \
- ((width) - VERTICAL_SCROLL_BAR_LEFT_BORDER - VERTICAL_SCROLL_BAR_RIGHT_BORDER)
+#define VERTICAL_SCROLL_BAR_INSIDE_WIDTH(f, width) \
+ ((width) \
+ - VERTICAL_SCROLL_BAR_LEFT_BORDER \
+ - VERTICAL_SCROLL_BAR_RIGHT_BORDER \
+ - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2)
/* Return the length of the rectangle within which the top of the
handle must stay. This isn't equivalent to the inside height,
This is the real range of motion for the scroll bar, so when we're
scaling buffer positions to scroll bar positions, we use this, not
VERTICAL_SCROLL_BAR_INSIDE_HEIGHT. */
-#define VERTICAL_SCROLL_BAR_TOP_RANGE(height) \
- (VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (height) - VERTICAL_SCROLL_BAR_MIN_HANDLE)
+#define VERTICAL_SCROLL_BAR_TOP_RANGE(f, height) \
+ (VERTICAL_SCROLL_BAR_INSIDE_HEIGHT (f, height) - VERTICAL_SCROLL_BAR_MIN_HANDLE)
/* Return the inside height of vertical scroll bar, given the outside
height. See VERTICAL_SCROLL_BAR_TOP_RANGE too. */
-#define VERTICAL_SCROLL_BAR_INSIDE_HEIGHT(height) \
+#define VERTICAL_SCROLL_BAR_INSIDE_HEIGHT(f, height) \
((height) - VERTICAL_SCROLL_BAR_TOP_BORDER - VERTICAL_SCROLL_BAR_BOTTOM_BORDER)
/* Minimum lengths for scroll bar handles, in pixels. */
#define VERTICAL_SCROLL_BAR_MIN_HANDLE (5)
+/* Trimming off a few pixels from each side prevents
+ text from glomming up against the scroll bar */
+#define VERTICAL_SCROLL_BAR_WIDTH_TRIM (2)
+
\f
/* Manipulating pixel sizes and character sizes.
Knowledge of which factors affect the overall size of the window should