X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/cafdcef32d55cbb44389d7e322e7f973cbb72dfd..2124ec92ffa31ba0a2e7b177f8de2dd6e27ded6d:/src/termhooks.h
diff --git a/src/termhooks.h b/src/termhooks.h
index 0ccd2dac9e..63d166b641 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -20,6 +20,8 @@ along with GNU Emacs. If not, see . */
/* Miscellanea. */
+#include "systime.h" /* for Time */
+
struct glyph;
struct frame;
@@ -233,7 +235,7 @@ struct input_event
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. */
@@ -286,12 +288,12 @@ enum {
/* 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. */
@@ -306,7 +308,9 @@ enum {
#ifdef HAVE_GPM
#include
extern int handle_one_term_event (struct tty_display_info *, Gpm_Event *, struct input_event *);
+#ifndef HAVE_WINDOW_SYSTEM
extern void term_mouse_moveto (int, int);
+#endif
/* The device for which we have enabled gpm support. */
extern struct tty_display_info *gpm_tty;
@@ -320,10 +324,8 @@ struct w32_display_info;
/* 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;
@@ -333,6 +335,22 @@ struct terminal
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. */
@@ -463,7 +481,7 @@ struct terminal
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
@@ -482,10 +500,10 @@ struct terminal
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
@@ -631,19 +649,6 @@ extern struct terminal *terminal_list;
#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)
@@ -660,4 +665,3 @@ extern unsigned char *encode_terminal_code (struct glyph *, int,
#ifdef HAVE_GPM
extern void close_gpm (int gpm_fd);
#endif
-