|
|
@ -1,6 +1,7 @@ |
|
|
|
/* See LICENSE file for copyright and license details. */ |
|
|
|
/* See LICENSE file for copyright and license details. */ |
|
|
|
#include <ctype.h> |
|
|
|
#include <ctype.h> |
|
|
|
#include <locale.h> |
|
|
|
#include <locale.h> |
|
|
|
|
|
|
|
#include <stdbool.h> |
|
|
|
#include <stdio.h> |
|
|
|
#include <stdio.h> |
|
|
|
#include <stdlib.h> |
|
|
|
#include <stdlib.h> |
|
|
|
#include <string.h> |
|
|
|
#include <string.h> |
|
|
@ -31,7 +32,7 @@ typedef struct Item Item; |
|
|
|
struct Item { |
|
|
|
struct Item { |
|
|
|
char *text; |
|
|
|
char *text; |
|
|
|
Item *left, *right; |
|
|
|
Item *left, *right; |
|
|
|
Bool out; |
|
|
|
bool out; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
static void appenditem(Item *item, Item **list, Item **last); |
|
|
|
static void appenditem(Item *item, Item **list, Item **last); |
|
|
@ -76,7 +77,7 @@ static char *(*fstrstr)(const char *, const char *) = strstr; |
|
|
|
|
|
|
|
|
|
|
|
int |
|
|
|
int |
|
|
|
main(int argc, char *argv[]) { |
|
|
|
main(int argc, char *argv[]) { |
|
|
|
Bool fast = False; |
|
|
|
bool fast = false; |
|
|
|
int i; |
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
|
|
for(i = 1; i < argc; i++) |
|
|
|
for(i = 1; i < argc; i++) |
|
|
@ -86,9 +87,9 @@ main(int argc, char *argv[]) { |
|
|
|
exit(0); |
|
|
|
exit(0); |
|
|
|
} |
|
|
|
} |
|
|
|
else if(!strcmp(argv[i], "-b")) /* appears at the bottom of the screen */ |
|
|
|
else if(!strcmp(argv[i], "-b")) /* appears at the bottom of the screen */ |
|
|
|
topbar = False; |
|
|
|
topbar = false; |
|
|
|
else if(!strcmp(argv[i], "-f")) /* grabs keyboard before reading stdin */ |
|
|
|
else if(!strcmp(argv[i], "-f")) /* grabs keyboard before reading stdin */ |
|
|
|
fast = True; |
|
|
|
fast = true; |
|
|
|
else if(!strcmp(argv[i], "-i")) { /* case-insensitive item matching */ |
|
|
|
else if(!strcmp(argv[i], "-i")) { /* case-insensitive item matching */ |
|
|
|
fstrncmp = strncasecmp; |
|
|
|
fstrncmp = strncasecmp; |
|
|
|
fstrstr = cistrstr; |
|
|
|
fstrstr = cistrstr; |
|
|
@ -203,7 +204,7 @@ drawmenu(void) { |
|
|
|
int x = 0, y = 0, h = bh, w; |
|
|
|
int x = 0, y = 0, h = bh, w; |
|
|
|
|
|
|
|
|
|
|
|
drw_setscheme(drw, &scheme[SchemeNorm]); |
|
|
|
drw_setscheme(drw, &scheme[SchemeNorm]); |
|
|
|
drw_rect(drw, 0, 0, mw, mh, True, 1, 1); |
|
|
|
drw_rect(drw, 0, 0, mw, mh, 1, 1, 1); |
|
|
|
|
|
|
|
|
|
|
|
if(prompt && *prompt) { |
|
|
|
if(prompt && *prompt) { |
|
|
|
drw_setscheme(drw, &scheme[SchemeSel]); |
|
|
|
drw_setscheme(drw, &scheme[SchemeSel]); |
|
|
@ -432,7 +433,7 @@ keypress(XKeyEvent *ev) { |
|
|
|
exit(0); |
|
|
|
exit(0); |
|
|
|
} |
|
|
|
} |
|
|
|
if(sel) |
|
|
|
if(sel) |
|
|
|
sel->out = True; |
|
|
|
sel->out = true; |
|
|
|
break; |
|
|
|
break; |
|
|
|
case XK_Right: |
|
|
|
case XK_Right: |
|
|
|
if(text[cursor] != '\0') { |
|
|
|
if(text[cursor] != '\0') { |
|
|
@ -552,7 +553,7 @@ readstdin(void) { |
|
|
|
*p = '\0'; |
|
|
|
*p = '\0'; |
|
|
|
if(!(items[i].text = strdup(buf))) |
|
|
|
if(!(items[i].text = strdup(buf))) |
|
|
|
die("cannot strdup %u bytes:", strlen(buf)+1); |
|
|
|
die("cannot strdup %u bytes:", strlen(buf)+1); |
|
|
|
items[i].out = False; |
|
|
|
items[i].out = false; |
|
|
|
if(strlen(items[i].text) > max) |
|
|
|
if(strlen(items[i].text) > max) |
|
|
|
max = strlen(maxstr = items[i].text); |
|
|
|
max = strlen(maxstr = items[i].text); |
|
|
|
} |
|
|
|
} |
|
|
|