all repos — st @ f471a32d29ad9e5e06cf5e5d5efc8422483f535e

st (suckless terminal) config

Unhighlight selection when selection is owner by other window

st marks the active selection using reverse colors in the box selection, but
once that another window becomes owner of the selection, it is very
confusing that st keeps highlight the old selection. Usually terminal
emulators remove the highlight when it is not valid anymore.

X sends a SelectionClear event in this situation, so we only have to add a
callback which unhighlight the selectin box.
---
 st.c |    9 +++++++++
 1 file changed, 9 insertions(+)
Roberto E. Vargas Caballero k0ga@shike2.com
commit

f471a32d29ad9e5e06cf5e5d5efc8422483f535e

parent

017af76f5c89fa1acf9b54ceaad2101dcfd880a0

1 files changed, 9 insertions(+), 0 deletions(-)

jump to
M st.cst.c

@@ -311,6 +311,7 @@ static void brelease(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);

@@ -336,6 +337,7 @@ [FocusOut] = focus,

[MotionNotify] = bmotion, [ButtonPress] = bpress, [ButtonRelease] = brelease, + [SelectionClear] = selclear, [SelectionNotify] = selnotify, [SelectionRequest] = selrequest, };

@@ -610,6 +612,13 @@

void selpaste() { 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