From c7f39eb07ecaba5cb0b9538be8a7d64e5b862f57 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 3 Jan 2011 12:11:41 -0500 Subject: [PATCH] add gtk_selection_data_get_data_with_length API which can be bound * gtk_selection_data_get_data can't be bound because we need to know the length of data inorder to marshal it https://bugzilla.gnome.org/show_bug.cgi?id=635299 --- docs/reference/gtk/gtk3-sections.txt | 1 + gtk/gtk.symbols | 1 + gtk/gtkselection.c | 23 +++++++++++++++++++++++ gtk/gtkselection.h | 4 ++++ 4 files changed, 29 insertions(+) diff --git a/docs/reference/gtk/gtk3-sections.txt b/docs/reference/gtk/gtk3-sections.txt index 51d5f634e7..37f7c281e4 100644 --- a/docs/reference/gtk/gtk3-sections.txt +++ b/docs/reference/gtk/gtk3-sections.txt @@ -5824,6 +5824,7 @@ gtk_selection_data_targets_include_rich_text gtk_selection_data_get_selection gtk_selection_data_get_data gtk_selection_data_get_length +gtk_selection_data_get_data_with_length gtk_selection_data_get_data_type gtk_selection_data_get_display gtk_selection_data_get_format diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index 2dbb2fffdb..e5c5c75b9e 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -2292,6 +2292,7 @@ gtk_selection_data_get_data_type gtk_selection_data_get_display gtk_selection_data_get_format gtk_selection_data_get_length +gtk_selection_data_get_data_with_length gtk_selection_data_get_pixbuf gtk_selection_data_get_selection gtk_selection_data_get_target diff --git a/gtk/gtkselection.c b/gtk/gtkselection.c index 5ee7b2541d..06aa14678a 100644 --- a/gtk/gtkselection.c +++ b/gtk/gtkselection.c @@ -1222,6 +1222,29 @@ gtk_selection_data_get_length (const GtkSelectionData *selection_data) return selection_data->length; } +/** + * gtk_selection_data_get_data_with_length: + * @selection_data: a pointer to a #GtkSelectionData structure + * @length: return location for length of the data segment + * + * Retrieves the raw data of the selection along with its length. + * + * Returns: (array length=length): the raw data of the selection + * + * Rename to: gtk_selection_data_get_data + * Since: 3.0 + */ +const guchar* +gtk_selection_data_get_data_with_length (const GtkSelectionData *selection_data, + gint *length) +{ + g_return_val_if_fail (selection_data != NULL, NULL); + + *length = selection_data->length; + + return selection_data->data; +} + /** * gtk_selection_data_get_display: * @selection_data: a pointer to a #GtkSelectionData structure. diff --git a/gtk/gtkselection.h b/gtk/gtkselection.h index 761d2b288a..6b409bb8a0 100644 --- a/gtk/gtkselection.h +++ b/gtk/gtkselection.h @@ -133,6 +133,10 @@ GdkAtom gtk_selection_data_get_data_type (const GtkSelectionData *selectio gint gtk_selection_data_get_format (const GtkSelectionData *selection_data); const guchar *gtk_selection_data_get_data (const GtkSelectionData *selection_data); gint gtk_selection_data_get_length (const GtkSelectionData *selection_data); +const guchar *gtk_selection_data_get_data_with_length + (const GtkSelectionData *selection_data, + gint *length); + GdkDisplay *gtk_selection_data_get_display (const GtkSelectionData *selection_data); void gtk_selection_data_set (GtkSelectionData *selection_data,