X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=st.c;h=ea0726cd267532ef878655868c75dbfc4d920e59;hb=5683b1f80c5ac274adf98517ce2217b4d4896243;hp=ec747cc4f3dd8caafca8d772a023c992e9bf20b8;hpb=65976c1a29f2945c3cfb6af74cd6440cf193021d;p=st.git diff --git a/st.c b/st.c index ec747cc..ea0726c 100644 --- a/st.c +++ b/st.c @@ -21,13 +21,8 @@ #include #include #include -#include #include -/* X11 */ -#include -#include - #include "st.h" #include "win.h" @@ -170,7 +165,6 @@ static char *base64dec(const char *); static ssize_t xwrite(int, const char *, size_t); /* Globals */ -TermWindow win; Term term; Selection sel; int cmdfd; @@ -371,13 +365,9 @@ base64dec(const char *src) void selinit(void) { - clock_gettime(CLOCK_MONOTONIC, &sel.tclick1); - clock_gettime(CLOCK_MONOTONIC, &sel.tclick2); sel.mode = SEL_IDLE; sel.snap = 0; sel.ob.x = -1; - sel.primary = NULL; - sel.clipboard = NULL; } int @@ -425,7 +415,8 @@ selnormalize(void) int selected(int x, int y) { - if (sel.mode == SEL_EMPTY) + if (sel.mode == SEL_EMPTY || sel.ob.x == -1 || + sel.alt != IS_SET(MODE_ALTSCREEN)) return 0; if (sel.type == SEL_RECTANGULAR) @@ -676,7 +667,6 @@ void ttynew(char *line, char *out, char **args) { int m, s; - struct winsize w = {term.row, term.col, 0, 0}; if (out) { term.mode |= MODE_PRINT; @@ -697,7 +687,7 @@ ttynew(char *line, char *out, char **args) } /* seems to work fine on linux, openbsd and freebsd */ - if (openpty(&m, &s, NULL, NULL, &w) < 0) + if (openpty(&m, &s, NULL, NULL, NULL) < 0) die("openpty failed: %s\n", strerror(errno)); switch (pid = fork()) { @@ -1683,11 +1673,8 @@ csihandle(void) case ' ': switch (csiescseq.mode[1]) { case 'q': /* DECSCUSR -- Set Cursor Style */ - DEFAULT(csiescseq.arg[0], 1); - if (!BETWEEN(csiescseq.arg[0], 0, 6)) { + if (xsetcursor(csiescseq.arg[0])) goto unknown; - } - win.cursor = csiescseq.arg[0]; break; default: goto unknown; @@ -1751,7 +1738,7 @@ strhandle(void) dec = base64dec(strescseq.args[2]); if (dec) { - xsetsel(dec, CurrentTime); + xsetsel(dec); xclipcopy(); } else { fprintf(stderr, "erresc: invalid base64\n");