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 | |
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
-rw-r--r-- | demos/gtk-demo/css_blendmodes.c | 2 | ||||
-rw-r--r-- | demos/gtk-demo/dnd.c | 4 | ||||
-rw-r--r-- | demos/gtk-demo/fishbowl.c | 2 | ||||
-rw-r--r-- | demos/gtk-demo/gltransition.c | 2 | ||||
-rw-r--r-- | demos/gtk-demo/listview_ucd.c | 2 | ||||
-rw-r--r-- | demos/gtk-demo/peg_solitaire.c | 2 | ||||
-rw-r--r-- | demos/node-editor/node-editor-application.c | 2 | ||||
-rw-r--r-- | gtk/gtkcssprovider.c | 57 | ||||
-rw-r--r-- | gtk/gtkcssprovider.h | 10 | ||||
-rw-r--r-- | gtk/inspector/css-editor.c | 2 | ||||
-rw-r--r-- | testsuite/css/api.c | 7 | ||||
-rw-r--r-- | testsuite/gtk/cssprovider.c | 2 |
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); } |