summaryrefslogtreecommitdiff
path: root/src/termhooks.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/termhooks.h')
-rw-r--r--src/termhooks.h92
1 files changed, 85 insertions, 7 deletions
diff --git a/src/termhooks.h b/src/termhooks.h
index 080e074526d..93ac9ba0d2e 100644
--- a/src/termhooks.h
+++ b/src/termhooks.h
@@ -60,7 +60,9 @@ enum output_method
output_x_window,
output_msdos_raw,
output_w32,
- output_ns
+ output_ns,
+ output_pgtk,
+ output_haiku
};
/* Input queue declarations and hooks. */
@@ -78,10 +80,29 @@ enum event_kind
which the key was typed.
.timestamp gives a timestamp (in
milliseconds) for the keystroke. */
- MULTIBYTE_CHAR_KEYSTROKE_EVENT, /* The multibyte char code is in .code,
- perhaps with modifiers applied.
- The others are the same as
- ASCII_KEYSTROKE_EVENT. */
+ MULTIBYTE_CHAR_KEYSTROKE_EVENT, /* The multibyte char code is
+ in .code, perhaps with
+ modifiers applied. The
+ others are the same as
+ ASCII_KEYSTROKE_EVENT,
+ except when ARG is a
+ string, which will be
+ decoded and the decoded
+ string's characters will be
+ used as .code
+ individually.
+
+ The string can have a
+ property `coding', which
+ should be a symbol
+ describing a coding system
+ to use to decode the string.
+
+ If it is nil, then the
+ locale coding system will
+ be used. If it is t, then
+ no decoding will take
+ place. */
NON_ASCII_KEYSTROKE_EVENT, /* .code is a number identifying the
function key. A code N represents
a key whose name is
@@ -119,7 +140,10 @@ enum event_kind
.timestamp gives a timestamp (in
milliseconds) for the event.
.arg may contain the number of
- lines to scroll. */
+ lines to scroll, or a list of
+ the form (NUMBER-OF-LINES . (X Y)) where
+ X and Y are the number of pixels
+ on each axis to scroll by. */
HORIZ_WHEEL_EVENT, /* A wheel event generated by a second
horizontal wheel that is present on some
mice. See WHEEL_EVENT. */
@@ -255,6 +279,8 @@ enum event_kind
#ifdef HAVE_XWIDGETS
/* events generated by xwidgets*/
, XWIDGET_EVENT
+ /* Event generated when WebKit asks us to display another widget. */
+ , XWIDGET_DISPLAY_EVENT
#endif
#ifdef USE_FILE_NOTIFY
@@ -262,6 +288,43 @@ enum event_kind
, FILE_NOTIFY_EVENT
#endif
+ /* Pre-edit text was changed. */
+ , PREEDIT_TEXT_EVENT
+
+ /* Either the mouse wheel has been released without it being
+ clicked, or the user has lifted his finger from a touchpad.
+
+ In the future, this may take into account other multi-touch
+ events generated from touchscreens and such. */
+ , TOUCH_END_EVENT
+
+ /* In a TOUCHSCREEN_UPDATE_EVENT, ARG is a list of elements of the
+ form (X Y ID), where X and Y are the coordinates of the
+ touchpoint relative to the top-left corner of the frame, and ID
+ is a unique number identifying the touchpoint.
+
+ In TOUCHSCREEN_BEGIN_EVENT and TOUCHSCREEN_END_EVENT, ARG is the
+ unique ID of the touchpoint, and X and Y are the frame-relative
+ positions of the touchpoint. */
+
+ , TOUCHSCREEN_UPDATE_EVENT
+ , TOUCHSCREEN_BEGIN_EVENT
+ , TOUCHSCREEN_END_EVENT
+
+ /* In a PINCH_EVENT, X and Y are the position of the pointer
+ relative to the top-left corner of the frame, and arg is a list
+ of (DX DY SCALE ANGLE), in which:
+
+ - DX and DY are the difference between the positions of the
+ fingers comprising the current gesture and the last such
+ gesture in the same sequence.
+ - SCALE is the division of the current distance between the
+ fingers and the distance at the start of the gesture.
+ - DELTA-ANGLE is the delta between the angle of the current
+ event and the last event in the same sequence, in degrees. A
+ positive delta represents a change clockwise, and a negative
+ delta represents a change counter-clockwise. */
+ , PINCH_EVENT
};
/* Bit width of an enum event_kind tag at the start of structs and unions. */
@@ -442,6 +505,8 @@ struct terminal
struct x_display_info *x; /* xterm.h */
struct w32_display_info *w32; /* w32term.h */
struct ns_display_info *ns; /* nsterm.h */
+ struct pgtk_display_info *pgtk; /* pgtkterm.h */
+ struct haiku_display_info *haiku; /* haikuterm.h */
} display_info;
@@ -515,7 +580,7 @@ struct terminal
BGCOLOR. */
void (*query_frame_background_color) (struct frame *f, Emacs_Color *bgcolor);
-#if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI)
+#if defined (HAVE_X_WINDOWS) || defined (HAVE_NTGUI) || defined (HAVE_PGTK)
/* On frame F, translate pixel colors to RGB values for the NCOLORS
colors in COLORS. Use cached information, if available. */
@@ -766,6 +831,13 @@ struct terminal
frames on the terminal when it calls this hook, so infinite
recursion is prevented. */
void (*delete_terminal_hook) (struct terminal *);
+
+ /* Called to determine whether a position is on the toolkit tool bar
+ or menu bar. May be NULL. It should accept five arguments
+ FRAME, X, Y, MENU_BAR_P, TOOL_BAR_P, and store true into
+ MENU_BAR_P if X and Y are in FRAME's toolkit menu bar, and true
+ into TOOL_BAR_P if X and Y are in FRAME's toolkit tool bar. */
+ void (*toolkit_position_hook) (struct frame *, int, int, bool *, bool *);
} GCALIGNED_STRUCT;
INLINE bool
@@ -830,6 +902,12 @@ extern struct terminal *terminal_list;
#elif defined (HAVE_NS)
#define TERMINAL_FONT_CACHE(t) \
(t->type == output_ns ? t->display_info.ns->name_list_element : Qnil)
+#elif defined (HAVE_PGTK)
+#define TERMINAL_FONT_CACHE(t) \
+ (t->type == output_pgtk ? t->display_info.pgtk->name_list_element : Qnil)
+#elif defined (HAVE_HAIKU)
+#define TERMINAL_FONT_CACHE(t) \
+ (t->type == output_haiku ? t->display_info.haiku->name_list_element : Qnil)
#endif
extern struct terminal *decode_live_terminal (Lisp_Object);