static int user_style(Client *c, const char *name, DataType type, void *value, void *data) { WebKitUserContentManager *ucm; WebKitUserStyleSheet *style; gchar *source; gboolean enabled = *(gboolean*)value; ucm = webkit_web_view_get_user_content_manager(c->webview); if (enabled && vb.files[FILES_USER_STYLE]) { if (g_file_get_contents(vb.files[FILES_USER_STYLE], &source, NULL, NULL)) { style = webkit_user_style_sheet_new( source, WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_STYLE_LEVEL_USER, NULL, NULL ); webkit_user_content_manager_add_style_sheet(ucm, style); webkit_user_style_sheet_unref(style); g_free(source); } else { g_warning("Could not reed style file: %s", vb.files[FILES_USER_STYLE]); } } else { webkit_user_content_manager_remove_all_style_sheets(ucm); } /* Inject the global styles with author level to allow restyling by user * style sheets. */ style = webkit_user_style_sheet_new(CSS_HINTS, WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_STYLE_LEVEL_AUTHOR, NULL, NULL); webkit_user_content_manager_add_style_sheet(ucm, style); webkit_user_style_sheet_unref(style); return CMD_SUCCESS; }
static void webkit_pref_callback_user_stylesheet (GSettings *settings, const char *key, gpointer data) { gboolean value; value = g_settings_get_boolean (settings, key); if (!value) webkit_user_content_manager_remove_all_style_sheets (WEBKIT_USER_CONTENT_MANAGER (ephy_embed_shell_get_user_content_manager (ephy_embed_shell_get_default ()))); else { GFile *file; char *filename; filename = g_build_filename (ephy_dot_dir (), USER_STYLESHEET_FILENAME, NULL); file = g_file_new_for_path (filename); g_free (filename); g_file_read_async (file, G_PRIORITY_DEFAULT, NULL, (GAsyncReadyCallback)user_style_seet_read_cb, NULL); g_object_unref (file); } }