]> Pileus Git - ~andy/gtk/commitdiff
wayland: Add call to get types available for the selection as atoms
authorRob Bradford <rob@linux.intel.com>
Fri, 13 Jan 2012 13:33:53 +0000 (13:33 +0000)
committerRob Bradford <rob@linux.intel.com>
Fri, 13 Jan 2012 16:50:47 +0000 (16:50 +0000)
gdk/wayland/gdkdevice-wayland.c
gdk/wayland/gdkwayland.h

index 246baca9faf32433818481f5bcbc903ff6dc9d8a..73601db49d0638aee27d93fc9c84e71aa3ed2d3a 100644 (file)
@@ -921,3 +921,38 @@ _gdk_wayland_device_manager_new (GdkDisplay *display)
                        "display", display,
                        NULL);
 }
+
+gint
+gdk_wayland_device_get_selection_type_atoms (GdkDevice  *gdk_device,
+                                             GdkAtom   **atoms_out)
+{
+  gint i;
+  GdkAtom *atoms;
+  GdkWaylandDevice *device;
+
+  g_return_val_if_fail (GDK_IS_DEVICE_CORE (gdk_device), 0);
+  g_return_val_if_fail (atoms_out != NULL, 0);
+
+  device = GDK_DEVICE_CORE (gdk_device)->device;
+
+  if (device->selection_offer->types->len == 0)
+    {
+      *atoms_out = NULL;
+      return 0;
+    }
+
+  atoms = g_new0 (GdkAtom, device->selection_offer->types->len);
+
+  /* Convert list of targets to atoms */
+  for (i = 0; i < device->selection_offer->types->len; i++)
+    {
+      atoms[i] = gdk_atom_intern (device->selection_offer->types->pdata[i],
+                                  FALSE);
+      GDK_NOTE (MISC,
+                g_message (G_STRLOC ": Adding atom for %s",
+                           (char *)device->selection_offer->types->pdata[i]));
+    }
+
+  *atoms_out = atoms;
+  return device->selection_offer->types->len;
+}
index c9e9f6e14d67a4d868c604653cbd797f2e3e2554..d4616cd12f0c6a3e98dbfc729e1dec43eac65d62 100644 (file)
@@ -33,6 +33,12 @@ G_BEGIN_DECLS
 
 GType      gdk_wayland_display_manager_get_type   (void);
 
+#if defined (GTK_COMPILATION) || defined (GDK_COMPILATION)
+#define gdk_wayland_device_get_selection_type_atoms gdk_wayland_device_get_selection_type_atoms_libgtk_only
+int
+gdk_wayland_device_get_selection_type_atoms (GdkDevice  *device,
+                                                         GdkAtom   **atoms_out);
+#endif
 G_END_DECLS
 
 #endif /* __GDK_WAYLAND_H__ */