quartz: re-introduce _gdk_quartz_display_list_devices

This commit is contained in:
Kristian Rietveld 2010-12-22 16:05:12 +01:00
parent 4c663f0474
commit b638515ae0
2 changed files with 69 additions and 2 deletions

View File

@ -44,6 +44,56 @@ _gdk_device_manager_new (GdkDisplay *display)
NULL);
}
static void
gdk_quartz_display_init_input (GdkDisplay *display)
{
GdkQuartzDisplay *display_quartz;
GdkDeviceManager *device_manager;
GList *list, *l;
display_quartz = GDK_QUARTZ_DISPLAY (display);
device_manager = gdk_display_get_device_manager (_gdk_display);
/* For backwards compabitility, just add floating devices that are
* not keyboards.
*/
list = gdk_device_manager_list_devices (device_manager,
GDK_DEVICE_TYPE_FLOATING);
for (l = list; l; l = l->next)
{
GdkDevice *device = l->data;
if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
continue;
display_quartz->input_devices = g_list_prepend (display_quartz->input_devices,
g_object_ref (l->data));
}
g_list_free (list);
/* Now set "core" pointer to the first master device that is a pointer. */
list = gdk_device_manager_list_devices (device_manager,
GDK_DEVICE_TYPE_MASTER);
for (l = list; l; l = l->next)
{
GdkDevice *device = list->data;
if (gdk_device_get_source (device) != GDK_SOURCE_MOUSE)
continue;
display->core_pointer = device;
break;
}
/* Add the core pointer to the devices list */
display_quartz->input_devices = g_list_prepend (display_quartz->input_devices,
g_object_ref (display->core_pointer));
g_list_free (list);
}
GdkDisplay *
_gdk_quartz_display_open (const gchar *display_name)
{
@ -64,7 +114,7 @@ _gdk_quartz_display_open (const gchar *display_name)
_gdk_quartz_events_init ();
_gdk_quartz_input_init ();
gdk_quartz_display_init_input (_gdk_display);
#if 0
/* FIXME: Remove the #if 0 when we have these functions */
@ -181,6 +231,14 @@ gdk_quartz_display_supports_composite (GdkDisplay *display)
return FALSE;
}
static GList *
_gdk_quartz_display_list_devices (GdkDisplay *display)
{
g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
return GDK_QUARTZ_DISPLAY (display)->input_devices;
}
gulong
_gdk_quartz_display_get_next_serial (GdkDisplay *display)
{
@ -199,15 +257,25 @@ _gdk_quartz_display_init (GdkQuartzDisplay *display)
static void
_gdk_quartz_display_dispose (GObject *object)
{
GdkQuartzDisplay *display_quartz = GDK_QUARTZ_DISPLAY (object);
_gdk_quartz_display_manager_remove_display (gdk_display_manager_get (),
GDK_DISPLAY_OBJECT (object));
g_list_foreach (display_quartz->input_devices,
(GFunc) g_object_run_dispose, NULL);
G_OBJECT_CLASS (_gdk_quartz_display_parent_class)->dispose (object);
}
static void
_gdk_quartz_display_finalize (GObject *object)
{
GdkQuartzDisplay *display_quartz = GDK_QUARTZ_DISPLAY (object);
g_list_foreach (display_quartz->input_devices, (GFunc) g_object_unref, NULL);
g_list_free (display_quartz->input_devices);
G_OBJECT_CLASS (_gdk_quartz_display_parent_class)->finalize (object);
}

View File

@ -129,7 +129,6 @@ GdkDragContext * _gdk_quartz_window_drag_begin (GdkWindow *window,
void _gdk_quartz_display_sync (GdkDisplay *display);
void _gdk_quartz_display_flush (GdkDisplay *display);
GList * _gdk_quartz_display_list_devices (GdkDisplay *display);
void _gdk_quartz_display_queue_events (GdkDisplay *display);
gboolean _gdk_quartz_display_has_pending (GdkDisplay *display);