]> Pileus Git - ~andy/gtk/blob - gdk/broadway/gdkdevicemanager-broadway.c
[broadway] Remove unnecessary backend-specific function
[~andy/gtk] / gdk / broadway / gdkdevicemanager-broadway.c
1 /* GDK - The GIMP Drawing Kit
2  * Copyright (C) 2009 Carlos Garnacho <carlosg@gnome.org>
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, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20 #include "config.h"
21
22 #include "gdkdevicemanager-broadway.h"
23
24 #include "gdktypes.h"
25 #include "gdkdevicemanager.h"
26 #include "gdkdevice-broadway.h"
27 #include "gdkkeysyms.h"
28 #include "gdkprivate-broadway.h"
29
30 #define HAS_FOCUS(toplevel)                           \
31   ((toplevel)->has_focus || (toplevel)->has_pointer_focus)
32
33 static void    gdk_device_manager_core_finalize    (GObject *object);
34 static void    gdk_device_manager_core_constructed (GObject *object);
35
36 static GList * gdk_device_manager_core_list_devices (GdkDeviceManager *device_manager,
37                                                      GdkDeviceType     type);
38 static GdkDevice * gdk_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager);
39
40 G_DEFINE_TYPE (GdkDeviceManagerCore, gdk_device_manager_core, GDK_TYPE_DEVICE_MANAGER)
41
42 static void
43 gdk_device_manager_core_class_init (GdkDeviceManagerCoreClass *klass)
44 {
45   GdkDeviceManagerClass *device_manager_class = GDK_DEVICE_MANAGER_CLASS (klass);
46   GObjectClass *object_class = G_OBJECT_CLASS (klass);
47
48   object_class->finalize = gdk_device_manager_core_finalize;
49   object_class->constructed = gdk_device_manager_core_constructed;
50   device_manager_class->list_devices = gdk_device_manager_core_list_devices;
51   device_manager_class->get_client_pointer = gdk_device_manager_core_get_client_pointer;
52 }
53
54 static GdkDevice *
55 create_core_pointer (GdkDeviceManager *device_manager,
56                      GdkDisplay       *display)
57 {
58   return g_object_new (GDK_TYPE_DEVICE_CORE,
59                        "name", "Core Pointer",
60                        "type", GDK_DEVICE_TYPE_MASTER,
61                        "input-source", GDK_SOURCE_MOUSE,
62                        "input-mode", GDK_MODE_SCREEN,
63                        "has-cursor", TRUE,
64                        "display", display,
65                        "device-manager", device_manager,
66                        NULL);
67 }
68
69 static GdkDevice *
70 create_core_keyboard (GdkDeviceManager *device_manager,
71                       GdkDisplay       *display)
72 {
73   return g_object_new (GDK_TYPE_DEVICE_CORE,
74                        "name", "Core Keyboard",
75                        "type", GDK_DEVICE_TYPE_MASTER,
76                        "input-source", GDK_SOURCE_KEYBOARD,
77                        "input-mode", GDK_MODE_SCREEN,
78                        "has-cursor", FALSE,
79                        "display", display,
80                        "device-manager", device_manager,
81                        NULL);
82 }
83
84 static void
85 gdk_device_manager_core_init (GdkDeviceManagerCore *device_manager)
86 {
87 }
88
89 static void
90 gdk_device_manager_core_finalize (GObject *object)
91 {
92   GdkDeviceManagerCore *device_manager_core;
93
94   device_manager_core = GDK_DEVICE_MANAGER_CORE (object);
95
96   g_object_unref (device_manager_core->core_pointer);
97   g_object_unref (device_manager_core->core_keyboard);
98
99   G_OBJECT_CLASS (gdk_device_manager_core_parent_class)->finalize (object);
100 }
101
102 static void
103 gdk_device_manager_core_constructed (GObject *object)
104 {
105   GdkDeviceManagerCore *device_manager;
106   GdkDisplay *display;
107
108   device_manager = GDK_DEVICE_MANAGER_CORE (object);
109   display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (object));
110   device_manager->core_pointer = create_core_pointer (GDK_DEVICE_MANAGER (device_manager), display);
111   device_manager->core_keyboard = create_core_keyboard (GDK_DEVICE_MANAGER (device_manager), display);
112
113   _gdk_device_set_associated_device (device_manager->core_pointer, device_manager->core_keyboard);
114   _gdk_device_set_associated_device (device_manager->core_keyboard, device_manager->core_pointer);
115 }
116
117
118 static GList *
119 gdk_device_manager_core_list_devices (GdkDeviceManager *device_manager,
120                                       GdkDeviceType     type)
121 {
122   GdkDeviceManagerCore *device_manager_core;
123   GList *devices = NULL;
124
125   if (type == GDK_DEVICE_TYPE_MASTER)
126     {
127       device_manager_core = (GdkDeviceManagerCore *) device_manager;
128       devices = g_list_prepend (devices, device_manager_core->core_keyboard);
129       devices = g_list_prepend (devices, device_manager_core->core_pointer);
130     }
131
132   return devices;
133 }
134
135 static GdkDevice *
136 gdk_device_manager_core_get_client_pointer (GdkDeviceManager *device_manager)
137 {
138   GdkDeviceManagerCore *device_manager_core;
139
140   device_manager_core = (GdkDeviceManagerCore *) device_manager;
141   return device_manager_core->core_pointer;
142 }
143
144 GdkDeviceManager *
145 _gdk_device_manager_new (GdkDisplay *display)
146 {
147   return g_object_new (GDK_TYPE_DEVICE_MANAGER_CORE,
148                        "display", display,
149                        NULL);
150 }