X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=surf.c;h=a090dc879b2e43dc7d539134d331ae9e4934cacd;hb=ad794e0f00f56065f4e8d7e4cd1e4b8873938993;hp=dcd0ad0699e309edf5356a6051985cb283236e1f;hpb=c12b6499fe68b4bc3114ed241c937dd38f94de87;p=surf.git diff --git a/surf.c b/surf.c index dcd0ad0..a090dc8 100644 --- a/surf.c +++ b/surf.c @@ -78,9 +78,9 @@ static Client *clients = NULL; static GdkNativeWindow embed = 0; static gboolean showxid = FALSE; static char winid[64]; -static gboolean loadimage = 1, plugin = 1, script = 1, using_proxy = 0; -static char togglestat[6]; -static gboolean insertmode = FALSE; +static gboolean loadimages = 1, enableplugins = 1, enablescripts = 1, + usingproxy = 0; +static char togglestat[5]; static char *buildpath(const char *path); static gboolean buttonrelease(WebKitWebView *web, GdkEventButton *e, GList *gl); @@ -103,7 +103,6 @@ static void find(Client *c, const Arg *arg); static const char *getatom(Client *c, int a); static char *geturi(Client *c); static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c); -static void insert(Client *c, const Arg *arg); static gboolean keypress(GtkWidget *w, GdkEventKey *ev, Client *c); static void linkhover(WebKitWebView *v, const char* t, const char* l, Client *c); static void loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c); @@ -361,13 +360,13 @@ drawindicator(Client *c) { width = c->progress * w->allocation.width / 100; gc = gdk_gc_new(w->window); if(strstr(uri, "https://") == uri) { - if(using_proxy) { + if(usingproxy) { colorname = c->sslfailed? progress_proxy_untrust : progress_proxy_trust; } else { colorname = c->sslfailed? progress_untrust : progress_trust; } } else { - if(using_proxy) { + if(usingproxy) { colorname = progress_proxy; } else { colorname = progress; @@ -432,52 +431,23 @@ initdownload(WebKitWebView *view, WebKitDownload *o, Client *c) { Arg arg; updatewinid(c); - arg = (Arg)DOWNLOAD((char *)webkit_download_get_uri(o)); + arg = (Arg)DOWNLOAD((char *)webkit_download_get_uri(o), geturi(c)); spawn(c, &arg); return FALSE; } -void -insert(Client *c, const Arg *arg) { - insertmode = TRUE; - update(clients); -} - gboolean keypress(GtkWidget* w, GdkEventKey *ev, Client *c) { - guint i, state; + guint i; gboolean processed = FALSE; - /* turn off insert mode */ - if(insertmode && (ev->keyval == GDK_Escape)) { - insertmode = FALSE; - update(c); - return TRUE; - } - - if(insertmode && (((ev->state & MODKEY) != MODKEY) || !MODKEY)) { - return FALSE; - } - - if(ev->keyval == GDK_Escape) { - webkit_web_view_set_highlight_text_matches(c->view, FALSE); - return TRUE; - } - updatewinid(c); for(i = 0; i < LENGTH(keys); i++) { - if(!insertmode && (MODKEY & keys[i].mod)) { - state = ev->state | MODKEY; - } else { - state = ev->state; - } - if(gdk_keyval_to_lower(ev->keyval) == keys[i].keyval + && (ev->state & keys[i].mod) == keys[i].mod && keys[i].func) { - if(state == keys[i].mod) { - keys[i].func(c, &(keys[i].arg)); - processed = TRUE; - } + keys[i].func(c, &(keys[i].arg)); + processed = TRUE; } } @@ -563,12 +533,13 @@ newclient(void) { if(!(c = calloc(1, sizeof(Client)))) die("Cannot malloc!\n"); + /* Window */ if(embed) { c->win = gtk_plug_new(embed); - } - else { + } else { c->win = gtk_window_new(GTK_WINDOW_TOPLEVEL); + /* TA: 20091214: Despite what the GNOME docs say, the ICCCM * is always correct, so we should still call this function. * But when doing so, we *must* differentiate between a @@ -633,6 +604,7 @@ newclient(void) { gdk_window_set_events(GTK_WIDGET(c->win)->window, GDK_ALL_EVENTS_MASK); gdk_window_add_filter(GTK_WIDGET(c->win)->window, processx, c); webkit_web_view_set_full_content_zoom(c->view, TRUE); + frame = webkit_web_view_get_main_frame(c->view); runscript(frame); settings = webkit_web_view_get_settings(c->view); @@ -641,16 +613,17 @@ newclient(void) { g_object_set(G_OBJECT(settings), "user-agent", ua, NULL); uri = g_strconcat("file://", stylefile, NULL); g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL); - g_object_set(G_OBJECT(settings), "auto-load-images", loadimage, NULL); - g_object_set(G_OBJECT(settings), "enable-plugins", plugin, NULL); - g_object_set(G_OBJECT(settings), "enable-scripts", script, NULL); - g_object_set(G_OBJECT(settings), "enable-spatial-navigation", SPATIAL_BROWSING, NULL); + g_object_set(G_OBJECT(settings), "auto-load-images", loadimages, NULL); + g_object_set(G_OBJECT(settings), "enable-plugins", enableplugins, NULL); + g_object_set(G_OBJECT(settings), "enable-scripts", enablescripts, NULL); + g_object_set(G_OBJECT(settings), "enable-spatial-navigation", + spatialbrowsing, NULL); g_free(uri); setatom(c, AtomFind, ""); setatom(c, AtomUri, "about:blank"); - if(HIDE_BACKGROUND) + if(hidebackground) webkit_web_view_set_transparent(c->view, TRUE); c->title = NULL; @@ -680,11 +653,11 @@ newwindow(Client *c, const Arg *arg, gboolean noembed) { snprintf(tmp, LENGTH(tmp), "%u\n", (int)embed); cmd[i++] = tmp; } - if(!script) + if(!enablescripts) cmd[i++] = "-s"; - if(!plugin) + if(!enableplugins) cmd[i++] = "-p"; - if(!loadimage) + if(!loadimages) cmd[i++] = "-i"; if(showxid) cmd[i++] = "-x"; @@ -872,7 +845,7 @@ setup(void) { g_object_set(G_OBJECT(s), "proxy-uri", puri, NULL); soup_uri_free(puri); g_free(new_proxy); - using_proxy = 1; + usingproxy = 1; } } @@ -943,19 +916,20 @@ gettogglestat(Client *c){ gboolean value; WebKitWebSettings *settings = webkit_web_view_get_settings(c->view); - togglestat[4] = '\0'; + g_object_get(G_OBJECT(settings), "enable-caret-browsing", + &value, NULL); + togglestat[0] = value? 'C': 'c'; + g_object_get(G_OBJECT(settings), "auto-load-images", &value, NULL); - togglestat[0] = value?'I':'i'; + togglestat[1] = value? 'I': 'i'; + g_object_get(G_OBJECT(settings), "enable-scripts", &value, NULL); - togglestat[1] = value?'S':'s'; + togglestat[2] = value? 'S': 's'; + g_object_get(G_OBJECT(settings), "enable-plugins", &value, NULL); - togglestat[2] = value?'V':'v'; - g_object_get(G_OBJECT(settings), "enable-caret-browsing", - &value, NULL); - togglestat[3] = value?'C':'c'; + togglestat[3] = value? 'V': 'v'; - togglestat[4] = insertmode? '+' : '-'; - togglestat[5] = '\0'; + togglestat[4] = '\0'; } @@ -1027,16 +1001,16 @@ main(int argc, char *argv[]) { embed = strtol(EARGF(usage()), NULL, 0); break; case 'i': - loadimage = 0; + loadimages = 0; break; case 'p': - plugin = 0; + enableplugins = 0; break; case 'r': scriptfile = EARGF(usage()); break; case 's': - script = 0; + enablescripts = 0; break; case 't': stylefile = EARGF(usage());