From 8868deb87284b60a7b75dfdc1da6120b7c2820c2 Mon Sep 17 00:00:00 2001 From: Nikita Langer Date: Sun, 12 Jul 2026 15:24:59 +0200 Subject: xrdb --- patches/dmenu-gridnav-5.2.diff | 69 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 patches/dmenu-gridnav-5.2.diff (limited to 'patches/dmenu-gridnav-5.2.diff') diff --git a/patches/dmenu-gridnav-5.2.diff b/patches/dmenu-gridnav-5.2.diff new file mode 100644 index 0000000..7adc36f --- /dev/null +++ b/patches/dmenu-gridnav-5.2.diff @@ -0,0 +1,69 @@ +diff --git a/dmenu.c b/dmenu.c +index 027dddb..0b92f1f 100644 +--- a/dmenu.c ++++ b/dmenu.c +@@ -334,6 +334,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) { +@@ -465,6 +467,27 @@ insert: + 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); +@@ -505,6 +528,27 @@ insert: + 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); -- cgit