[gtk+/xi2-playground: 7/15] GdkDeviceManagerXI2: Make focus events contain a GdkDevice.
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/xi2-playground: 7/15] GdkDeviceManagerXI2: Make focus events contain a GdkDevice.
- Date: Tue, 8 Jun 2010 17:42:29 +0000 (UTC)
commit a400516a501a00ebd90c7be871d7c3b2ef427618
Author: Carlos Garnacho <carlosg gnome org>
Date: Mon Jun 7 15:30:37 2010 +0200
GdkDeviceManagerXI2: Make focus events contain a GdkDevice.
gdk/x11/gdkdevicemanager-xi2.c | 26 +++++++++++++++++---------
1 files changed, 17 insertions(+), 9 deletions(-)
---
diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c
index 9d41df3..48d7c18 100644
--- a/gdk/x11/gdkdevicemanager-xi2.c
+++ b/gdk/x11/gdkdevicemanager-xi2.c
@@ -617,20 +617,24 @@ translate_keyboard_string (GdkEventKey *event)
static void
generate_focus_event (GdkWindow *window,
- gboolean in)
+ GdkDevice *device,
+ gboolean in)
{
- GdkEvent event;
+ GdkEvent *event;
- event.type = GDK_FOCUS_CHANGE;
- event.focus_change.window = window;
- event.focus_change.send_event = FALSE;
- event.focus_change.in = in;
+ event = gdk_event_new (GDK_FOCUS_CHANGE);
+ event->focus_change.window = g_object_ref (window);
+ event->focus_change.send_event = FALSE;
+ event->focus_change.in = in;
+ gdk_event_set_device (event, device);
- gdk_event_put (&event);
+ gdk_event_put (event);
+ gdk_event_free (event);
}
static void
handle_focus_change (GdkWindow *window,
+ GdkDevice *device,
gint detail,
gint mode,
gboolean in)
@@ -690,7 +694,7 @@ handle_focus_change (GdkWindow *window,
}
if (HAS_FOCUS (toplevel) != had_focus)
- generate_focus_event (window, (in) ? TRUE : FALSE);
+ generate_focus_event (window, device, (in) ? TRUE : FALSE);
}
static gdouble *
@@ -1074,8 +1078,12 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator,
case XI_FocusOut:
{
XIEnterEvent *xev = (XIEnterEvent *) ev;
+ GdkDevice *device;
+
+ device = g_hash_table_lookup (device_manager->id_table,
+ GINT_TO_POINTER (xev->deviceid));
- handle_focus_change (window, xev->detail, xev->mode,
+ handle_focus_change (window, device, xev->detail, xev->mode,
(ev->evtype == XI_FocusIn) ? TRUE : FALSE);
return_val = FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]