add support for utf8 clipboard. fix usage message.
This commit is contained in:
		
							
								
								
									
										10
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								st.c
									
									
									
									
									
								
							| @@ -32,7 +32,7 @@ | |||||||
|  |  | ||||||
| #define USAGE \ | #define USAGE \ | ||||||
| 	"st-" VERSION ", (c) 2010 st engineers\n" \ | 	"st-" VERSION ", (c) 2010 st engineers\n" \ | ||||||
| 	"usage: st [-t title] [-c class] [-e cmd] [-v]\n" | 	"usage: st [-t title] [-c class] [-v] [-e cmd]\n" | ||||||
|  |  | ||||||
| /* Arbitrary sizes */ | /* Arbitrary sizes */ | ||||||
| #define ESC_TITLE_SIZ 256 | #define ESC_TITLE_SIZ 256 | ||||||
| @@ -152,6 +152,7 @@ typedef struct { | |||||||
| 	int ex, ey; | 	int ex, ey; | ||||||
| 	struct {int x, y;}  b, e; | 	struct {int x, y;}  b, e; | ||||||
| 	char *clip; | 	char *clip; | ||||||
|  | 	Atom xtarget; | ||||||
| } Selection; | } Selection; | ||||||
|  |  | ||||||
| #include "config.h" | #include "config.h" | ||||||
| @@ -370,6 +371,9 @@ selinit(void) { | |||||||
| 	sel.mode = 0; | 	sel.mode = 0; | ||||||
| 	sel.bx = -1; | 	sel.bx = -1; | ||||||
| 	sel.clip = NULL; | 	sel.clip = NULL; | ||||||
|  | 	sel.xtarget = XInternAtom(xw.dpy, "UTF8_STRING", 0); | ||||||
|  | 	if(sel.xtarget == None) | ||||||
|  | 		sel.xtarget = XA_STRING; | ||||||
| } | } | ||||||
|  |  | ||||||
| static inline int  | static inline int  | ||||||
| @@ -453,7 +457,7 @@ selnotify(XEvent *e) { | |||||||
|  |  | ||||||
| void | void | ||||||
| selpaste() { | selpaste() { | ||||||
| 	XConvertSelection(xw.dpy, XA_PRIMARY, XA_STRING, XA_PRIMARY, xw.win, CurrentTime); | 	XConvertSelection(xw.dpy, XA_PRIMARY, sel.xtarget, XA_PRIMARY, xw.win, CurrentTime); | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
| @@ -474,7 +478,7 @@ selrequest(XEvent *e) { | |||||||
| 	xa_targets = XInternAtom(xw.dpy, "TARGETS", 0); | 	xa_targets = XInternAtom(xw.dpy, "TARGETS", 0); | ||||||
| 	if(xsre->target == xa_targets) { | 	if(xsre->target == xa_targets) { | ||||||
| 		/* respond with the supported type */ | 		/* respond with the supported type */ | ||||||
| 		Atom string = XA_STRING; | 		Atom string = sel.xtarget; | ||||||
| 		XChangeProperty(xsre->display, xsre->requestor, xsre->property, | 		XChangeProperty(xsre->display, xsre->requestor, xsre->property, | ||||||
| 				XA_ATOM, 32, PropModeReplace, | 				XA_ATOM, 32, PropModeReplace, | ||||||
| 				(unsigned char *) &string, 1); | 				(unsigned char *) &string, 1); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user