Commit Diff


commit - e03f2c40696291e806b38fbc372c51f0556179cc
commit + b9b653584e8622fc5d23e8f761a88b415f2f0167
blob - bc8dc218eb9e928916205d9a8f5d6ca8bd37f843
blob + 538028da9860e286ded1e59d990fdb1a4ba7511f
--- src/libdraw/x11-itrans.c
+++ src/libdraw/x11-itrans.c
@@ -516,14 +516,18 @@ if(0) fprint(2, "xselect target=%d requestor=%d proper
 
 		XChangeProperty(xd, xe->requestor, xe->property, xe->target,
 			8, PropModeReplace, (uchar*)a, sizeof a);
-	}else if(xe->target == XA_STRING || xe->target == _x.utf8string || xe->target == _x.text || xe->target == _x.compoundtext){
+	}else if(xe->target == XA_STRING 
+	|| xe->target == _x.utf8string 
+	|| xe->target == _x.text 
+	|| xe->target == _x.compoundtext
+	|| ((name = XGetAtomName(xd, xe->target)) && strcmp(name, "text/plain;charset=UTF-8") == 0)){
+		/* text/plain;charset=UTF-8 seems nonstandard but is used by Synergy */
 		/* if the target is STRING we're supposed to reply with Latin1 XXX */
 		qlock(&clip.lk);
 		XChangeProperty(xd, xe->requestor, xe->property, xe->target,
 			8, PropModeReplace, (uchar*)clip.buf, strlen(clip.buf));
 		qunlock(&clip.lk);
 	}else{
-		name = XGetAtomName(xd, xe->target);
 		if(strcmp(name, "TIMESTAMP") != 0)
 			fprint(2, "%s: cannot handle selection request for '%s' (%d)\n", argv0, name, (int)xe->target);
 		r.xselection.property = None;