Merge branch 'master' of ssh://suckless.org/gitrepos/st
commit
83e73c6242
23
st.c
23
st.c
|
@ -423,7 +423,7 @@ static void xsettitle(char *);
|
||||||
static void xresettitle(void);
|
static void xresettitle(void);
|
||||||
static void xsetpointermotion(int);
|
static void xsetpointermotion(int);
|
||||||
static void xseturgency(int);
|
static void xseturgency(int);
|
||||||
static void xsetsel(char *);
|
static void xsetsel(char *, Time);
|
||||||
static void xtermclear(int, int, int, int);
|
static void xtermclear(int, int, int, int);
|
||||||
static void xunloadfont(Font *);
|
static void xunloadfont(Font *);
|
||||||
static void xunloadfonts(void);
|
static void xunloadfonts(void);
|
||||||
|
@ -449,7 +449,7 @@ static void selinit(void);
|
||||||
static void selnormalize(void);
|
static void selnormalize(void);
|
||||||
static inline bool selected(int, int);
|
static inline bool selected(int, int);
|
||||||
static char *getsel(void);
|
static char *getsel(void);
|
||||||
static void selcopy(void);
|
static void selcopy(Time);
|
||||||
static void selscroll(int, int);
|
static void selscroll(int, int);
|
||||||
static void selsnap(int, int *, int *, int);
|
static void selsnap(int, int *, int *, int);
|
||||||
static int x2col(int);
|
static int x2col(int);
|
||||||
|
@ -984,8 +984,8 @@ getsel(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
selcopy(void) {
|
selcopy(Time t) {
|
||||||
xsetsel(getsel());
|
xsetsel(getsel(), t);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -997,7 +997,7 @@ selnotify(XEvent *e) {
|
||||||
XSelectionEvent *xsev;
|
XSelectionEvent *xsev;
|
||||||
|
|
||||||
ofs = 0;
|
ofs = 0;
|
||||||
xsev = (XSelectionEvent *)e;
|
xsev = &e->xselection;
|
||||||
if (xsev->property == None)
|
if (xsev->property == None)
|
||||||
return;
|
return;
|
||||||
do {
|
do {
|
||||||
|
@ -1083,6 +1083,9 @@ selrequest(XEvent *e) {
|
||||||
xev.selection = xsre->selection;
|
xev.selection = xsre->selection;
|
||||||
xev.target = xsre->target;
|
xev.target = xsre->target;
|
||||||
xev.time = xsre->time;
|
xev.time = xsre->time;
|
||||||
|
if (xsre->property == None)
|
||||||
|
xsre->property = xsre->target;
|
||||||
|
|
||||||
/* reject */
|
/* reject */
|
||||||
xev.property = None;
|
xev.property = None;
|
||||||
|
|
||||||
|
@ -1125,11 +1128,13 @@ selrequest(XEvent *e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xsetsel(char *str) {
|
xsetsel(char *str, Time t) {
|
||||||
free(sel.primary);
|
free(sel.primary);
|
||||||
sel.primary = str;
|
sel.primary = str;
|
||||||
|
|
||||||
XSetSelectionOwner(xw.dpy, XA_PRIMARY, xw.win, CurrentTime);
|
XSetSelectionOwner(xw.dpy, XA_PRIMARY, xw.win, t);
|
||||||
|
if (XGetSelectionOwner(xw.dpy, XA_PRIMARY) != xw.win)
|
||||||
|
selclear(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1146,7 +1151,7 @@ brelease(XEvent *e) {
|
||||||
selclear(NULL);
|
selclear(NULL);
|
||||||
} else {
|
} else {
|
||||||
getbuttoninfo(e);
|
getbuttoninfo(e);
|
||||||
selcopy();
|
selcopy(e->xbutton.time);
|
||||||
}
|
}
|
||||||
sel.mode = 0;
|
sel.mode = 0;
|
||||||
tsetdirt(sel.nb.y, sel.ne.y);
|
tsetdirt(sel.nb.y, sel.ne.y);
|
||||||
|
@ -2390,7 +2395,7 @@ tputtab(int n) {
|
||||||
for(--x; x > 0 && !term.tabs[x]; --x)
|
for(--x; x > 0 && !term.tabs[x]; --x)
|
||||||
/* nothing */ ;
|
/* nothing */ ;
|
||||||
}
|
}
|
||||||
tmoveto(x, term.c.y);
|
term.c.x = LIMIT(x, 0, term.col-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Reference in New Issue