[hackers] [st] Move X-specific selection info into XSelection || Devin J. Pohly

From: <git_AT_suckless.org>
Date: Fri, 9 Mar 2018 15:37:38 +0100 (CET)

commit 5683b1f80c5ac274adf98517ce2217b4d4896243
Author: Devin J. Pohly <djpohly_AT_gmail.com>
AuthorDate: Wed Feb 21 22:56:02 2018 -0600
Commit: Devin J. Pohly <djpohly_AT_gmail.com>
CommitDate: Sun Feb 25 21:53:24 2018 -0600

    Move X-specific selection info into XSelection
    
    Data about PRIMARY/CLIPBOARD and clicks are part of the front-end, not
    the terminal.
    
    Signed-off-by: Devin J. Pohly <djpohly_AT_gmail.com>

diff --git a/st.c b/st.c
index d4dfe6e..ea0726c 100644
--- a/st.c
+++ b/st.c
_AT_@ -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
index 8637d35..79dd47e 100644
--- a/st.h
+++ b/st.h
_AT_@ -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
index e3e5451..9f506b1 100644
--- a/x.c
+++ b/x.c
_AT_@ -94,6 +94,9 @@ typedef struct {
 
 typedef struct {
         Atom xtarget;
+ char *primary, *clipboard;
+ struct timespec tclick1;
+ struct timespec tclick2;
 } XSelection;
 
 /* Font structure */
_AT_@ -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);
         }
_AT_@ -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;
_AT_@ -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;
         }
 }
 
_AT_@ -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",
_AT_@ -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)
_AT_@ -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;
Received on Fri Mar 09 2018 - 15:37:38 CET

This archive was generated by hypermail 2.3.0 : Fri Mar 09 2018 - 15:50:13 CET