X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=dmenu.c;h=aa9254ffa0e3ecc4d32038ebcedc72b18ebed3c9;hb=16a0c0d52aa947b3fe8c9285986567189537d339;hp=da6270583fa31765817228279ad7aea3e65ae71e;hpb=bb3e33def3e5156594ac59b75dc52798accbebcd;p=dmenu.git diff --git a/dmenu.c b/dmenu.c index da62705..aa9254f 100644 --- a/dmenu.c +++ b/dmenu.c @@ -219,7 +219,7 @@ insert(const char *str, ssize_t n) { if(n > 0) memcpy(&text[cursor], str, n); cursor += n; - match(n > 0); + match(n > 0 && text[cursor] == '\0'); } void @@ -260,6 +260,7 @@ keypress(XKeyEvent *ev) { ksym = XK_Tab; break; case XK_j: + case XK_m: ksym = XK_Return; break; case XK_k: /* delete right */ @@ -267,10 +268,10 @@ keypress(XKeyEvent *ev) { match(False); break; case XK_n: - ksym = XK_Down; + ksym = XK_Next; break; case XK_p: - ksym = XK_Up; + ksym = XK_Prior; break; case XK_u: /* delete left */ insert(NULL, 0 - cursor); @@ -329,8 +330,7 @@ keypress(XKeyEvent *ev) { cursor = nextrune(-1); break; } - else if(lines > 0) - return; + /* fallthrough */ case XK_Up: if(sel && sel->left && (sel = sel->left)->right == curr) { curr = prev; @@ -358,8 +358,7 @@ keypress(XKeyEvent *ev) { cursor = nextrune(+1); break; } - else if(lines > 0) - return; + /* fallthrough */ case XK_Down: if(sel && sel->right && (sel = sel->right) == next) { curr = next;