]> git.armaanb.net Git - dmenu.git/blobdiff - dmenu.c
Fix cursor drawn position with wide glyphs
[dmenu.git] / dmenu.c
diff --git a/dmenu.c b/dmenu.c
index c852e92510c6679f6c4561eef307cc89d24ecc7d..d764658ba9859638a516629cac0b1785f90679da 100644 (file)
--- a/dmenu.c
+++ b/dmenu.c
@@ -144,7 +144,7 @@ drawmenu(void)
        drw_setscheme(drw, scheme[SchemeNorm]);
        drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0);
 
-       drw_font_getexts(drw->fonts, text, cursor, &curpos, NULL);
+       curpos = TEXTW(text) - TEXTW(&text[cursor]);
        if ((curpos += lrpad / 2 - 1) < w) {
                drw_setscheme(drw, scheme[SchemeNorm]);
                drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0);
@@ -552,7 +552,7 @@ run(void)
        XEvent ev;
 
        while (!XNextEvent(dpy, &ev)) {
-               if (XFilterEvent(&ev, win))
+               if (XFilterEvent(&ev, None))
                        continue;
                switch(ev.type) {
                case Expose:
@@ -664,6 +664,7 @@ setup(void)
                        XNClientWindow, win, XNFocusWindow, win, NULL);
 
        XMapRaised(dpy, win);
+       XSetInputFocus(dpy, win, RevertToParent, CurrentTime);
        if (embed) {
                XSelectInput(dpy, parentwin, FocusChangeMask);
                if (XQueryTree(dpy, parentwin, &dw, &w, &dws, &du) && dws) {
@@ -729,6 +730,8 @@ main(int argc, char *argv[])
 
        if (!setlocale(LC_CTYPE, "") || !XSupportsLocale())
                fputs("warning: no locale support\n", stderr);
+       if (!XSetLocaleModifiers(""))
+               fputs("warning: no locale modifiers support\n", stderr);
        if (!(dpy = XOpenDisplay(NULL)))
                die("cannot open display");
        screen = DefaultScreen(dpy);