Introduction
Introduction Statistics Contact Development Disclaimer Help
tAdapt find() - surf - customized build of surf, the suckless webkit browser
git clone git://src.adamsgaard.dk/surf
Log
Files
Refs
README
LICENSE
---
commit 526b974c33a17b7ef77f4268bd8602e2d51ad1b9
parent 320e4e4388ff65318f6daed76f2ab16b87e20c7b
Author: Quentin Rameau <[email protected]>
Date: Fri, 20 Nov 2015 01:12:28 +0100
Adapt find()
Slightly new behaviour: searching again for the same string (via MOD+/)
resets the search (ie restarts search from document top).
Searching for an empty string stops the search (ie all highlights are
removed).
Diffstat:
M config.def.h | 7 +++++--
M surf.c | 32 +++++++++++++++++++++++------…
2 files changed, 29 insertions(+), 10 deletions(-)
---
diff --git a/config.def.h b/config.def.h
t@@ -35,6 +35,9 @@ static Bool loadimages = TRUE;
static Bool hidebackground = FALSE;
static Bool allowgeolocation = TRUE;
+static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE |
+ WEBKIT_FIND_OPTIONS_WRAP_AROUND;
+
#define SETPROP(p, q) { \
.v = (char *[]){ "/bin/sh", "-c", \
"prop=\"`xprop -id $2 $0 " \
t@@ -116,8 +119,8 @@ static Key keys[] = {
{ MODKEY, GDK_KEY_f, spawn, SETPROP("_SURF_FI…
{ MODKEY, GDK_KEY_slash, spawn, SETPROP("_SURF_FI…
- { MODKEY, GDK_KEY_n, find, { .b = TRUE } },
- { MODKEY|GDK_SHIFT_MASK, GDK_KEY_n, find, { .b = FALSE } },
+ { MODKEY, GDK_KEY_n, find, { .i = +1 } },
+ { MODKEY|GDK_SHIFT_MASK, GDK_KEY_n, find, { .i = -1 } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_c, toggle, { .v = "enable-ca…
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_i, toggle, { .v = "auto-load…
diff --git a/surf.c b/surf.c
t@@ -59,6 +59,7 @@ typedef struct Client {
Window xid;
WebKitWebView *view;
WebKitWebInspector *inspector;
+ WebKitFindController *finder;
WebKitHitTestResult *mousepos;
GTlsCertificateFlags tlsflags;
const char *title, *targeturi;
t@@ -126,7 +127,7 @@ static void destroywin(GtkWidget* w, Client *c);
static void die(const char *errstr, ...);
static void evalscript(Client *c, const char *jsstr, ...);
static void runscript(Client *c);
-static void find(Client *c, const Arg *arg);
+static void find(Client *c, const Arg *a);
static void togglefullscreen(Client *c, const Arg *a);
static gboolean permissionrequested(WebKitWebView *v,
WebKitPermissionRequest *r, Client *c);
t@@ -581,13 +582,27 @@ die(const char *errstr, ...)
}
void
-find(Client *c, const Arg *arg)
+find(Client *c, const Arg *a)
{
- const char *s;
+ const char *s, *f;
- s = getatom(c, AtomFind);
- gboolean forward = *(gboolean *)arg;
- webkit_web_view_search_text(c->view, s, FALSE, forward, TRUE);
+ if (a && a->i) {
+ if (a->i > 0)
+ webkit_find_controller_search_next(c->finder);
+ else
+ webkit_find_controller_search_previous(c->finder);
+ } else {
+ s = getatom(c, AtomFind);
+ f = webkit_find_controller_get_search_text(c->finder);
+
+ if (g_strcmp0(f, s) == 0) /* reset search */
+ webkit_find_controller_search(c->finder, "", findopts,…
+
+ webkit_find_controller_search(c->finder, s, findopts, G_MAXUIN…
+
+ if (strcmp(s, "") == 0)
+ webkit_find_controller_search_finish(c->finder);
+ }
}
void
t@@ -979,6 +994,8 @@ showview(WebKitWebView *v, Client *c)
if (enableinspector)
c->inspector = webkit_web_view_get_inspector(c->view);
+ c->finder = webkit_web_view_get_find_controller(c->view);
+
if (!kioskmode)
addaccelgroup(c);
t@@ -1122,8 +1139,7 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d)
ev = &((XEvent *)e)->xproperty;
if (ev->state == PropertyNewValue) {
if (ev->atom == atoms[AtomFind]) {
- arg.b = TRUE;
- find(c, &arg);
+ find(c, NULL);
return GDK_FILTER_REMOVE;
} else if (ev->atom == atoms[AtomGo]) {
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.