|
|
|
@ -210,8 +210,6 @@ static int cmdfd; |
|
|
|
|
static pid_t pid; |
|
|
|
|
static Selection sel; |
|
|
|
|
|
|
|
|
|
/* TODO: use X11 clipboard */ |
|
|
|
|
|
|
|
|
|
static inline int selected(int x, int y) { |
|
|
|
|
if ((sel.ey==y && sel.by==y)) { |
|
|
|
|
int bx = MIN(sel.bx, sel.ex); |
|
|
|
@ -262,6 +260,7 @@ static char *getseltext() { |
|
|
|
|
return str; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* TODO: use X11 clipboard */ |
|
|
|
|
static void clipboard_copy(char *str) { |
|
|
|
|
free(sel.clip); |
|
|
|
|
sel.clip = str; |
|
|
|
@ -272,7 +271,7 @@ static void clipboard_paste() { |
|
|
|
|
ttywrite(sel.clip, strlen(sel.clip)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// TODO: doubleclick to select word
|
|
|
|
|
/* TODO: doubleclick to select word */ |
|
|
|
|
static void brelease(XEvent *e) { |
|
|
|
|
int b; |
|
|
|
|
sel.mode = 0; |
|
|
|
@ -1214,9 +1213,14 @@ xinit(void) { |
|
|
|
|
xw.bufw = xw.w - 2*BORDER; |
|
|
|
|
xw.bufh = xw.h - 2*BORDER; |
|
|
|
|
xw.buf = XCreatePixmap(xw.dis, xw.win, xw.bufw, xw.bufh, XDefaultDepth(xw.dis, xw.scr)); |
|
|
|
|
xw.hasfocus = 1; |
|
|
|
|
/* gc */ |
|
|
|
|
dc.gc = XCreateGC(xw.dis, xw.win, 0, NULL); |
|
|
|
|
|
|
|
|
|
/* event mask */ |
|
|
|
|
XSelectInput(xw.dis, xw.win, ExposureMask | KeyPressMask |
|
|
|
|
| StructureNotifyMask | FocusChangeMask | PointerMotionMask |
|
|
|
|
| ButtonPressMask | ButtonReleaseMask); |
|
|
|
|
|
|
|
|
|
XMapWindow(xw.dis, xw.win); |
|
|
|
|
xhints(); |
|
|
|
|
XStoreName(xw.dis, xw.win, "st"); |
|
|
|
@ -1435,12 +1439,6 @@ run(void) { |
|
|
|
|
XEvent ev; |
|
|
|
|
fd_set rfd; |
|
|
|
|
int xfd = XConnectionNumber(xw.dis); |
|
|
|
|
long mask = ExposureMask | KeyPressMask | StructureNotifyMask |
|
|
|
|
| FocusChangeMask | PointerMotionMask | ButtonPressMask
|
|
|
|
|
| ButtonReleaseMask; |
|
|
|
|
|
|
|
|
|
XSelectInput(xw.dis, xw.win, mask); |
|
|
|
|
XResizeWindow(xw.dis, xw.win, xw.w, xw.h); /* XXX: fix resize bug in wmii (?) */ |
|
|
|
|
|
|
|
|
|
for(;;) { |
|
|
|
|
FD_ZERO(&rfd); |
|
|
|
|