summaryrefslogtreecommitdiff
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
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
-rw-r--r--demos/gtk-demo/css_blendmodes.c2
-rw-r--r--demos/gtk-demo/dnd.c4
-rw-r--r--demos/gtk-demo/fishbowl.c2
-rw-r--r--demos/gtk-demo/gltransition.c2
-rw-r--r--demos/gtk-demo/listview_ucd.c2
-rw-r--r--demos/gtk-demo/peg_solitaire.c2
-rw-r--r--demos/node-editor/node-editor-application.c2
-rw-r--r--gtk/gtkcssprovider.c57
-rw-r--r--gtk/gtkcssprovider.h10
-rw-r--r--gtk/inspector/css-editor.c2
-rw-r--r--testsuite/css/api.c7
-rw-r--r--testsuite/gtk/cssprovider.c2
12 files changed, 78 insertions, 16 deletions
diff --git a/demos/gtk-demo/css_blendmodes.c b/demos/gtk-demo/css_blendmodes.c
index 81884c2234..87c7a8ad68 100644
--- a/demos/gtk-demo/css_blendmodes.c
+++ b/demos/gtk-demo/css_blendmodes.c
@@ -50,7 +50,7 @@ update_css_for_blend_mode (GtkCssProvider *provider,
blend_mode,
blend_mode);
- gtk_css_provider_load_from_data (provider, css, -1);
+ gtk_css_provider_load_from_string (provider, css);
g_bytes_unref (bytes);
g_free (css);
diff --git a/demos/gtk-demo/dnd.c b/demos/gtk-demo/dnd.c
index 2373a71f12..16c4091c0c 100644
--- a/demos/gtk-demo/dnd.c
+++ b/demos/gtk-demo/dnd.c
@@ -70,7 +70,7 @@ set_color (CanvasItem *item,
css = g_strdup_printf ("#%s { background: %s; }", name, str);
provider = gtk_css_provider_new ();
- gtk_css_provider_load_from_data (provider, css, -1);
+ gtk_css_provider_load_from_string (provider, css);
gtk_style_context_add_provider_for_display (gtk_widget_get_display (item->label), GTK_STYLE_PROVIDER (provider), 700);
item->provider = GTK_STYLE_PROVIDER (provider);
@@ -765,7 +765,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
g_string_append_printf (css, ".canvasitem.%s { background: %s; }\n", colors[i], colors[i]);
provider = gtk_css_provider_new ();
- gtk_css_provider_load_from_data (provider, css->str, css->len);
+ gtk_css_provider_load_from_string (provider, css->str);
gtk_style_context_add_provider_for_display (gdk_display_get_default (),
GTK_STYLE_PROVIDER (provider),
800);
diff --git a/demos/gtk-demo/fishbowl.c b/demos/gtk-demo/fishbowl.c
index 40e1bbb6c2..bf0eef7b57 100644
--- a/demos/gtk-demo/fishbowl.c
+++ b/demos/gtk-demo/fishbowl.c
@@ -301,7 +301,7 @@ do_fishbowl (GtkWidget *do_widget)
if (provider == NULL)
{
provider = gtk_css_provider_new ();
- gtk_css_provider_load_from_data (provider, css, -1);
+ gtk_css_provider_load_from_string (provider, css);
gtk_style_context_add_provider_for_display (gdk_display_get_default (),
GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
diff --git a/demos/gtk-demo/gltransition.c b/demos/gtk-demo/gltransition.c
index e588a52924..08f77bad54 100644
--- a/demos/gtk-demo/gltransition.c
+++ b/demos/gtk-demo/gltransition.c
@@ -337,7 +337,7 @@ create_gltransition_window (GtkWidget *do_widget)
1, 1, 1, 1);
provider = gtk_css_provider_new ();
- gtk_css_provider_load_from_data (provider, "button.small { padding: 0; }", -1);
+ gtk_css_provider_load_from_string (provider, "button.small { padding: 0; }");
gtk_style_context_add_provider_for_display (gdk_display_get_default (),
GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
diff --git a/demos/gtk-demo/listview_ucd.c b/demos/gtk-demo/listview_ucd.c
index b1bde50eac..2a71ef88ed 100644
--- a/demos/gtk-demo/listview_ucd.c
+++ b/demos/gtk-demo/listview_ucd.c
@@ -367,7 +367,7 @@ do_listview_ucd (GtkWidget *do_widget)
gtk_label_set_width_chars (GTK_LABEL (label), 2);
gtk_widget_add_css_class (label, "enormous");
provider = gtk_css_provider_new ();
- gtk_css_provider_load_from_data (provider, "label.enormous { font-size: 80px; }", -1);
+ gtk_css_provider_load_from_string (provider, "label.enormous { font-size: 80px; }");
gtk_style_context_add_provider_for_display (gdk_display_get_default (), GTK_STYLE_PROVIDER (provider), 800);
gtk_widget_set_hexpand (label, TRUE);
gtk_box_append (GTK_BOX (box), label);
diff --git a/demos/gtk-demo/peg_solitaire.c b/demos/gtk-demo/peg_solitaire.c
index b0a07c4ea5..4ef43f1c29 100644
--- a/demos/gtk-demo/peg_solitaire.c
+++ b/demos/gtk-demo/peg_solitaire.c
@@ -384,7 +384,7 @@ create_board (GtkWidget *window)
"}";
provider = gtk_css_provider_new ();
- gtk_css_provider_load_from_data (provider, css, -1);
+ gtk_css_provider_load_from_string (provider, css);
gtk_style_context_add_provider_for_display (gdk_display_get_default (),
GTK_STYLE_PROVIDER (provider),
800);
diff --git a/demos/node-editor/node-editor-application.c b/demos/node-editor/node-editor-application.c
index 42a83e911a..10086e4937 100644
--- a/demos/node-editor/node-editor-application.c
+++ b/demos/node-editor/node-editor-application.c
@@ -201,7 +201,7 @@ node_editor_application_startup (GApplication *app)
provider = gtk_css_provider_new ();
- gtk_css_provider_load_from_data (provider, css, -1);
+ gtk_css_provider_load_from_string (provider, css);
gtk_style_context_add_provider_for_display (gdk_display_get_default (),
GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
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);
}
diff --git a/testsuite/css/api.c b/testsuite/css/api.c
index d0ed09e98a..97f907618f 100644
--- a/testsuite/css/api.c
+++ b/testsuite/css/api.c
@@ -25,10 +25,13 @@ gtk_css_provider_load_data_not_null_terminated (void)
{
GtkCssProvider *p;
const char data[3] = {'*', '{', '}'};
+ GBytes *bytes;
- p = gtk_css_provider_new();
+ p = gtk_css_provider_new ();
- gtk_css_provider_load_from_data(p, data, sizeof (data));
+ bytes = g_bytes_new_static (data, sizeof (data));
+ gtk_css_provider_load_from_bytes (p, bytes);
+ g_bytes_unref (bytes);
g_object_unref (p);
}
diff --git a/testsuite/gtk/cssprovider.c b/testsuite/gtk/cssprovider.c
index 500dfce916..9dffd9bfb8 100644
--- a/testsuite/gtk/cssprovider.c
+++ b/testsuite/gtk/cssprovider.c
@@ -17,7 +17,7 @@ test_section_in_load_from_data (void)
provider = gtk_css_provider_new ();
g_signal_connect (provider, "parsing-error",
G_CALLBACK (assert_section_is_not_null), NULL);
- gtk_css_provider_load_from_data (provider, "random garbage goes here", -1);
+ gtk_css_provider_load_from_string (provider, "random garbage goes here");
g_object_unref (provider);
}