diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-05-14 00:27:23 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-05-14 00:27:23 +0000 |
commit | d65f9b298c518004aa1be501d599e0ba7862a4b4 (patch) | |
tree | 783257b8109aae538bb76211ca863df76b3b9f00 /gtk | |
parent | 78f68d7992b496b603356df8d13d9be76f5730a9 (diff) | |
parent | 5c9de08159b7ff526683e155de579d3d432ca17e (diff) | |
download | gtk+-d65f9b298c518004aa1be501d599e0ba7862a4b4.tar.gz |
Merge branch 'new-css-load-apis' into 'main'
Add new css provider load apis
See merge request GNOME/gtk!5966
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkcssprovider.c | 57 | ||||
-rw-r--r-- | gtk/gtkcssprovider.h | 10 | ||||
-rw-r--r-- | gtk/inspector/css-editor.c | 2 |
3 files changed, 64 insertions, 5 deletions
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c index e8e13f4ab1..0c733d9e68 100644 --- a/gtk/gtkcssprovider.c +++ b/gtk/gtkcssprovider.c @@ -1095,6 +1095,9 @@ gtk_css_provider_load_internal (GtkCssProvider *self, * Loads @data into @css_provider. * * This clears any previously loaded information. + * + * Deprecated: 4.12: Use [method@Gtk.CssProvider.load_from_string] + * or [method@Gtk.CssProvider.load_from_bytes] instead */ void gtk_css_provider_load_from_data (GtkCssProvider *css_provider, @@ -1111,11 +1114,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_ref (bytes); - gtk_css_provider_load_internal (css_provider, NULL, NULL, 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_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..ee1dc98d22 100644 --- a/gtk/gtkcssprovider.h +++ b/gtk/gtkcssprovider.h @@ -45,10 +45,18 @@ GtkCssProvider * gtk_css_provider_new (void); GDK_AVAILABLE_IN_ALL char * gtk_css_provider_to_string (GtkCssProvider *provider); -GDK_AVAILABLE_IN_ALL +GDK_DEPRECATED_IN_4_12_FOR(gtk_css_provider_load_from_string) 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); diff --git a/gtk/inspector/css-editor.c b/gtk/inspector/css-editor.c index d0e71c8d37..e8515a4bea 100644 --- a/gtk/inspector/css-editor.c +++ b/gtk/inspector/css-editor.c @@ -260,7 +260,7 @@ update_style (GtkInspectorCssEditor *ce) ce->priv->errors = NULL; text = get_current_text (ce->priv->text); - gtk_css_provider_load_from_data (ce->priv->provider, text, -1); + gtk_css_provider_load_from_string (ce->priv->provider, text); g_free (text); } |