\f
/* Miscellanea. */
+#include "systime.h" /* for Time */
+
struct glyph;
struct frame;
\f
int modifiers; /* See enum below for interpretation. */
Lisp_Object x, y;
- unsigned long timestamp;
+ Time timestamp;
/* This is padding just to put the frame_or_window field
past the size of struct selection_input_event. */
/* The next four modifier bits are used also in keyboard events at
the Lisp level.
- It's probably not the greatest idea to use the 2^23 bit for any
+ It's probably not the greatest idea to use the 2^28 bit for any
modifier. It may or may not be the sign bit, depending on
- VALBITS, so using it to represent a modifier key means that
+ FIXNUM_BITS, so using it to represent a modifier key means that
characters thus modified have different integer equivalents
depending on the architecture they're running on. Oh, and
- applying XINT to a character whose 2^23 bit is set sign-extends
+ applying XINT to a character whose 2^28 bit is set might sign-extend
it, so you get a bunch of bits in the mask you didn't want.
The CHAR_ macros are defined in lisp.h. */
/* Terminal-local parameters. */
struct terminal
{
- /* The first two fields are really the header of a vector */
- /* The terminal code does not refer to them. */
- EMACS_UINT size;
- struct Lisp_Vector *vec_next;
+ /* This is for Lisp; the terminal code does not refer to it. */
+ struct vectorlike_header header;
/* Parameter alist of this terminal. */
Lisp_Object param_alist;
the member terminal_coding. */
Lisp_Object charset_list;
+ /* This is an association list containing the X selections that
+ Emacs might own on this terminal. Each element has the form
+ (SELECTION-NAME SELECTION-VALUE SELECTION-TIMESTAMP FRAME)
+ SELECTION-NAME is a lisp symbol, whose name is the name of an X Atom.
+ SELECTION-VALUE is the value that emacs owns for that selection.
+ It may be any kind of Lisp object.
+ SELECTION-TIMESTAMP is the time at which emacs began owning this
+ selection, as a cons of two 16-bit numbers (making a 32 bit
+ time.)
+ FRAME is the frame for which we made the selection. If there is
+ an entry in this alist, then it can be assumed that Emacs owns
+ that selection.
+ The only (eq) parts of this list that are visible from Lisp are
+ the selection-values. */
+ Lisp_Object Vselection_alist;
+
/* All fields before `next_terminal' should be Lisp_Object and are traced
by the GC. All fields afterwards are ignored by the GC. */
enum scroll_bar_part *part,
Lisp_Object *x,
Lisp_Object *y,
- unsigned long *time);
+ Time *);
/* The window system handling code should set this if the mouse has
moved since the last call to the mouse_position_hook. Calling that
support overlapping frames, so there's no need to raise or lower
anything.
- If RAISE is non-zero, F is brought to the front, before all other
- windows. If RAISE is zero, F is sent to the back, behind all other
+ If RAISE_FLAG is non-zero, F is brought to the front, before all other
+ windows. If RAISE_FLAG is zero, F is sent to the back, behind all other
windows. */
- void (*frame_raise_lower_hook) (struct frame *f, int raise);
+ void (*frame_raise_lower_hook) (struct frame *f, int raise_flag);
/* If the value of the frame parameter changed, whis hook is called.
For example, if going from fullscreen to not fullscreen this hook
#define FRAME_TERMINAL(f) ((f)->terminal)
-/* FRAME_WINDOW_P tests whether the frame is a window, and is
- defined to be the predicate for the window system being used. */
-
-#ifdef HAVE_X_WINDOWS
-#define FRAME_WINDOW_P(f) FRAME_X_P (f)
-#endif
-#ifdef HAVE_NTGUI
-#define FRAME_WINDOW_P(f) FRAME_W32_P (f)
-#endif
-#ifndef FRAME_WINDOW_P
-#define FRAME_WINDOW_P(f) (0)
-#endif
-
/* Return true if the terminal device is not suspended. */
#define TERMINAL_ACTIVE_P(d) (((d)->type != output_termcap && (d)->type !=output_msdos_raw) || (d)->display_info.tty->input)