limit direction keys in vline
[dmenu.git] / dmenu.c
diff --git a/dmenu.c b/dmenu.c
index f71b056..99db24e 100644 (file)
--- a/dmenu.c
+++ b/dmenu.c
@@ -258,8 +258,8 @@ keypress(XKeyEvent *ev) {
                case XK_i: ksym = XK_Tab;       break;
                case XK_j: ksym = XK_Return;    break;
                case XK_m: ksym = XK_Return;    break;
-               case XK_n: ksym = XK_Up;        break;
-               case XK_p: ksym = XK_Down;      break;
+               case XK_n: ksym = XK_Down;      break;
+               case XK_p: ksym = XK_Up;        break;
 
                case XK_k: /* delete right */
                        text[cursor] = '\0';
@@ -328,6 +328,8 @@ keypress(XKeyEvent *ev) {
                        cursor = nextrune(-1);
                        break;
                }
+               if(lines > 0)
+                       return;
                /* fallthrough */
        case XK_Up:
                if(sel && sel->left && (sel = sel->left)->right == curr) {
@@ -356,6 +358,8 @@ keypress(XKeyEvent *ev) {
                        cursor = nextrune(+1);
                        break;
                }
+               if(lines > 0)
+                       return;
                /* fallthrough */
        case XK_Down:
                if(sel && sel->right && (sel = sel->right) == next) {