Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Unhighlight selection when selection is owner by other window
[st.git]
/
st.c
diff --git
a/st.c
b/st.c
index
655d5a3
..
bf3993a
100644
(file)
--- a/
st.c
+++ b/
st.c
@@
-291,7
+291,7
@@
static void ttywrite(const char *, size_t);
static void xdraws(char *, Glyph, int, int, int, int);
static void xhints(void);
static void xclear(int, int, int, int);
static void xdraws(char *, Glyph, int, int, int, int);
static void xhints(void);
static void xclear(int, int, int, int);
-static void xcopy();
+static void xcopy(
void
);
static void xdrawcursor(void);
static void xinit(void);
static void xloadcols(void);
static void xdrawcursor(void);
static void xinit(void);
static void xloadcols(void);
@@
-311,12
+311,13
@@
static void brelease(XEvent *);
static void bpress(XEvent *);
static void bmotion(XEvent *);
static void selnotify(XEvent *);
static void bpress(XEvent *);
static void bmotion(XEvent *);
static void selnotify(XEvent *);
+static void selclear(XEvent *);
static void selrequest(XEvent *);
static void selinit(void);
static inline bool selected(int, int);
static void selcopy(void);
static void selrequest(XEvent *);
static void selinit(void);
static inline bool selected(int, int);
static void selcopy(void);
-static void selpaste();
+static void selpaste(
void
);
static void selscroll(int, int);
static int utf8decode(char *, long *);
static void selscroll(int, int);
static int utf8decode(char *, long *);
@@
-336,6
+337,7
@@
static void (*handler[LASTEvent])(XEvent *) = {
[MotionNotify] = bmotion,
[ButtonPress] = bpress,
[ButtonRelease] = brelease,
[MotionNotify] = bmotion,
[ButtonPress] = bpress,
[ButtonRelease] = brelease,
+ [SelectionClear] = selclear,
[SelectionNotify] = selnotify,
[SelectionRequest] = selrequest,
};
[SelectionNotify] = selnotify,
[SelectionRequest] = selrequest,
};
@@
-612,6
+614,13
@@
selpaste() {
XConvertSelection(xw.dpy, XA_PRIMARY, sel.xtarget, XA_PRIMARY, xw.win, CurrentTime);
}
XConvertSelection(xw.dpy, XA_PRIMARY, sel.xtarget, XA_PRIMARY, xw.win, CurrentTime);
}
+void selclear(XEvent *e) {
+ if(sel.bx == -1)
+ return;
+ sel.bx = -1;
+ tsetdirt(sel.b.y, sel.e.y);
+}
+
void
selrequest(XEvent *e) {
XSelectionRequestEvent *xsre;
void
selrequest(XEvent *e) {
XSelectionRequestEvent *xsre;
@@
-2059,7
+2068,7
@@
xdrawcursor(void) {
} else
xclear(oldx, oldy, oldx, oldy);
} else
xclear(oldx, oldy, oldx, oldy);
- xcopy(
oldx, oldy, 1, 1
);
+ xcopy();
/* draw the new one */
if(!(term.c.state & CURSOR_HIDE)) {
/* draw the new one */
if(!(term.c.state & CURSOR_HIDE)) {
@@
-2074,7
+2083,7
@@
xdrawcursor(void) {
oldx = term.c.x, oldy = term.c.y;
}
oldx = term.c.x, oldy = term.c.y;
}
- xcopy(
term.c.x, term.c.y, 1, 1
);
+ xcopy();
}
void
}
void