clipboard: Implement gdk_clipboard_read()

This commit is contained in:
Benjamin Otte
2017-11-20 02:06:21 +01:00
parent 13fb3fd4a0
commit c91a38b013
4 changed files with 44 additions and 2 deletions

View File

@@ -113,6 +113,14 @@ gdk_clipboard_finalize (GObject *object)
G_OBJECT_CLASS (gdk_clipboard_parent_class)->finalize (object);
}
static GInputStream *
gdk_clipboard_real_read (GdkClipboard *clipboard,
const char *mime_type)
{
/* whoop whooop */
return g_memory_input_stream_new ();
}
static void
gdk_clipboard_class_init (GdkClipboardClass *class)
{
@@ -122,6 +130,8 @@ gdk_clipboard_class_init (GdkClipboardClass *class)
object_class->set_property = gdk_clipboard_set_property;
object_class->finalize = gdk_clipboard_finalize;
class->read = gdk_clipboard_real_read;
/**
* GdkClipboard:display:
*
@@ -227,6 +237,19 @@ gdk_clipboard_get_formats (GdkClipboard *clipboard)
return priv->formats;
}
GInputStream *
gdk_clipboard_read (GdkClipboard *clipboard,
const char *mime_type)
{
GdkClipboardPrivate *priv = gdk_clipboard_get_instance_private (clipboard);
g_return_val_if_fail (GDK_IS_CLIPBOARD (clipboard), NULL);
g_return_val_if_fail (mime_type != NULL, NULL);
g_return_val_if_fail (gdk_content_formats_contain_mime_type (priv->formats, mime_type), NULL);
return GDK_CLIPBOARD_GET_CLASS (clipboard)->read (clipboard, mime_type);
}
GdkClipboard *
gdk_clipboard_new (GdkDisplay *display)
{

View File

@@ -42,6 +42,9 @@ GdkDisplay * gdk_clipboard_get_display (GdkClipboard *
GDK_AVAILABLE_IN_3_94
GdkContentFormats * gdk_clipboard_get_formats (GdkClipboard *clipboard);
GDK_AVAILABLE_IN_3_94
GInputStream * gdk_clipboard_read (GdkClipboard *clipboard,
const char *mime_type);
G_END_DECLS

View File

@@ -38,9 +38,11 @@ struct _GdkClipboardClass
GObjectClass parent_class;
/* signals */
void (* changed) (GdkClipboard *clipboard);
void (* changed) (GdkClipboard *clipboard);
/* vfuncs */
GInputStream * (* read) (GdkClipboard *clipboard,
const char *mime_type);
};
GdkClipboard * gdk_clipboard_new (GdkDisplay *display);

View File

@@ -180,13 +180,27 @@ gdk_x11_clipboard_finalize (GObject *object)
G_OBJECT_CLASS (gdk_x11_clipboard_parent_class)->finalize (object);
}
static GInputStream *
gdk_x11_clipboard_read (GdkClipboard *clipboard,
const char *mime_type)
{
GdkX11Clipboard *cb = GDK_X11_CLIPBOARD (clipboard);
return gdk_x11_selection_input_stream_new (gdk_clipboard_get_display (GDK_CLIPBOARD (cb)),
cb->selection,
mime_type,
cb->timestamp);
}
static void
gdk_x11_clipboard_class_init (GdkX11ClipboardClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
//GdkClipboardClass *clipboard_class = GDK_CLIPBOARD_CLASS (class);
GdkClipboardClass *clipboard_class = GDK_CLIPBOARD_CLASS (class);
object_class->finalize = gdk_x11_clipboard_finalize;
clipboard_class->read = gdk_x11_clipboard_read;
}
static void