tImprove non-ASCII character search handling - surf - [fork] customized build o… | |
git clone git://src.adamsgaard.dk/surf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 11dca18a2d148e5a6463aba783567a3815424963 | |
parent 238d2273b50c33a1e98ad55750126f05201f911d | |
Author: Quentin Rameau <[email protected]> | |
Date: Mon, 19 Jul 2021 21:23:32 +0200 | |
Improve non-ASCII character search handling | |
Before, the XA_STRING would only let use ASCII characters properly. | |
Now UTF-8 characters should be handled correctly. | |
Diffstat: | |
M config.def.h | 4 ++-- | |
M surf.c | 8 +++++--- | |
2 files changed, 7 insertions(+), 5 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -68,10 +68,10 @@ static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CA… | |
#define SETPROP(r, s, p) { \ | |
.v = (const char *[]){ "/bin/sh", "-c", \ | |
"prop=\"$(printf '%b' \"$(xprop -id $1 "r" " \ | |
- "| sed -e 's/^"r"(STRING) = \"\\(.*\\)\"/\\1/' " \ | |
+ "| sed -e 's/^"r"(UTF8_STRING) = \"\\(.*\\)\"/\\1/' " \ | |
" -e 's/\\\\\\(.\\)/\\1/g')\" " \ | |
"| dmenu -p '"p"' -w $1)\" " \ | |
- "&& xprop -id $1 -f "s" 8s -set "s" \"$prop\"", \ | |
+ "&& xprop -id $1 -f "s" 8u -set "s" \"$prop\"", \ | |
"surf-setprop", winid, NULL \ | |
} \ | |
} | |
diff --git a/surf.c b/surf.c | |
t@@ -37,7 +37,7 @@ | |
#define LENGTH(x) (sizeof(x) / sizeof(x[0])) | |
#define CLEANMASK(mask) (mask & (MODKEY|GDK_SHIFT_MASK)) | |
-enum { AtomFind, AtomGo, AtomUri, AtomLast }; | |
+enum { AtomFind, AtomGo, AtomUri, AtomUTF8, AtomLast }; | |
enum { | |
OnDoc = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT, | |
t@@ -339,6 +339,7 @@ setup(void) | |
atoms[AtomFind] = XInternAtom(dpy, "_SURF_FIND", False); | |
atoms[AtomGo] = XInternAtom(dpy, "_SURF_GO", False); | |
atoms[AtomUri] = XInternAtom(dpy, "_SURF_URI", False); | |
+ atoms[AtomUTF8] = XInternAtom(dpy, "UTF8_STRING", False); | |
gtk_init(NULL, NULL); | |
t@@ -608,7 +609,7 @@ void | |
setatom(Client *c, int a, const char *v) | |
{ | |
XChangeProperty(dpy, c->xid, | |
- atoms[a], XA_STRING, 8, PropModeReplace, | |
+ atoms[a], atoms[AtomUTF8], 8, PropModeReplace, | |
(unsigned char *)v, strlen(v) + 1); | |
XSync(dpy, False); | |
} | |
t@@ -623,7 +624,8 @@ getatom(Client *c, int a) | |
unsigned char *p = NULL; | |
XSync(dpy, False); | |
- XGetWindowProperty(dpy, c->xid, atoms[a], 0L, BUFSIZ, False, XA_STRING, | |
+ XGetWindowProperty(dpy, c->xid, | |
+ atoms[a], 0L, BUFSIZ, False, atoms[AtomUTF8], | |
&adummy, &idummy, &ldummy, &ldummy, &p); | |
if (p) | |
strncpy(buf, (char *)p, LENGTH(buf) - 1); |