X-Git-Url: https://git.danieliu.xyz/?p=surf.git;a=blobdiff_plain;f=surf.c;h=9d2dacb8e8a7da84cdd12881d189186d72b03011;hp=2b54e3cca144a74f815c058a5755b6d01e9000d8;hb=c6f48298df2ff2c4a3c7bf2948bbc5fad7628ebc;hpb=02541c314678aa1ee6eb485ca9dce66a46693aac diff --git a/surf.c b/surf.c index 2b54e3c..9d2dacb 100644 --- a/surf.c +++ b/surf.c @@ -35,7 +35,7 @@ #define LENGTH(x) (sizeof(x) / sizeof(x[0])) #define CLEANMASK(mask) (mask & (MODKEY|GDK_SHIFT_MASK)) -enum { AtomFind, AtomGo, AtomUri, AtomLast }; +enum { AtomFind, AtomSearch, AtomGo, AtomUri, AtomLast }; enum { OnDoc = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT, @@ -231,6 +231,7 @@ static void togglefullscreen(Client *c, const Arg *a); static void togglecookiepolicy(Client *c, const Arg *a); static void toggleinspector(Client *c, const Arg *a); static void find(Client *c, const Arg *a); +static void search(Client *c, const Arg *a); /* Buttons */ static void clicknavigate(Client *c, const Arg *a, WebKitHitTestResult *h); @@ -326,6 +327,7 @@ setup(void) /* atoms */ atoms[AtomFind] = XInternAtom(dpy, "_SURF_FIND", False); + atoms[AtomSearch] = XInternAtom(dpy, "_SURF_SEARCH", False); atoms[AtomGo] = XInternAtom(dpy, "_SURF_GO", False); atoms[AtomUri] = XInternAtom(dpy, "_SURF_URI", False); @@ -577,6 +579,19 @@ loaduri(Client *c, const Arg *a) g_free(url); } +void +search(Client *c, const Arg *a) +{ + Arg arg; + char *url; + + url = g_strdup_printf(searchurl, a->v); + arg.v = url; + loaduri(c, &arg); + + g_free(url); +} + const char * geturi(Client *c) { @@ -1311,6 +1326,9 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d) find(c, NULL); return GDK_FILTER_REMOVE; + } else if (ev->atom == atoms[AtomSearch]) { + a.v = getatom(c, AtomSearch); + search(c, &a); } else if (ev->atom == atoms[AtomGo]) { a.v = getatom(c, AtomGo); loaduri(c, &a); @@ -2111,7 +2129,11 @@ main(int argc, char *argv[]) if (argc > 0) arg.v = argv[0]; else +#ifdef HOMEPAGE + arg.v = HOMEPAGE; +#else arg.v = "about:blank"; +#endif setup(); c = newclient(NULL);