Introduction
Introduction Statistics Contact Development Disclaimer Help
tMove X-specific selection info into XSelection - st - [fork] customized build …
git clone git://src.adamsgaard.dk/st
Log
Files
Refs
README
LICENSE
---
commit 5683b1f80c5ac274adf98517ce2217b4d4896243
parent 138caf294ea4d7968df36ead9d5ff5fc49f6215f
Author: Devin J. Pohly <[email protected]>
Date: Wed, 21 Feb 2018 22:56:02 -0600
Move X-specific selection info into XSelection
Data about PRIMARY/CLIPBOARD and clicks are part of the front-end, not
tthe terminal.
Signed-off-by: Devin J. Pohly <[email protected]>
Diffstat:
M st.c | 4 ----
M st.h | 5 -----
M x.c | 31 +++++++++++++++++++----------…
3 files changed, 19 insertions(+), 21 deletions(-)
---
diff --git a/st.c b/st.c
t@@ -365,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
diff --git a/st.h b/st.h
t@@ -149,12 +149,7 @@ typedef struct {
int x, y;
} nb, ne, ob, oe;
- char *primary, *clipboard;
int alt;
- struct timespec tclick1;
- struct timespec tclick2;
-
- //Atom xtarget;
} Selection;
typedef union {
diff --git a/x.c b/x.c
t@@ -94,6 +94,9 @@ typedef struct {
typedef struct {
Atom xtarget;
+ char *primary, *clipboard;
+ struct timespec tclick1;
+ struct timespec tclick2;
} XSelection;
/* Font structure */
t@@ -234,11 +237,11 @@ clipcopy(const Arg *dummy)
{
Atom clipboard;
- if (sel.clipboard != NULL)
- free(sel.clipboard);
+ if (xsel.clipboard != NULL)
+ free(xsel.clipboard);
- if (sel.primary != NULL) {
- sel.clipboard = xstrdup(sel.primary);
+ if (xsel.primary != NULL) {
+ xsel.clipboard = xstrdup(xsel.primary);
clipboard = XInternAtom(xw.dpy, "CLIPBOARD", 0);
XSetSelectionOwner(xw.dpy, clipboard, xw.win, CurrentTime);
}
t@@ -427,9 +430,9 @@ bpress(XEvent *e)
* If the user clicks below predefined timeouts specific
* snapping behaviour is exposed.
*/
- if (TIMEDIFF(now, sel.tclick2) <= tripleclicktimeout) {
+ if (TIMEDIFF(now, xsel.tclick2) <= tripleclicktimeout) {
sel.snap = SNAP_LINE;
- } else if (TIMEDIFF(now, sel.tclick1) <= doubleclicktimeout) {
+ } else if (TIMEDIFF(now, xsel.tclick1) <= doubleclicktimeout) {
sel.snap = SNAP_WORD;
} else {
sel.snap = 0;
t@@ -439,8 +442,8 @@ bpress(XEvent *e)
if (sel.snap != 0)
sel.mode = SEL_READY;
tsetdirt(sel.nb.y, sel.ne.y);
- sel.tclick2 = sel.tclick1;
- sel.tclick1 = now;
+ xsel.tclick2 = xsel.tclick1;
+ xsel.tclick1 = now;
}
}
t@@ -594,9 +597,9 @@ selrequest(XEvent *e)
*/
clipboard = XInternAtom(xw.dpy, "CLIPBOARD", 0);
if (xsre->selection == XA_PRIMARY) {
- seltext = sel.primary;
+ seltext = xsel.primary;
} else if (xsre->selection == clipboard) {
- seltext = sel.clipboard;
+ seltext = xsel.clipboard;
} else {
fprintf(stderr,
"Unhandled clipboard selection 0x%lx\n",
t@@ -620,8 +623,8 @@ selrequest(XEvent *e)
void
setsel(char *str, Time t)
{
- free(sel.primary);
- sel.primary = str;
+ free(xsel.primary);
+ xsel.primary = str;
XSetSelectionOwner(xw.dpy, XA_PRIMARY, xw.win, t);
if (XGetSelectionOwner(xw.dpy, XA_PRIMARY) != xw.win)
t@@ -1127,6 +1130,10 @@ xinit(void)
xhints();
XSync(xw.dpy, False);
+ clock_gettime(CLOCK_MONOTONIC, &xsel.tclick1);
+ clock_gettime(CLOCK_MONOTONIC, &xsel.tclick2);
+ xsel.primary = NULL;
+ xsel.clipboard = NULL;
xsel.xtarget = XInternAtom(xw.dpy, "UTF8_STRING", 0);
if (xsel.xtarget == None)
xsel.xtarget = XA_STRING;
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.