1 /* GDK - The GIMP Drawing Kit
2 * Copyright (C) 2009 Carlos Garnacho <carlosg@gnome.org>
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
20 #ifndef __GDK_DEVICE_PRIVATE_H__
21 #define __GDK_DEVICE_PRIVATE_H__
23 #include "gdkdevice.h"
24 #include "gdkdevicemanager.h"
25 #include "gdkevents.h"
29 #define GDK_DEVICE_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_DEVICE, GdkDeviceClass))
30 #define GDK_IS_DEVICE_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_DEVICE))
31 #define GDK_DEVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_DEVICE, GdkDeviceClass))
33 typedef struct _GdkDeviceClass GdkDeviceClass;
34 typedef struct _GdkDeviceKey GdkDeviceKey;
39 GdkModifierType modifiers;
44 GObject parent_instance;
47 GdkInputSource source;
52 GdkDeviceManager *manager;
54 /* Paired master for master,
55 * associated master for slaves
57 GdkDevice *associated;
63 struct _GdkDeviceClass
65 GObjectClass parent_class;
67 gboolean (* get_history) (GdkDevice *device,
71 GdkTimeCoord ***events,
74 void (* get_state) (GdkDevice *device,
77 GdkModifierType *mask);
79 void (* set_window_cursor) (GdkDevice *device,
83 void (* warp) (GdkDevice *device,
87 gboolean (* query_state) (GdkDevice *device,
89 GdkWindow **root_window,
90 GdkWindow **child_window,
95 GdkModifierType *mask);
96 GdkGrabStatus (* grab) (GdkDevice *device,
98 gboolean owner_events,
99 GdkEventMask event_mask,
100 GdkWindow *confine_to,
103 void (*ungrab) (GdkDevice *device,
106 GdkWindow * (* window_at_position) (GdkDevice *device,
109 GdkModifierType *mask,
110 gboolean get_toplevel);
111 void (* select_window_events) (GdkDevice *device,
113 GdkEventMask event_mask);
116 void _gdk_device_set_associated_device (GdkDevice *device,
117 GdkDevice *relative);
119 void _gdk_device_reset_axes (GdkDevice *device);
120 guint _gdk_device_add_axis (GdkDevice *device,
127 void _gdk_device_set_keys (GdkDevice *device,
130 gboolean _gdk_device_translate_window_coord (GdkDevice *device,
134 gdouble *axis_value);
136 gboolean _gdk_device_translate_screen_coord (GdkDevice *device,
142 gdouble *axis_value);
144 gboolean _gdk_device_translate_axis (GdkDevice *device,
147 gdouble *axis_value);
149 GdkTimeCoord ** _gdk_device_allocate_history (GdkDevice *device,
152 void _gdk_device_add_slave (GdkDevice *device,
154 void _gdk_device_remove_slave (GdkDevice *device,
156 gboolean _gdk_device_query_state (GdkDevice *device,
158 GdkWindow **root_window,
159 GdkWindow **child_window,
164 GdkModifierType *mask);
165 GdkWindow * _gdk_device_window_at_position (GdkDevice *device,
168 GdkModifierType *mask,
169 gboolean get_toplevel);
173 #endif /* __GDK_DEVICE_PRIVATE_H__ */