+ g_list_free (toplevels);
+}
+
+void
+gtk_style_context_add_provider_for_screen (GdkScreen *screen,
+ GtkStyleProvider *provider,
+ guint priority)
+{
+ GList *providers, *list;
+
+ g_return_if_fail (GDK_IS_SCREEN (screen));
+ g_return_if_fail (GTK_IS_STYLE_PROVIDER (provider));
+
+ if (G_UNLIKELY (!provider_list_quark))
+ provider_list_quark = g_quark_from_static_string ("gtk-provider-list-quark");
+
+ list = providers = g_object_get_qdata (G_OBJECT (screen), provider_list_quark);
+ style_provider_add (&list, provider, priority);
+
+ if (list != providers)
+ g_object_set_qdata (G_OBJECT (screen), provider_list_quark, list);
+
+ reset_toplevels (screen);
+}
+
+void
+gtk_style_context_remove_provider_for_screen (GdkScreen *screen,
+ GtkStyleProvider *provider)
+{
+ GList *providers, *list;
+
+ g_return_if_fail (GDK_IS_SCREEN (screen));
+ g_return_if_fail (GTK_IS_STYLE_PROVIDER (provider));
+
+ if (G_UNLIKELY (!provider_list_quark))
+ return;
+
+ list = providers = g_object_get_qdata (G_OBJECT (screen), provider_list_quark);
+
+ if (style_provider_remove (&list, provider))