diff options
| author | Nikita Langer <nikitalanger@icloud.com> | 2026-07-12 15:24:59 +0200 |
|---|---|---|
| committer | Nikita Langer <nikitalanger@icloud.com> | 2026-07-12 15:24:59 +0200 |
| commit | 8868deb87284b60a7b75dfdc1da6120b7c2820c2 (patch) | |
| tree | 43e46b4a3f62394f159da32217f9d67f89e11adf /patches/dmenu-gridnav-5.2.diff | |
| parent | 7175c4880bac3d2a2d4a6262b59193f0a38e2fdb (diff) | |
| download | dmenu-8868deb87284b60a7b75dfdc1da6120b7c2820c2.tar.gz dmenu-8868deb87284b60a7b75dfdc1da6120b7c2820c2.tar.bz2 dmenu-8868deb87284b60a7b75dfdc1da6120b7c2820c2.tar.xz dmenu-8868deb87284b60a7b75dfdc1da6120b7c2820c2.zip | |
xrdb
Diffstat (limited to 'patches/dmenu-gridnav-5.2.diff')
| -rw-r--r-- | patches/dmenu-gridnav-5.2.diff | 69 |
1 files changed, 69 insertions, 0 deletions
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); |
