diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-05-13 19:37:51 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-05-13 19:46:29 -0400 |
commit | a1d9cb8ad66bdf0e9301a6c69ca9762f2497b288 (patch) | |
tree | c71f7f495db4ec628ed5a114b9da3fc9971feab7 | |
parent | 78f68d7992b496b603356df8d13d9be76f5730a9 (diff) | |
download | gtk+-a1d9cb8ad66bdf0e9301a6c69ca9762f2497b288.tar.gz |
Add new css provider load apis
gtk_css_provider_load_from_data has turned out
to be problematic for language bindings. Add two
new variants, from_string and from_bytes, to
replace it.
-rw-r--r-- | gtk/gtkcssprovider.c | 54 | ||||
-rw-r--r-- | gtk/gtkcssprovider.h | 8 |
2 files changed, 59 insertions, 3 deletions
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index e8e13f4ab1..280e349706 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -1111,11 +1111,59 @@ gtk_css_provider_load_from_data (GtkCssProvider *css_provider, bytes = g_bytes_new_static (data, length); - gtk_css_provider_reset (css_provider); + gtk_css_provider_load_from_bytes (css_provider, bytes); + + g_bytes_unref (bytes); +} + +/** + * gtk_css_provider_load_from_string: + * @css_provider: a `GtkCssProvider` + * @string: the CSS to load + * + * Loads @string into @css_provider. + * + * This clears any previously loaded information. + * + * Since: 4.12 + */ +void +gtk_css_provider_load_from_string (GtkCssProvider *css_provider, + const char *string) +{ + GBytes *bytes; + + g_return_if_fail (GTK_IS_CSS_PROVIDER (css_provider)); + g_return_if_fail (string != NULL); + + bytes = g_bytes_new_static (string, strlen (string)); + + gtk_css_provider_load_from_bytes (css_provider, bytes); - g_bytes_ref (bytes); - gtk_css_provider_load_internal (css_provider, NULL, NULL, bytes); g_bytes_unref (bytes); +} + +/** + * gtk_css_provider_load_from_bytes: + * @css_provider: a `GtkCssProvider` + * @data: `GBytes` containing the data to load + * + * Loads @data into @css_provider. + * + * This clears any previously loaded information. + * + * Since: 4.12 + */ +void +gtk_css_provider_load_from_bytes (GtkCssProvider *css_provider, + GBytes *data) +{ + g_return_if_fail (GTK_IS_CSS_PROVIDER (css_provider)); + g_return_if_fail (data != NULL); + + gtk_css_provider_reset (css_provider); + + gtk_css_provider_load_internal (css_provider, NULL, NULL, g_bytes_ref (data)); gtk_style_provider_changed (GTK_STYLE_PROVIDER (css_provider)); } diff --git a/gtk/gtkcssprovider.h b/gtk/gtkcssprovider.h index 2b0085c1e3..f6e4939047 100644 --- a/gtk/gtkcssprovider.h +++ b/gtk/gtkcssprovider.h @@ -49,6 +49,14 @@ GDK_AVAILABLE_IN_ALL void gtk_css_provider_load_from_data (GtkCssProvider *css_provider, const char *data, gssize length); +GDK_AVAILABLE_IN_4_12 +void gtk_css_provider_load_from_string (GtkCssProvider *css_provider, + const char *string); + +GDK_AVAILABLE_IN_4_12 +void gtk_css_provider_load_from_bytes (GtkCssProvider *css_provider, + GBytes *data); + GDK_AVAILABLE_IN_ALL void gtk_css_provider_load_from_file (GtkCssProvider *css_provider, GFile *file); |