apply gridnav patch

master
Ryan 2023-09-18 19:20:25 -04:00
parent b476bf037b
commit efe9765517
Signed by: ryan
GPG Key ID: 7D7E2E94267DAD95
1 changed files with 44 additions and 0 deletions

44
dmenu.c
View File

@ -489,6 +489,8 @@ keypress(XKeyEvent *ev)
int len;
KeySym ksym = NoSymbol;
Status status;
int i, offscreen = 0;
struct item *tmpsel;
len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status);
switch (status) {
@ -620,6 +622,27 @@ keypress(XKeyEvent *ev)
calcoffsets();
break;
case XK_Left:
if (columns > 1) {
if (!sel)
return;
tmpsel = sel;
for (i = 0; i < lines; i++) {
if (!tmpsel->left || tmpsel->left->right != tmpsel) {
if (offscreen)
break;
return;
}
if (tmpsel == curr)
offscreen = 1;
tmpsel = tmpsel->left;
}
sel = tmpsel;
if (offscreen) {
curr = prev;
calcoffsets();
}
break;
}
case XK_KP_Left:
if (cursor > 0 && (!sel || !sel->left || lines > 0)) {
cursor = nextrune(-1);
@ -660,6 +683,27 @@ keypress(XKeyEvent *ev)
sel->out = 1;
break;
case XK_Right:
if (columns > 1) {
if (!sel)
return;
tmpsel = sel;
for (i = 0; i < lines; i++) {
if (!tmpsel->right || tmpsel->right->left != tmpsel) {
if (offscreen)
break;
return;
}
tmpsel = tmpsel->right;
if (tmpsel == next)
offscreen = 1;
}
sel = tmpsel;
if (offscreen) {
curr = next;
calcoffsets();
}
break;
}
case XK_KP_Right:
if (text[cursor] != '\0') {
cursor = nextrune(+1);