summaryrefslogtreecommitdiff
path: root/gdk/gdkinput.h
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2000-07-03 19:00:23 +0000
committerOwen Taylor <otaylor@src.gnome.org>2000-07-03 19:00:23 +0000
commit01212ce1709bc85d03576969c45397cf20c3dcc1 (patch)
tree15c04ebfb74db73f1e1030ef42adf6b0eb7dea96 /gdk/gdkinput.h
parent0c2240ba379ceb5f3773171cc80a8c640f34e839 (diff)
downloadgtk+-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.h110
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 */