|
@ -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) { |
|
|
|
|
|
xsetsel(getsel()); |
|
|
|
|
|
|
|
|
selcopy(Time t) { |
|
|
|
|
|
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 |
|
|