summaryrefslogtreecommitdiff
path: root/gdk/x11/gdkdevicemanager-xi2.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdk/x11/gdkdevicemanager-xi2.c')
-rw-r--r--gdk/x11/gdkdevicemanager-xi2.c92
1 files changed, 89 insertions, 3 deletions
diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c
index 90fcd9123b..83ab51c6fe 100644
--- a/gdk/x11/gdkdevicemanager-xi2.c
+++ b/gdk/x11/gdkdevicemanager-xi2.c
@@ -22,19 +22,48 @@
#include "gdkx11devicemanager-xi2.h"
#include "gdkx11device-xi2.h"
-#include "gdkkeysyms.h"
+#include "gdkdevicemanagerprivate.h"
#include "gdkdeviceprivate.h"
#include "gdkdisplayprivate.h"
#include "gdkeventtranslator.h"
#include "gdkprivate-x11.h"
+#include "gdkintl.h"
+#include "gdkkeysyms.h"
#include <string.h>
+struct _GdkX11DeviceManagerXI2
+{
+ GdkDeviceManager parent_object;
+
+ GHashTable *id_table;
+
+ GList *master_devices;
+ GList *slave_devices;
+
+ GdkDevice *client_pointer;
+
+ gint opcode;
+};
+
+struct _GdkX11DeviceManagerXI2Class
+{
+ GdkDeviceManagerClass parent_class;
+};
+
#define HAS_FOCUS(toplevel) ((toplevel)->has_focus || (toplevel)->has_pointer_focus)
-static void gdk_x11_device_manager_xi2_constructed (GObject *object);
-static void gdk_x11_device_manager_xi2_dispose (GObject *object);
+static void gdk_x11_device_manager_xi2_constructed (GObject *object);
+static void gdk_x11_device_manager_xi2_dispose (GObject *object);
+static void gdk_x11_device_manager_xi2_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gdk_x11_device_manager_xi2_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
static GList * gdk_x11_device_manager_xi2_list_devices (GdkDeviceManager *device_manager,
GdkDeviceType type);
@@ -57,6 +86,11 @@ G_DEFINE_TYPE_WITH_CODE (GdkX11DeviceManagerXI2, gdk_x11_device_manager_xi2, GDK
gdk_x11_device_manager_xi2_event_translator_init))
+enum {
+ PROP_0,
+ PROP_OPCODE
+};
+
static void
gdk_x11_device_manager_xi2_class_init (GdkX11DeviceManagerXI2Class *klass)
{
@@ -65,9 +99,19 @@ gdk_x11_device_manager_xi2_class_init (GdkX11DeviceManagerXI2Class *klass)
object_class->constructed = gdk_x11_device_manager_xi2_constructed;
object_class->dispose = gdk_x11_device_manager_xi2_dispose;
+ object_class->set_property = gdk_x11_device_manager_xi2_set_property;
+ object_class->get_property = gdk_x11_device_manager_xi2_get_property;
device_manager_class->list_devices = gdk_x11_device_manager_xi2_list_devices;
device_manager_class->get_client_pointer = gdk_x11_device_manager_xi2_get_client_pointer;
+
+ g_object_class_install_property (object_class,
+ PROP_OPCODE,
+ g_param_spec_int ("opcode",
+ P_("Opcode"),
+ P_("Opcode for XInput2 requests"),
+ 0, G_MAXINT, 0,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
}
static void
@@ -492,6 +536,48 @@ gdk_x11_device_manager_xi2_get_client_pointer (GdkDeviceManager *device_manager)
}
static void
+gdk_x11_device_manager_xi2_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GdkX11DeviceManagerXI2 *device_manager;
+
+ device_manager = GDK_X11_DEVICE_MANAGER_XI2 (object);
+
+ switch (prop_id)
+ {
+ case PROP_OPCODE:
+ device_manager->opcode = g_value_get_int (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gdk_x11_device_manager_xi2_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GdkX11DeviceManagerXI2 *device_manager;
+
+ device_manager = GDK_X11_DEVICE_MANAGER_XI2 (object);
+
+ switch (prop_id)
+ {
+ case PROP_OPCODE:
+ g_value_set_int (value, device_manager->opcode);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
gdk_x11_device_manager_xi2_event_translator_init (GdkEventTranslatorIface *iface)
{
iface->translate_event = gdk_x11_device_manager_xi2_translate_event;