summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-05-14 00:27:23 +0000
committerMatthias Clasen <mclasen@redhat.com>2023-05-14 00:27:23 +0000
commitd65f9b298c518004aa1be501d599e0ba7862a4b4 (patch)
tree783257b8109aae538bb76211ca863df76b3b9f00 /gtk
parent78f68d7992b496b603356df8d13d9be76f5730a9 (diff)
parent5c9de08159b7ff526683e155de579d3d432ca17e (diff)
downloadgtk+-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.c57
-rw-r--r--gtk/gtkcssprovider.h10
-rw-r--r--gtk/inspector/css-editor.c2
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);
}