From 4e06aaeaa8de2f01e28f68f41c442b6dd66482db Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 28 Nov 2017 02:02:06 +0100 Subject: [PATCH] gdk: Add gdk_content_formats_new_for_gtype() Many places create formats for a single tpye, so make it easy for them to get this without having to create a builder first. --- docs/reference/gdk/gdk4-sections.txt | 1 + gdk/gdkcontentformats.c | 28 +++++++++++++++++++++++++--- gdk/gdkcontentformats.h | 2 ++ gdk/gdkcontentproviderimpl.c | 5 +---- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index 8deed84aac..ec1159476a 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -372,6 +372,7 @@ gdk_intern_mime_type GdkContentFormats gdk_content_formats_new +gdk_content_formats_new_for_gtype gdk_content_formats_ref gdk_content_formats_unref gdk_content_formats_print diff --git a/gdk/gdkcontentformats.c b/gdk/gdkcontentformats.c index 8369cdd6ee..5e7d5ea2f5 100644 --- a/gdk/gdkcontentformats.c +++ b/gdk/gdkcontentformats.c @@ -137,9 +137,9 @@ gdk_content_formats_new_take (GType * gtypes, * * Creates a new #GdkContentFormats from an array of mime types. * - * The mime types must be different or the behavior of the return value - * is undefined. If you cannot guarantee this, use #GdkContentFormatsBuilder - * instead. + * The mime types must be valid and different from each other or the + * behavior of the return value is undefined. If you cannot guarantee + * this, use #GdkContentFormatsBuilder instead. * * Returns: (transfer full): the new #GdkContentFormats. **/ @@ -161,6 +161,28 @@ gdk_content_formats_new (const char **mime_types, return gdk_content_formats_new_take (NULL, 0, (const char **) g_ptr_array_free (array, FALSE), n_mime_types); } +/** + * gdk_content_formats_new_for_gtype: + * @type: a $GType + * + * Creates a new #GdkContentFormats for a given #GType. + * + * Returns: a new #GdkContentFormats + **/ +GdkContentFormats * +gdk_content_formats_new_for_gtype (GType type) +{ + GType *data; + + g_return_val_if_fail (type != G_TYPE_INVALID, NULL); + + data = g_new (GType, 2); + data[0] = type; + data[1] = G_TYPE_INVALID; + + return gdk_content_formats_new_take (data, 1, NULL, 0); +} + /** * gdk_content_formats_ref: * @formats: a #GdkContentFormats diff --git a/gdk/gdkcontentformats.h b/gdk/gdkcontentformats.h index e265b6ab88..1e5f7147bb 100644 --- a/gdk/gdkcontentformats.h +++ b/gdk/gdkcontentformats.h @@ -39,6 +39,8 @@ GDK_AVAILABLE_IN_3_94 GdkContentFormats * gdk_content_formats_new (const char **mime_types, guint n_mime_types); GDK_AVAILABLE_IN_3_94 +GdkContentFormats * gdk_content_formats_new_for_gtype (GType type); +GDK_AVAILABLE_IN_3_94 GdkContentFormats * gdk_content_formats_ref (GdkContentFormats *formats); GDK_AVAILABLE_IN_3_94 void gdk_content_formats_unref (GdkContentFormats *formats); diff --git a/gdk/gdkcontentproviderimpl.c b/gdk/gdkcontentproviderimpl.c index 77e4d8d3e0..adb3cc4d89 100644 --- a/gdk/gdkcontentproviderimpl.c +++ b/gdk/gdkcontentproviderimpl.c @@ -64,11 +64,8 @@ static GdkContentFormats * gdk_content_provider_value_ref_formats (GdkContentProvider *provider) { GdkContentProviderValue *content = GDK_CONTENT_PROVIDER_VALUE (provider); - GdkContentFormatsBuilder *builder; - builder = gdk_content_formats_builder_new (); - gdk_content_formats_builder_add_gtype (builder, G_VALUE_TYPE (&content->value)); - return gdk_content_formats_builder_free (builder); + return gdk_content_formats_new_for_gtype (G_VALUE_TYPE (&content->value)); } static gboolean