1 /* GDK - The GIMP Drawing Kit
2  * Copyright (C) 2015 Red Hat
3  *
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.
8  *
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.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  *
17  * Author: Carlos Garnacho <carlosg@gnome.org>
18  */
19 
20 #ifndef __GDK_SEAT_PRIVATE_H__
21 #define __GDK_SEAT_PRIVATE_H__
22 
23 typedef struct _GdkSeatClass GdkSeatClass;
24 
25 #include "gdkseat.h"
26 #include "gdkdeviceprivate.h"
27 
28 typedef void (* GdkSeatGrabPrepareFunc) (GdkSeat   *seat,
29                                          GdkSurface *surface,
30                                          gpointer   user_data);
31 
32 #define GDK_SEAT_CLASS(c)     (G_TYPE_CHECK_CLASS_CAST ((c), GDK_TYPE_SEAT, GdkSeatClass))
33 #define GDK_IS_SEAT_CLASS(c)  (G_TYPE_CHECK_CLASS_TYPE ((c), GDK_TYPE_SEAT))
34 #define GDK_SEAT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GDK_TYPE_SEAT, GdkSeatClass))
35 
36 struct _GdkSeatClass
37 {
38   GObjectClass parent_class;
39 
40   void (* device_added)   (GdkSeat   *seat,
41                            GdkDevice *device);
42   void (* device_removed) (GdkSeat   *seat,
43                            GdkDevice *device);
44   void (* device_changed) (GdkSeat   *seat,
45                            GdkDevice *device);
46 
47   GdkSeatCapabilities (*get_capabilities) (GdkSeat *seat);
48 
49   GdkGrabStatus (* grab)   (GdkSeat                *seat,
50                             GdkSurface              *surface,
51                             GdkSeatCapabilities     capabilities,
52                             gboolean                owner_events,
53                             GdkCursor              *cursor,
54                             GdkEvent               *event,
55                             GdkSeatGrabPrepareFunc  prepare_func,
56                             gpointer                prepare_func_data);
57   void          (* ungrab) (GdkSeat                *seat);
58 
59   GdkDevice * (* get_logical_device) (GdkSeat             *seat,
60                                       GdkSeatCapabilities  capability);
61   GList *     (* get_devices) (GdkSeat             *seat,
62                                GdkSeatCapabilities  capabilities);
63 
64   GList * (* get_tools) (GdkSeat *seat);
65 };
66 
67 void gdk_seat_device_added   (GdkSeat   *seat,
68                               GdkDevice *device);
69 void gdk_seat_device_removed (GdkSeat   *seat,
70                               GdkDevice *device);
71 
72 void gdk_seat_tool_added     (GdkSeat       *seat,
73                               GdkDeviceTool *tool);
74 void gdk_seat_tool_removed   (GdkSeat       *seat,
75                               GdkDeviceTool *tool);
76 
77 GdkDeviceTool *
78      gdk_seat_get_tool       (GdkSeat          *seat,
79                               guint64           serial,
80                               guint64           hw_id,
81                               GdkDeviceToolType type);
82 
83 GdkGrabStatus  gdk_seat_grab             (GdkSeat                *seat,
84                                           GdkSurface              *surface,
85                                           GdkSeatCapabilities     capabilities,
86                                           gboolean                owner_events,
87                                           GdkCursor              *cursor,
88                                           GdkEvent               *event,
89                                           GdkSeatGrabPrepareFunc  prepare_func,
90                                           gpointer                prepare_func_data);
91 void           gdk_seat_ungrab           (GdkSeat                *seat);
92 
93 
94 #endif /* __GDK_SEAT_PRIVATE_H__ */
95