mirror of git://git.suckless.org/dmenu
portability
This commit is contained in:
parent
4354074607
commit
11ea52d170
|
@ -18,7 +18,7 @@ LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS}
|
||||||
|
|
||||||
# flags
|
# flags
|
||||||
CPPFLAGS = -D_BSD_SOURCE -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
|
CPPFLAGS = -D_BSD_SOURCE -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
|
||||||
CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
|
CFLAGS = -ansi -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
|
||||||
LDFLAGS = -s ${LIBS}
|
LDFLAGS = -s ${LIBS}
|
||||||
|
|
||||||
# compiler and linker
|
# compiler and linker
|
||||||
|
|
21
dmenu.c
21
dmenu.c
|
@ -3,6 +3,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <strings.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
|
@ -231,13 +232,14 @@ insert(const char *str, ssize_t n) {
|
||||||
void
|
void
|
||||||
keypress(XKeyEvent *ev) {
|
keypress(XKeyEvent *ev) {
|
||||||
char buf[32];
|
char buf[32];
|
||||||
size_t len;
|
|
||||||
KeySym ksym;
|
KeySym ksym;
|
||||||
|
|
||||||
len = strlen(text);
|
|
||||||
XLookupString(ev, buf, sizeof buf, &ksym, NULL);
|
XLookupString(ev, buf, sizeof buf, &ksym, NULL);
|
||||||
if(ev->state & ControlMask)
|
if(ev->state & ControlMask) {
|
||||||
switch(tolower(ksym)) {
|
KeySym lower, upper;
|
||||||
|
|
||||||
|
XConvertCase(ksym, &lower, &upper);
|
||||||
|
switch(lower) {
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
case XK_a:
|
case XK_a:
|
||||||
|
@ -290,13 +292,14 @@ keypress(XKeyEvent *ev) {
|
||||||
XConvertSelection(dc->dpy, XA_PRIMARY, utf8, utf8, win, CurrentTime);
|
XConvertSelection(dc->dpy, XA_PRIMARY, utf8, utf8, win, CurrentTime);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
switch(ksym) {
|
switch(ksym) {
|
||||||
default:
|
default:
|
||||||
if(!iscntrl(*buf))
|
if(!iscntrl(*buf))
|
||||||
insert(buf, strlen(buf));
|
insert(buf, strlen(buf));
|
||||||
break;
|
break;
|
||||||
case XK_Delete:
|
case XK_Delete:
|
||||||
if(cursor == len)
|
if(text[cursor] == '\0')
|
||||||
return;
|
return;
|
||||||
cursor = nextrune(+1);
|
cursor = nextrune(+1);
|
||||||
case XK_BackSpace:
|
case XK_BackSpace:
|
||||||
|
@ -304,8 +307,8 @@ keypress(XKeyEvent *ev) {
|
||||||
insert(NULL, nextrune(-1) - cursor);
|
insert(NULL, nextrune(-1) - cursor);
|
||||||
break;
|
break;
|
||||||
case XK_End:
|
case XK_End:
|
||||||
if(cursor < len) {
|
if(text[cursor] != '\0') {
|
||||||
cursor = len;
|
cursor = strlen(text);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(next) {
|
if(next) {
|
||||||
|
@ -358,7 +361,7 @@ keypress(XKeyEvent *ev) {
|
||||||
fputs((sel && !(ev->state & ShiftMask)) ? sel->text : text, stdout);
|
fputs((sel && !(ev->state & ShiftMask)) ? sel->text : text, stdout);
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
case XK_Right:
|
case XK_Right:
|
||||||
if(cursor < len) {
|
if(text[cursor] != '\0') {
|
||||||
cursor = nextrune(+1);
|
cursor = nextrune(+1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -385,7 +388,7 @@ void
|
||||||
match(Bool sub) {
|
match(Bool sub) {
|
||||||
size_t len = strlen(text);
|
size_t len = strlen(text);
|
||||||
Item *lexact, *lprefix, *lsubstr, *exactend, *prefixend, *substrend;
|
Item *lexact, *lprefix, *lsubstr, *exactend, *prefixend, *substrend;
|
||||||
Item *item, *next = NULL;
|
Item *item, *next;
|
||||||
|
|
||||||
lexact = lprefix = lsubstr = exactend = prefixend = substrend = NULL;
|
lexact = lprefix = lsubstr = exactend = prefixend = substrend = NULL;
|
||||||
for(item = sub ? matches : items; item && item->text; item = next) {
|
for(item = sub ? matches : items; item && item->text; item = next) {
|
||||||
|
|
11
draw.c
11
draw.c
|
@ -15,12 +15,13 @@ static Bool loadfont(DC *dc, const char *fontstr);
|
||||||
|
|
||||||
void
|
void
|
||||||
drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsigned long color) {
|
drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsigned long color) {
|
||||||
XRectangle r = { dc->x + x, dc->y + y, w, h };
|
XRectangle r;
|
||||||
|
|
||||||
|
r.x = dc->x + x;
|
||||||
|
r.y = dc->y + y;
|
||||||
|
r.width = fill ? w : w-1;
|
||||||
|
r.height = fill ? h : h-1;
|
||||||
|
|
||||||
if(!fill) {
|
|
||||||
r.width -= 1;
|
|
||||||
r.height -= 1;
|
|
||||||
}
|
|
||||||
XSetForeground(dc->dpy, dc->gc, color);
|
XSetForeground(dc->dpy, dc->gc, color);
|
||||||
(fill ? XFillRectangles : XDrawRectangles)(dc->dpy, dc->canvas, dc->gc, &r, 1);
|
(fill ? XFillRectangles : XDrawRectangles)(dc->dpy, dc->canvas, dc->gc, &r, 1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue