Commit 579dd4be authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(struct x_display_info): Struct renamed from x_screen.

(x_display): x_screen field renamed to display_info.
(FRAME_X_DISPLAY): Use new name.
(FRAME_X_DISPLAY_INFO): Likewise; also renamed from FRAME_X_SCREEN.

(struct x_display_info): New fields *_mod_mask, icon_bitmap_id, connection,
xrdb, Xatom..., grabbed, height, width, screen, visual, n_planes.

(x_display_list): New variable.

(FRAME_X_SCREEN): New macro.
(WHITE_PIX_DEFAULT, BLACK_PIX_DEFAULT): Take arg f.

(EMACS_CLASS): Macro moved here.

(XExposeRegionEvent): Unused macro deleted.
(XGetWindowInfo, XGetFont, XLoseFont): Unused macros deleted.
(MINWIDTH, MINHEIGHT, MAXWIDTH, MAXHEIGHT): Unused macros deleted.
(MAX_FACES_AND_GLYPHS, Bitmap): Unused macros deleted.
(struct event_queue): Structure deleted (was unused).
(EVENT_BUFFER_SIZE): Macro deleted.

(XClear): Macro deleted.  Callers use XClearWindow.
(XWarpMousePointer): Macro deleted.  Callers use XWarpPointer.
(XStuffPending): Macro deleted.  Callers use XPending.
(XHandleError, XHandleIOError): Macros deleted.
Callers use XSet...ErrorHandler.
(XChangeWindowSize): Macro deleted.  Callers use XResizeWindow.
(Color): Macro deleted; replaced with XColor.
(FONT_TYPE): Macro deleted; replaced with XFontStruct.
(PIX_TYPE): Macro deleted; replaced with unsigned long.

(ROOT_WINDOW): Macro deleted.
(struct x_display_info): New field root_window.  All uses changed.

(XDISPLAY): Macro deleted.
(XFlushQueue): Macro deleted.  All callers changed.
(DISPLAY_SCREEN_ARG): Maco deleted.
(DISPLAY_CELLS): Macro deleted.
(WINDOWINFO_TYPE): Macro deleted.
parent 334208b7
......@@ -37,18 +37,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <X11/StringDefs.h>
#endif
/* Define a queue for X-events. One such queue is used for mouse clicks.
Another is used for expose events. */
#define EVENT_BUFFER_SIZE 64
/* Max and Min sizes in character columns. */
#define MINWIDTH 10
#define MINHEIGHT 10
#define MAXWIDTH 300
#define MAXHEIGHT 80
#ifdef HAVE_X11
/* The class of this X application. */
#define EMACS_CLASS "Emacs"
/* Bookkeeping to distinguish X versions. */
/* HAVE_X11R4 is defined if we have the features of X11R4. It should
be defined when we're using X11R5, since X11R5 has the features of
......@@ -90,48 +82,33 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define HAVE_X11R4
#endif
#endif
#define PIX_TYPE unsigned long
#define XDISPLAY x_current_display,
#define XFlushQueue() XFlush(x_current_display)
#define BLACK_PIX_DEFAULT BlackPixel (x_current_display, \
XDefaultScreen (x_current_display))
#define WHITE_PIX_DEFAULT WhitePixel (x_current_display, \
XDefaultScreen (x_current_display))
#define DISPLAY_SCREEN_ARG x_current_display, \
XDefaultScreen (x_current_display)
#define DISPLAY_CELLS DisplayCells (x_current_display, XDefaultScreen (x_current_display))
#define ROOT_WINDOW RootWindow (x_current_display, DefaultScreen (x_current_display))
#define FONT_TYPE XFontStruct
#define Color XColor
#define XExposeRegionEvent XExposeEvent
#define Bitmap Pixmap /* In X11, Bitmaps are a kind of
Pixmap. */
#define WINDOWINFO_TYPE XWindowAttributes
#define XGetWindowInfo(w, i) XGetWindowAttributes (x_current_display, \
(w), (i))
#define XGetFont(f) XLoadQueryFont (x_current_display, (f))
#define XLoseFont(f) XFreeFont (x_current_display, (f))
#define XStuffPending() XPending (x_current_display)
#define XClear(w) XClearWindow (x_current_display, (w))
#define XWarpMousePointer(w,x,y) XWarpPointer (x_current_display, None, w, \
0,0,0,0, x, y)
#define XHandleError XSetErrorHandler
#define XHandleIOError XSetIOErrorHandler
#define XChangeWindowSize(w,x,y) XResizeWindow(x_current_display,w,x,y)
#define BLACK_PIX_DEFAULT(f) BlackPixel (FRAME_X_DISPLAY (f), \
XScreenNumberOfScreen (FRAME_X_SCREEN (f)))
#define WHITE_PIX_DEFAULT(f) WhitePixel (FRAME_X_DISPLAY (f), \
XScreenNumberOfScreen (FRAME_X_SCREEN (f)))
#define FONT_WIDTH(f) ((f)->max_bounds.width)
#define FONT_HEIGHT(f) ((f)->ascent + (f)->descent)
#define FONT_BASE(f) ((f)->ascent)
#define CHECK_X_FRAME(f, frame) \
if (NILP (frame)) \
f = selected_frame; \
else \
{ \
CHECK_LIVE_FRAME (frame, 0); \
f = XFRAME (frame); \
} \
if (! FRAME_X_P (f))
/* The mask of events that text windows always want to receive. This
does not include mouse movement events. It is used when the window
is created (in x_window) and when we ask/unask for mouse movement
events (in XTmouse_tracking_enable).
is created (in x_window) and and in selection processing.
We do include ButtonReleases in this set because elisp isn't always
We do include ButtonReleases in this set because Emacs isn't always
fast enough to catch them when it wants them, and they're rare
enough that they don't use much processor time. */
......@@ -148,51 +125,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
| EnterWindowMask \
| VisibilityChangeMask)
#else /* X10 */
#define ConnectionNumber(dpy) dpyno()
#define PIX_TYPE int
#define XDISPLAY
#define XFlushQueue() XFlush()
#define BLACK_PIX_DEFAULT BlackPixel
#define WHITE_PIX_DEFAULT WhitePixel
#define DISPLAY_SCREEN_ARG
#define DISPLAY_CELLS DisplayCells ()
#define ROOT_WINDOW RootWindow
#define XFree free
#define FONT_TYPE FontInfo
#define WINDOWINFO_TYPE WindowInfo
#define XGetWindowInfo(w, i) XQueryWindow ((w), (i))
#define XGetFont(f) XOpenFont ((f))
#define XLoseFont(f) XCloseFont ((f))
#define XStuffPending() XPending ()
#define XWarpMousePointer(w,x,y) XWarpMouse (w,x,y)
#define XHandleError XErrorHandler
#define XHandleIOError XIOErrorHandler
#define FONT_WIDTH(f) ((f)->width)
#define FONT_HEIGHT(f) ((f)->height)
#define FONT_BASE(f) ((f)->base)
#define XChangeWindowSize(w,x,y) XChangeWindow(w,x,y)
#endif /* X10 */
struct event_queue
{
int rindex; /* Index at which to fetch next. */
int windex; /* Index at which to store next. */
XEvent xrep[EVENT_BUFFER_SIZE];
};
/* Queue for mouse clicks. */
extern struct event_queue x_mouse_queue;
/* This is the X connection that we are using. */
extern Display *x_current_display;
/* This checks to make sure we have a display. */
extern void check_x ();
......@@ -208,46 +140,7 @@ extern struct frame *x_top_window_to_frame ();
extern struct frame *x_focus_frame;
#ifdef HAVE_X11
/* Variables associated with the X display screen this emacs is using. */
/* How many screens this X display has. */
extern int x_screen_count;
/* The vendor supporting this X server. */
extern Lisp_Object Vx_vendor;
/* The vendor's release number for this X server. */
extern int x_release;
/* Height of this X screen in pixels. */
extern int x_screen_height;
/* Height of this X screen in millimeters. */
extern int x_screen_height_mm;
/* Width of this X screen in pixels. */
extern int x_screen_width;
/* Width of this X screen in millimeters. */
extern int x_screen_width_mm;
/* Does this X screen do backing store? */
extern Lisp_Object Vx_backing_store;
/* Does this X screen do save-unders? */
extern int x_save_under;
/* Number of planes for this screen. */
extern int x_screen_planes;
/* X Visual type of this screen. */
extern Lisp_Object Vx_screen_visual;
/* Mask of which mouse buttons are currently held down. */
extern unsigned int x_mouse_grabbed;
#endif /* HAVE_X11 */
extern Visual *select_visual ();
enum text_cursor_kinds {
filled_box_cursor, hollow_box_cursor, bar_cursor
......@@ -256,19 +149,90 @@ enum text_cursor_kinds {
/* For each X display, we have a structure that records
information about it. */
struct x_screen
struct x_display_info
{
/* Chain of all x_display structures. */
struct x_display *next;
struct x_display_info *next;
/* Connection number (normally a file descriptor number). */
int connection;
/* This says how to access this display in Xlib. */
Display *x_display_value;
Display *display;
/* This records previous values returned by x-list-fonts. */
Lisp_Object font_list_cache;
/* The name of this display. */
Lisp_Object name;
/* Number of frames that are on this display. */
int reference_count;
/* The Screen this connection is connected to. */
Screen *screen;
/* The Visual being used for this display. */
Visual *visual;
/* Number of panes on this screen. */
int n_planes;
/* Dimensions of this screen. */
int height, width;
/* Mask of things that cause the mouse to be grabbed. */
int grabbed;
/* Emacs bitmap-id of the default icon bitmap for this frame.
Or -1 if none has been allocated yet. */
int icon_bitmap_id;
/* The root window of this screen. */
Window root_window;
/* X Resource data base */
XrmDatabase xrdb;
/* Which modifier keys are on which modifier bits?
With each keystroke, X returns eight bits indicating which modifier
keys were held down when the key was pressed. The interpretation
of the top five modifier bits depends on what keys are attached
to them. If the Meta_L and Meta_R keysyms are on mod5, then mod5
is the meta bit.
meta_mod_mask is a mask containing the bits used for the meta key.
It may have more than one bit set, if more than one modifier bit
has meta keys on it. Basically, if EVENT is a KeyPress event,
the meta key is pressed if (EVENT.state & meta_mod_mask) != 0.
shift_lock_mask is LockMask if the XK_Shift_Lock keysym is on the
lock modifier bit, or zero otherwise. Non-alphabetic keys should
only be affected by the lock modifier bit if XK_Shift_Lock is in
use; XK_Caps_Lock should only affect alphabetic keys. With this
arrangement, the lock modifier should shift the character if
(EVENT.state & shift_lock_mask) != 0. */
int meta_mod_mask, shift_lock_mask;
/* These are like meta_mod_mask, but for different modifiers. */
int alt_mod_mask, super_mod_mask, hyper_mod_mask;
/* Communication with window managers. */
Atom Xatom_wm_protocols;
/* Kinds of protocol things we may receive. */
Atom Xatom_wm_take_focus;
Atom Xatom_wm_save_yourself;
Atom Xatom_wm_delete_window;
/* Atom for indicating window state to the window manager. */
Atom Xatom_wm_change_state;
/* Other WM communication */
Atom Xatom_wm_configure_denied; /* When our config request is denied */
Atom Xatom_wm_window_moved; /* When the WM moves us. */
/* EditRes protocol */
Atom Xatom_editres;
/* More atoms, which are selection types. */
Atom Xatom_CLIPBOARD, Xatom_TIMESTAMP, Xatom_TEXT, Xatom_DELETE,
Xatom_MULTIPLE, Xatom_INCR, Xatom_EMACS_TMP, Xatom_TARGETS, Xatom_NULL,
Xatom_ATOM_PAIR;
};
/* This is a chain of structures for all the X displays currently in use. */
extern struct x_display_info *x_display_list;
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 ();
/* Each X frame object points to its own struct x_display object
in the display.x field. The x_display structure contains all
......@@ -333,16 +297,16 @@ struct x_display
icon. */
int icon_bitmap;
FONT_TYPE *font;
XFontStruct *font;
/* Pixel values used for various purposes.
border_pixel may be -1 meaning use a gray tile. */
PIX_TYPE background_pixel;
PIX_TYPE foreground_pixel;
PIX_TYPE cursor_pixel;
PIX_TYPE border_pixel;
PIX_TYPE mouse_pixel;
PIX_TYPE cursor_foreground_pixel;
unsigned long background_pixel;
unsigned long foreground_pixel;
unsigned long cursor_pixel;
unsigned long border_pixel;
unsigned long mouse_pixel;
unsigned long cursor_foreground_pixel;
/* Descriptor for the cursor in use for this window. */
#ifdef HAVE_X11
......@@ -409,7 +373,7 @@ struct x_display
int size_hint_flags;
/* This is the Emacs structure for the X display this frame is on. */
struct x_screen *x_screen;
struct x_display_info *display_info;
};
/* Get at the computed faces of an X window frame. */
......@@ -431,10 +395,14 @@ struct x_display
#define FRAME_BACKGROUND_PIXEL(f) ((f)->display.x->background_pixel)
#define FRAME_FONT(f) ((f)->display.x->font)
#define FRAME_X_SCREEN(f) ((f)->display.x->x_screen)
/* This gives the x_display_info structure for the display F is on. */
#define FRAME_X_DISPLAY_INFO(f) ((f)->display.x->display_info)
/* This is the `Display *' which frame F is on. */
#define FRAME_X_DISPLAY(f) ((f)->display.x->x_screen->x_display_value)
#define FRAME_X_DISPLAY(f) (FRAME_X_DISPLAY_INFO (f)->display)
/* This is the `Screen *' which frame F is on. */
#define FRAME_X_SCREEN(f) (FRAME_X_DISPLAY_INFO (f)->screen)
/* These two really ought to be called FRAME_PIXEL_{WIDTH,HEIGHT}. */
#define PIXEL_WIDTH(f) ((f)->display.x->pixel_width)
......@@ -442,34 +410,6 @@ struct x_display
#define FRAME_DESIRED_CURSOR(f) ((f)->display.x->desired_cursor)
/* When X windows are used, a glyph may be a 16 bit unsigned datum.
The high order byte is the face number and is used as an index
in the face table. A face is a font plus:
1) the unhighlighted foreground color,
2) the unhighlighted background color.
For highlighting, the two colors are exchanged.
Face number 0 is unused. The low order byte of a glyph gives
the character within the font. All fonts are assumed to be
fixed width, and to have the same height and width. */
#ifdef HAVE_X11
/* Face declared in dispextern.h */
#else /* X10 */
struct face
{
FONT_TYPE *font; /* Font info for specified font. */
int fg; /* Unhighlighted foreground. */
int bg; /* Unhighlighted background. */
};
#endif /* X10 */
#define MAX_FACES_AND_GLYPHS 256
extern struct face *x_face_table[];
/* X-specific scroll bar stuff. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment