This patch adds UTF8 clipboard support via UTF8_STRING, if it's available. This
is needed to correctly exchange UTF8 data with other applications.
-- Petr
--- st.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/st.c b/st.c index 561d5b0..366f681 100644 --- a/st.c +++ b/st.c @@ -248,6 +248,7 @@ static CSIEscape escseq; static int cmdfd; static pid_t pid; static Selection sel; +static Atom seltarget; static char **opt_cmd = NULL; static char *opt_title = NULL; static char *opt_class = NULL; @@ -370,6 +371,9 @@ selinit(void) { sel.mode = 0; sel.bx = -1; sel.clip = NULL; + seltarget = XInternAtom(xw.dpy, "UTF8_STRING", 0); + if (seltarget == None) + seltarget = XA_STRING; } static inline int @@ -453,7 +457,7 @@ selnotify(XEvent *e) { void selpaste() { - XConvertSelection(xw.dpy, XA_PRIMARY, XA_STRING, XA_PRIMARY, xw.win, CurrentTime); + XConvertSelection(xw.dpy, XA_PRIMARY, seltarget, XA_PRIMARY, xw.win, CurrentTime); } void @@ -474,12 +478,12 @@ selrequest(XEvent *e) { xa_targets = XInternAtom(xw.dpy, "TARGETS", 0); if(xsre->target == xa_targets) { /* respond with the supported type */ - Atom string = XA_STRING; + Atom string = seltarget; XChangeProperty(xsre->display, xsre->requestor, xsre->property, XA_ATOM, 32, PropModeReplace, (unsigned char *) &string, 1); xev.property = xsre->property; - } else if(xsre->target == XA_STRING) { + } else if(xsre->target == seltarget || xsre->target == XA_STRING) { XChangeProperty(xsre->display, xsre->requestor, xsre->property, xsre->target, 8, PropModeReplace, (unsigned char *) sel.clip, strlen(sel.clip)); -- 1.7.4Received on Sat Apr 02 2011 - 18:11:24 CEST
This archive was generated by hypermail 2.2.0 : Sat Apr 02 2011 - 18:24:01 CEST