sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit c05fb6ab94abc487d04cda83b533fa23fab3930b
parent f44010b2dc1ab3505fc0fb061f01f401c0e758ac
Author: bit9tream <bit6tream@cock.li>
Date:   Fri, 12 Jun 2020 11:26:05 +0300

fix: segfault on <Ctrl-Enter> press when there is no sel

Diffstat:
Mtools.suckless.org/dmenu/patches/multi-selection/dmenu-multi-selection-4.9.diff | 12+++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/tools.suckless.org/dmenu/patches/multi-selection/dmenu-multi-selection-4.9.diff b/tools.suckless.org/dmenu/patches/multi-selection/dmenu-multi-selection-4.9.diff @@ -1,5 +1,5 @@ diff --git a/dmenu.c b/dmenu.c -index 6b8f51b..af2fc99 100644 +index 6b8f51b..b621ce3 100644 --- a/dmenu.c +++ b/dmenu.c @@ -31,7 +31,8 @@ enum { SchemeNorm, SchemeSel, SchemeOut, SchemeLast }; /* color schemes */ @@ -55,14 +55,16 @@ index 6b8f51b..af2fc99 100644 drw_setscheme(drw, scheme[SchemeOut]); else drw_setscheme(drw, scheme[SchemeNorm]); -@@ -367,6 +381,20 @@ keypress(XKeyEvent *ev) +@@ -367,6 +381,22 @@ keypress(XKeyEvent *ev) goto draw; case XK_Return: case XK_KP_Enter: ++ if (!sel) return; + if (issel(sel->id)) { + for (int i = 0;i < selidsize;i++) + if (selid[i] == sel->id) + selid[i] = -1; ++ return; + } else { + for (int i = 0;i < selidsize;i++) + if (selid[i] == -1) { @@ -76,14 +78,14 @@ index 6b8f51b..af2fc99 100644 break; case XK_bracketleft: cleanup(); -@@ -464,13 +492,17 @@ insert: +@@ -464,13 +494,17 @@ insert: break; case XK_Return: case XK_KP_Enter: - puts((sel && !(ev->state & ShiftMask)) ? sel->text : text); if (!(ev->state & ControlMask)) { + for (int i = 0;i < selidsize;i++) -+ if (selid[i] != -1) ++ if (selid[i] != -1 && sel->id != selid[i]) + puts(items[selid[i]].text); + if (sel && !(ev->state & ShiftMask)) + puts(sel->text); @@ -97,7 +99,7 @@ index 6b8f51b..af2fc99 100644 break; case XK_Right: if (text[cursor] != '\0') { -@@ -534,7 +566,7 @@ readstdin(void) +@@ -534,7 +568,7 @@ readstdin(void) *p = '\0'; if (!(items[i].text = strdup(buf))) die("cannot strdup %u bytes:", strlen(buf) + 1);