From 11dca18a2d148e5a6463aba783567a3815424963 Mon Sep 17 00:00:00 2001 From: Quentin Rameau Date: Mon, 19 Jul 2021 21:23:32 +0200 Subject: 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. --- surf.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'surf.c') diff --git a/surf.c b/surf.c index c25def7..03d8242 100644 --- a/surf.c +++ b/surf.c @@ -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, @@ -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); @@ -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); } @@ -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); -- cgit v1.2.3