diff options
author | Owen Taylor <otaylor@redhat.com> | 2000-07-03 19:00:23 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2000-07-03 19:00:23 +0000 |
commit | 01212ce1709bc85d03576969c45397cf20c3dcc1 (patch) | |
tree | 15c04ebfb74db73f1e1030ef42adf6b0eb7dea96 /gdk/gdkinput.h | |
parent | 0c2240ba379ceb5f3773171cc80a8c640f34e839 (diff) | |
download | gtk+-01212ce1709bc85d03576969c45397cf20c3dcc1.tar.gz |
Ignore calls with <= width or height.
Mon Jul 3 14:24:16 2000 Owen Taylor <otaylor@redhat.com>
* gtk/gtkwidget.c (gtk_widget_draw): Ignore calls with
<= width or height.
* gtk/gtktable.c (gtk_table_attach): Fix missed merge
from 1.2 for parent/child states.
* gdk/gdkgc.c (gdk_gc_set_rgb_fg/bg_color): Fix a couple
of typos.
* gdk/gdkevents.[ch]: Remove press/xtilt/ytilt fields of
event structures, replace with a generic axes field. Replace
deviceid/source with GdkDevice *device.
* gdk/gdkevents.[ch] (gdk_event_get_axis): Add function
to extract particular axis use value from event. (Also
can be used for normal X/Y.)
* gdk/gdkinput.h gdk/x11/gdkinput*: Major revision;
allow for arbitrary number of axes, namespace everything
as gdk_device_*. Replace guint32 deviceid with GdkDevice *
everywhere.
* gdk/x11/{gdkmain-x11.c,gdkevent-x11.c,gdkinput*}:
Get rid of the gdk_input_vtable setup if favor of simply
defining the functions in gdkinput-none/gxi/xfree.c in
a similar fashion to the way that the port structure is
done.
* gtk/gtkdnd.c: Fix fields of synthesized button press event
for new event structures.
* gtk/gtkinputdialog.c gtk/testinput.c: Revise to match
new device interfaces.
Diffstat (limited to 'gdk/gdkinput.h')
-rw-r--r-- | gdk/gdkinput.h | 110 |
1 files changed, 68 insertions, 42 deletions
diff --git a/gdk/gdkinput.h b/gdk/gdkinput.h index 35550b2655..35c915f72c 100644 --- a/gdk/gdkinput.h +++ b/gdk/gdkinput.h @@ -8,7 +8,8 @@ extern "C" { #endif /* __cplusplus */ typedef struct _GdkDeviceKey GdkDeviceKey; -typedef struct _GdkDeviceInfo GdkDeviceInfo; +typedef struct _GdkDeviceAxis GdkDeviceAxis; +typedef struct _GdkDevice GdkDevice; typedef struct _GdkTimeCoord GdkTimeCoord; typedef enum @@ -41,66 +42,91 @@ typedef enum GDK_AXIS_PRESSURE, GDK_AXIS_XTILT, GDK_AXIS_YTILT, + GDK_AXIS_WHEEL, GDK_AXIS_LAST } GdkAxisUse; -struct _GdkDeviceInfo +struct _GdkDeviceKey +{ + guint keyval; + GdkModifierType modifiers; +}; + +struct _GdkDeviceAxis +{ + GdkAxisUse use; + gdouble min; + gdouble max; +}; + +struct _GdkDevice { - guint32 deviceid; + /* All fields are read-only */ + gchar *name; GdkInputSource source; GdkInputMode mode; - gint has_cursor; /* TRUE if the X pointer follows device motion */ + gboolean has_cursor; /* TRUE if the X pointer follows device motion */ + gint num_axes; - GdkAxisUse *axes; /* Specifies use for each axis */ + GdkDeviceAxis *axes; + gint num_keys; GdkDeviceKey *keys; }; -struct _GdkDeviceKey -{ - guint keyval; - GdkModifierType modifiers; -}; +/* We don't allocate each coordinate this big, but we use it to + * be ANSI compliant and avoid accessing past the defined limits. + */ +#define GDK_MAX_TIMECOORD_AXES 128 struct _GdkTimeCoord { guint32 time; - gdouble x; - gdouble y; - gdouble pressure; - gdouble xtilt; - gdouble ytilt; + gdouble axes[GDK_MAX_TIMECOORD_AXES]; }; -GList * gdk_input_list_devices (void); -void gdk_input_set_extension_events (GdkWindow *window, - gint mask, - GdkExtensionMode mode); -void gdk_input_set_source (guint32 deviceid, - GdkInputSource source); -gboolean gdk_input_set_mode (guint32 deviceid, - GdkInputMode mode); -void gdk_input_set_axes (guint32 deviceid, - GdkAxisUse *axes); -void gdk_input_set_key (guint32 deviceid, - guint index, - guint keyval, - GdkModifierType modifiers); -void gdk_input_window_get_pointer (GdkWindow *window, - guint32 deviceid, - gdouble *x, - gdouble *y, - gdouble *pressure, - gdouble *xtilt, - gdouble *ytilt, - GdkModifierType *mask); -GdkTimeCoord *gdk_input_motion_events (GdkWindow *window, - guint32 deviceid, - guint32 start, - guint32 stop, - gint *nevents_return); +/* Returns a list of GdkDevice * */ +GList * gdk_devices_list (void); + +/* Functions to configure a device */ +void gdk_device_set_source (GdkDevice *device, + GdkInputSource source); + +gboolean gdk_device_set_mode (GdkDevice *device, + GdkInputMode mode); + +void gdk_device_set_key (GdkDevice *device, + guint index, + guint keyval, + GdkModifierType modifiers); + +void gdk_device_set_axis_use (GdkDevice *device, + guint index, + GdkAxisUse use); +void gdk_device_get_state (GdkDevice *device, + GdkWindow *window, + gdouble *axes, + GdkModifierType *mask); +gboolean gdk_device_get_history (GdkDevice *device, + GdkWindow *window, + guint32 start, + guint32 stop, + GdkTimeCoord ***events, + gint *n_events); +void gdk_device_free_history (GdkTimeCoord **events, + gint n_events); +gboolean gdk_device_get_axis (GdkDevice *device, + gdouble *axes, + GdkAxisUse use, + gdouble *value); + +void gdk_input_set_extension_events (GdkWindow *window, + gint mask, + GdkExtensionMode mode); +extern GdkDevice *gdk_core_pointer; + #ifdef __cplusplus } #endif /* __cplusplus */ |