aboutsummaryrefslogtreecommitdiffstats
path: root/patches/dmenu-gridnav-5.2.diff
diff options
context:
space:
mode:
authorNikita Langer <nikitalanger@icloud.com>2026-07-12 15:24:59 +0200
committerNikita Langer <nikitalanger@icloud.com>2026-07-12 15:24:59 +0200
commit8868deb87284b60a7b75dfdc1da6120b7c2820c2 (patch)
tree43e46b4a3f62394f159da32217f9d67f89e11adf /patches/dmenu-gridnav-5.2.diff
parent7175c4880bac3d2a2d4a6262b59193f0a38e2fdb (diff)
downloaddmenu-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.diff69
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);