X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=dmenu.c;h=c9fb38bde2e487574f8367d33a6a18979bfdac9c;hb=acbf35a5e35b6f6a7dd3f8da49a6e5ec5ac075ce;hp=32a8330df9dffe12ee13720df2fa032677bdd54e;hpb=ba75bb30fa1f458ea4d80a2858ffeaf9d49afbcc;p=dmenu.git diff --git a/dmenu.c b/dmenu.c index 32a8330..c9fb38b 100644 --- a/dmenu.c +++ b/dmenu.c @@ -7,6 +7,7 @@ #include #include #include + #include #include #include @@ -207,7 +208,7 @@ match(void) char buf[sizeof text], *s; int i, tokc = 0; - size_t len; + size_t len, textsize; struct item *item, *lprefix, *lsubstr, *prefixend, *substrend; strcpy(buf, text); @@ -218,6 +219,7 @@ match(void) len = tokc ? strlen(tokv[0]) : 0; matches = lprefix = lsubstr = matchend = prefixend = substrend = NULL; + textsize = strlen(text) + 1; for (item = items; item && item->text; item++) { for (i = 0; i < tokc; i++) if (!fstrstr(item->text, tokv[i])) @@ -225,7 +227,7 @@ match(void) if (i != tokc) /* not all tokens match */ continue; /* exact matches go first, then prefixes, then substrings */ - if (!tokc || !fstrncmp(tokv[0], item->text, len + 1)) + if (!tokc || !fstrncmp(text, item->text, textsize)) appenditem(item, &matches, &matchend); else if (!fstrncmp(tokv[0], item->text, len)) appenditem(item, &lprefix, &prefixend); @@ -319,6 +321,7 @@ keypress(XKeyEvent *ev) insert(NULL, nextrune(-1) - cursor); break; case XK_y: /* paste selection */ + case XK_Y: XConvertSelection(dpy, (ev->state & ShiftMask) ? clip : XA_PRIMARY, utf8, utf8, win, CurrentTime); return; @@ -622,7 +625,7 @@ main(int argc, char *argv[]) if (!strcmp(argv[i], "-v")) { /* prints version information */ puts("dmenu-"VERSION); exit(0); - } else if (!strcmp(argv[i], "-b")) /* appears at the bottom of the screen */ + } else if (!strcmp(argv[i], "-b")) /* appears at the bottom of the screen */ topbar = false; else if (!strcmp(argv[i], "-f")) /* grabs keyboard before reading stdin */ fast = true;