Removing dbe and introducing umlauts to titles.
Thanks Alexander Sedov <alex0player@gmail.com> for the title patch!
This commit is contained in:
		
							
								
								
									
										62
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										62
									
								
								st.c
									
									
									
									
									
								
							| @@ -25,7 +25,6 @@ | |||||||
| #include <X11/Xutil.h> | #include <X11/Xutil.h> | ||||||
| #include <X11/cursorfont.h> | #include <X11/cursorfont.h> | ||||||
| #include <X11/keysym.h> | #include <X11/keysym.h> | ||||||
| #include <X11/extensions/Xdbe.h> |  | ||||||
| #include <X11/Xft/Xft.h> | #include <X11/Xft/Xft.h> | ||||||
| #include <fontconfig/fontconfig.h> | #include <fontconfig/fontconfig.h> | ||||||
|  |  | ||||||
| @@ -351,6 +350,7 @@ static void xloadcols(void); | |||||||
| static int xsetcolorname(int, const char *); | static int xsetcolorname(int, const char *); | ||||||
| static int xloadfont(Font *, FcPattern *); | static int xloadfont(Font *, FcPattern *); | ||||||
| static void xloadfonts(char *, int); | static void xloadfonts(char *, int); | ||||||
|  | static void xsettitle(char *); | ||||||
| static void xresettitle(void); | static void xresettitle(void); | ||||||
| static void xseturgency(int); | static void xseturgency(int); | ||||||
| static void xsetsel(char*); | static void xsetsel(char*); | ||||||
| @@ -423,8 +423,6 @@ static char *opt_embed = NULL; | |||||||
| static char *opt_class = NULL; | static char *opt_class = NULL; | ||||||
| static char *opt_font = NULL; | static char *opt_font = NULL; | ||||||
|  |  | ||||||
| bool usedbe = False; |  | ||||||
|  |  | ||||||
| static char *usedfont = NULL; | static char *usedfont = NULL; | ||||||
| static int usedfontsize = 0; | static int usedfontsize = 0; | ||||||
|  |  | ||||||
| @@ -1862,7 +1860,6 @@ void | |||||||
| strhandle(void) { | strhandle(void) { | ||||||
| 	char *p = NULL; | 	char *p = NULL; | ||||||
| 	int i, j, narg; | 	int i, j, narg; | ||||||
| 	XTextProperty prop; |  | ||||||
|  |  | ||||||
| 	strparse(); | 	strparse(); | ||||||
| 	narg = strescseq.narg; | 	narg = strescseq.narg; | ||||||
| @@ -1873,12 +1870,8 @@ strhandle(void) { | |||||||
| 		case 0: | 		case 0: | ||||||
| 		case 1: | 		case 1: | ||||||
| 		case 2: | 		case 2: | ||||||
| 			if(narg > 1) { | 			if(narg > 1) | ||||||
| 				p += 2; | 				xsettitle(strescseq.args[1]); | ||||||
| 				Xutf8TextListToTextProperty(xw.dpy, &p, 1, |  | ||||||
| 						XUTF8StringStyle, &prop); |  | ||||||
| 				XSetWMName(xw.dpy, xw.win, &prop); |  | ||||||
| 			} |  | ||||||
| 			break; | 			break; | ||||||
| 		case 4: /* color set */ | 		case 4: /* color set */ | ||||||
| 			if(narg < 3) | 			if(narg < 3) | ||||||
| @@ -1890,7 +1883,11 @@ strhandle(void) { | |||||||
| 			if (!xsetcolorname(j, p)) { | 			if (!xsetcolorname(j, p)) { | ||||||
| 				fprintf(stderr, "erresc: invalid color %s\n", p); | 				fprintf(stderr, "erresc: invalid color %s\n", p); | ||||||
| 			} else { | 			} else { | ||||||
| 				redraw(0); /* TODO if defaultbg color is changed, borders are dirty */ | 				/* | ||||||
|  | 				 * TODO if defaultbg color is changed, borders | ||||||
|  | 				 * are dirty | ||||||
|  | 				 */ | ||||||
|  | 				redraw(0); | ||||||
| 			} | 			} | ||||||
| 			break; | 			break; | ||||||
| 		default: | 		default: | ||||||
| @@ -1900,10 +1897,7 @@ strhandle(void) { | |||||||
| 		} | 		} | ||||||
| 		break; | 		break; | ||||||
| 	case 'k': /* old title set compatibility */ | 	case 'k': /* old title set compatibility */ | ||||||
| 		p += 1; | 		xsettitle(strescseq.args[0]); | ||||||
| 		Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, |  | ||||||
| 				&prop); |  | ||||||
| 		XSetWMName(xw.dpy, xw.win, &prop); |  | ||||||
| 		break; | 		break; | ||||||
| 	case 'P': /* DSC -- Device Control String */ | 	case 'P': /* DSC -- Device Control String */ | ||||||
| 	case '_': /* APC -- Application Program Command */ | 	case '_': /* APC -- Application Program Command */ | ||||||
| @@ -2338,13 +2332,11 @@ xresize(int col, int row) { | |||||||
| 	xw.tw = MAX(1, col * xw.cw); | 	xw.tw = MAX(1, col * xw.cw); | ||||||
| 	xw.th = MAX(1, row * xw.ch); | 	xw.th = MAX(1, row * xw.ch); | ||||||
|  |  | ||||||
| 	if(!usedbe) { |  | ||||||
| 	XFreePixmap(xw.dpy, xw.buf); | 	XFreePixmap(xw.dpy, xw.buf); | ||||||
| 	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, | 	xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, | ||||||
| 			DefaultDepth(xw.dpy, xw.scr)); | 			DefaultDepth(xw.dpy, xw.scr)); | ||||||
| 	XSetForeground(xw.dpy, dc.gc, dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg].pixel); | 	XSetForeground(xw.dpy, dc.gc, dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg].pixel); | ||||||
| 	XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h); | 	XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h); | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	XftDrawChange(xw.draw, xw.buf); | 	XftDrawChange(xw.draw, xw.buf); | ||||||
| } | } | ||||||
| @@ -2606,7 +2598,7 @@ xinit(void) { | |||||||
| 	XGCValues gcvalues; | 	XGCValues gcvalues; | ||||||
| 	Cursor cursor; | 	Cursor cursor; | ||||||
| 	Window parent; | 	Window parent; | ||||||
| 	int sw, sh, major, minor; | 	int sw, sh; | ||||||
|  |  | ||||||
| 	if(!(xw.dpy = XOpenDisplay(NULL))) | 	if(!(xw.dpy = XOpenDisplay(NULL))) | ||||||
| 		die("Can't open display\n"); | 		die("Can't open display\n"); | ||||||
| @@ -2661,14 +2653,6 @@ xinit(void) { | |||||||
| 			| CWColormap, | 			| CWColormap, | ||||||
| 			&attrs); | 			&attrs); | ||||||
|  |  | ||||||
| 	/* double buffering */ |  | ||||||
| 	/* |  | ||||||
| 	if(XdbeQueryExtension(xw.dpy, &major, &minor)) { |  | ||||||
| 		xw.buf = XdbeAllocateBackBufferName(xw.dpy, xw.win, |  | ||||||
| 				XdbeBackground); |  | ||||||
| 		usedbe = True; |  | ||||||
| 	} else { |  | ||||||
| 	*/ |  | ||||||
| 	memset(&gcvalues, 0, sizeof(gcvalues)); | 	memset(&gcvalues, 0, sizeof(gcvalues)); | ||||||
| 	gcvalues.graphics_exposures = False; | 	gcvalues.graphics_exposures = False; | ||||||
| 	dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures, | 	dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures, | ||||||
| @@ -2677,10 +2661,6 @@ xinit(void) { | |||||||
| 			DefaultDepth(xw.dpy, xw.scr)); | 			DefaultDepth(xw.dpy, xw.scr)); | ||||||
| 	XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); | 	XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); | ||||||
| 	XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h); | 	XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h); | ||||||
| 		//xw.buf = xw.win; |  | ||||||
| 	/* |  | ||||||
| 	} |  | ||||||
| 	*/ |  | ||||||
|  |  | ||||||
| 	/* Xft rendering context */ | 	/* Xft rendering context */ | ||||||
| 	xw.draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap); | 	xw.draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap); | ||||||
| @@ -2971,9 +2951,19 @@ xdrawcursor(void) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | void | ||||||
|  | xsettitle(char *p) { | ||||||
|  | 	XTextProperty prop; | ||||||
|  |  | ||||||
|  | 	Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, | ||||||
|  | 			&prop); | ||||||
|  | 	XSetWMName(xw.dpy, xw.win, &prop); | ||||||
|  | } | ||||||
|  |  | ||||||
| void | void | ||||||
| xresettitle(void) { | xresettitle(void) { | ||||||
| 	XStoreName(xw.dpy, xw.win, opt_title ? opt_title : "st"); | 	xsettitle(opt_title ? opt_title : "st"); | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
| @@ -2991,16 +2981,12 @@ redraw(int timeout) { | |||||||
|  |  | ||||||
| void | void | ||||||
| draw(void) { | draw(void) { | ||||||
| 	XdbeSwapInfo swpinfo[1] = {{xw.win, XdbeCopied}}; |  | ||||||
|  |  | ||||||
| 	drawregion(0, 0, term.col, term.row); | 	drawregion(0, 0, term.col, term.row); | ||||||
| 	if(usedbe) { |  | ||||||
| 		XdbeSwapBuffers(xw.dpy, swpinfo, 1); |  | ||||||
| 	} else { |  | ||||||
| 	XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w, | 	XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w, | ||||||
| 			xw.h, 0, 0); | 			xw.h, 0, 0); | ||||||
| 		XSetForeground(xw.dpy, dc.gc, dc.col[IS_SET(MODE_REVERSE) ? defaultfg : defaultbg].pixel); | 	XSetForeground(xw.dpy, dc.gc, | ||||||
| 	} | 			dc.col[IS_SET(MODE_REVERSE)? | ||||||
|  | 				defaultfg : defaultbg].pixel); | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user