X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=surf.c;h=9444982333dfa697bd593dc2b10fb7bba4c7fe6c;hb=0b5b798eb24ee6978c3ae932942105bf53122fe1;hp=5e1aa8d7dd5916fc41f80e22504e3d282a91b49f;hpb=701815a5f22c76dafb6b25c08d0ceb87252782c0;p=surf.git diff --git a/surf.c b/surf.c index 5e1aa8d..9444982 100644 --- a/surf.c +++ b/surf.c @@ -135,7 +135,7 @@ static void gettogglestat(Client *c); static void getpagestat(Client *c); static char *geturi(Client *c); static const gchar *getstyle(const char *uri); -static void setstyle(Client *c, const char *style); +static void setstyle(Client *c, const char *stylefile); static void handleplumb(Client *c, const gchar *uri); @@ -164,7 +164,7 @@ static void showview(WebKitWebView *v, Client *c); static void newwindow(Client *c, const Arg *arg, gboolean noembed); static GtkWidget *createwindow(Client *c); static void pasteuri(GtkClipboard *clipboard, const char *text, gpointer d); -static void print(Client *c, const Arg *arg); +static void print(Client *c, const Arg *a); static GdkFilterReturn processx(GdkXEvent *xevent, GdkEvent *event, gpointer d); static gboolean winevent(GtkWidget *w, GdkEvent *e, Client *c); @@ -670,11 +670,23 @@ getstyle(const char *uri) } void -setstyle(Client *c, const char *style) +setstyle(Client *c, const char *stylefile) { - WebKitWebSettings *settings = webkit_web_view_get_settings(c->view); + gchar *style; + + if (!g_file_get_contents(stylefile, &style, NULL, NULL)) { + fprintf(stderr, "Could not read style file: %s\n", stylefile); + return; + } + + webkit_user_content_manager_add_style_sheet( + webkit_web_view_get_user_content_manager(c->view), + webkit_user_style_sheet_new(style, + WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, + WEBKIT_USER_STYLE_LEVEL_USER, + NULL, NULL)); - g_object_set(G_OBJECT(settings), "user-stylesheet-uri", style, NULL); + g_free(style); } void @@ -1140,9 +1152,10 @@ pasteuri(GtkClipboard *clipboard, const char *text, gpointer d) } void -print(Client *c, const Arg *arg) +print(Client *c, const Arg *a) { - webkit_web_frame_print(webkit_web_view_get_main_frame(c->view)); + webkit_print_operation_run_dialog(webkit_print_operation_new(c->view), + GTK_WINDOW(c->win)); } GdkFilterReturn @@ -1251,7 +1264,6 @@ void setup(void) { int i; - char *styledirfile, *stylepath; WebKitWebContext *context; GError *error = NULL; @@ -1270,6 +1282,7 @@ setup(void) cookiefile = buildfile(cookiefile); scriptfile = buildfile(scriptfile); cachedir = buildpath(cachedir); + if (stylefile == NULL) { styledir = buildpath(styledir); for (i = 0; i < LENGTH(styles); i++) { @@ -1280,19 +1293,12 @@ setup(void) styles[i].regex); styles[i].regex = NULL; } - styledirfile = g_strconcat(styledir, "/", - styles[i].style, NULL); - stylepath = buildfile(styledirfile); - styles[i].style = g_strconcat("file://", stylepath, - NULL); - g_free(styledirfile); - g_free(stylepath); + styles[i].style = g_strconcat(styledir, "/", + styles[i].style, NULL); } g_free(styledir); } else { - stylepath = buildfile(stylefile); - stylefile = g_strconcat("file://", stylepath, NULL); - g_free(stylepath); + stylefile = buildfile(stylefile); } }