tRemoving dbe and introducing umlauts to titles. - st - [fork] customized build… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit e40d8da194cb02b400b09d2c8642f701c5c16821 | |
parent efaf1c2a94ed9193c04c3a67f374d31f988b0e9a | |
Author: Christoph Lohmann <[email protected]> | |
Date: Sat, 23 Feb 2013 21:44:06 +0100 | |
Removing dbe and introducing umlauts to titles. | |
Thanks Alexander Sedov <[email protected]> for the title patch! | |
Diffstat: | |
M st.c | 92 +++++++++++++----------------… | |
1 file changed, 39 insertions(+), 53 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -25,7 +25,6 @@ | |
#include <X11/Xutil.h> | |
#include <X11/cursorfont.h> | |
#include <X11/keysym.h> | |
-#include <X11/extensions/Xdbe.h> | |
#include <X11/Xft/Xft.h> | |
#include <fontconfig/fontconfig.h> | |
t@@ -351,6 +350,7 @@ static void xloadcols(void); | |
static int xsetcolorname(int, const char *); | |
static int xloadfont(Font *, FcPattern *); | |
static void xloadfonts(char *, int); | |
+static void xsettitle(char *); | |
static void xresettitle(void); | |
static void xseturgency(int); | |
static void xsetsel(char*); | |
t@@ -423,8 +423,6 @@ static char *opt_embed = NULL; | |
static char *opt_class = NULL; | |
static char *opt_font = NULL; | |
-bool usedbe = False; | |
- | |
static char *usedfont = NULL; | |
static int usedfontsize = 0; | |
t@@ -1862,7 +1860,6 @@ void | |
strhandle(void) { | |
char *p = NULL; | |
int i, j, narg; | |
- XTextProperty prop; | |
strparse(); | |
narg = strescseq.narg; | |
t@@ -1873,12 +1870,8 @@ strhandle(void) { | |
case 0: | |
case 1: | |
case 2: | |
- if(narg > 1) { | |
- p += 2; | |
- Xutf8TextListToTextProperty(xw.dpy, &p, 1, | |
- XUTF8StringStyle, &prop); | |
- XSetWMName(xw.dpy, xw.win, &prop); | |
- } | |
+ if(narg > 1) | |
+ xsettitle(strescseq.args[1]); | |
break; | |
case 4: /* color set */ | |
if(narg < 3) | |
t@@ -1890,7 +1883,11 @@ strhandle(void) { | |
if (!xsetcolorname(j, p)) { | |
fprintf(stderr, "erresc: invalid color %s\n", … | |
} else { | |
- redraw(0); /* TODO if defaultbg color is chang… | |
+ /* | |
+ * TODO if defaultbg color is changed, borders | |
+ * are dirty | |
+ */ | |
+ redraw(0); | |
} | |
break; | |
default: | |
t@@ -1900,10 +1897,7 @@ strhandle(void) { | |
} | |
break; | |
case 'k': /* old title set compatibility */ | |
- p += 1; | |
- Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, | |
- &prop); | |
- XSetWMName(xw.dpy, xw.win, &prop); | |
+ xsettitle(strescseq.args[0]); | |
break; | |
case 'P': /* DSC -- Device Control String */ | |
case '_': /* APC -- Application Program Command */ | |
t@@ -2338,13 +2332,11 @@ xresize(int col, int row) { | |
xw.tw = MAX(1, col * xw.cw); | |
xw.th = MAX(1, row * xw.ch); | |
- if(!usedbe) { | |
- XFreePixmap(xw.dpy, xw.buf); | |
- xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, | |
- DefaultDepth(xw.dpy, xw.scr)); | |
- XSetForeground(xw.dpy, dc.gc, dc.col[IS_SET(MODE_REVERSE) ? de… | |
- XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h); | |
- } | |
+ XFreePixmap(xw.dpy, xw.buf); | |
+ xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, | |
+ DefaultDepth(xw.dpy, xw.scr)); | |
+ XSetForeground(xw.dpy, dc.gc, dc.col[IS_SET(MODE_REVERSE) ? defaultfg … | |
+ XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h); | |
XftDrawChange(xw.draw, xw.buf); | |
} | |
t@@ -2606,7 +2598,7 @@ xinit(void) { | |
XGCValues gcvalues; | |
Cursor cursor; | |
Window parent; | |
- int sw, sh, major, minor; | |
+ int sw, sh; | |
if(!(xw.dpy = XOpenDisplay(NULL))) | |
die("Can't open display\n"); | |
t@@ -2661,26 +2653,14 @@ xinit(void) { | |
| CWColormap, | |
&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)); | |
- gcvalues.graphics_exposures = False; | |
- dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures, | |
- &gcvalues); | |
- xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, | |
- DefaultDepth(xw.dpy, xw.scr)); | |
- XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); | |
- XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h); | |
- //xw.buf = xw.win; | |
- /* | |
- } | |
- */ | |
+ memset(&gcvalues, 0, sizeof(gcvalues)); | |
+ gcvalues.graphics_exposures = False; | |
+ dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures, | |
+ &gcvalues); | |
+ xw.buf = XCreatePixmap(xw.dpy, xw.win, xw.w, xw.h, | |
+ DefaultDepth(xw.dpy, xw.scr)); | |
+ XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); | |
+ XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h); | |
/* Xft rendering context */ | |
xw.draw = XftDrawCreate(xw.dpy, xw.buf, xw.vis, xw.cmap); | |
t@@ -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 | |
xresettitle(void) { | |
- XStoreName(xw.dpy, xw.win, opt_title ? opt_title : "st"); | |
+ xsettitle(opt_title ? opt_title : "st"); | |
} | |
void | |
t@@ -2991,16 +2981,12 @@ redraw(int timeout) { | |
void | |
draw(void) { | |
- XdbeSwapInfo swpinfo[1] = {{xw.win, XdbeCopied}}; | |
- | |
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, | |
- xw.h, 0, 0); | |
- XSetForeground(xw.dpy, dc.gc, dc.col[IS_SET(MODE_REVERSE) ? de… | |
- } | |
+ XCopyArea(xw.dpy, xw.buf, xw.win, dc.gc, 0, 0, xw.w, | |
+ xw.h, 0, 0); | |
+ XSetForeground(xw.dpy, dc.gc, | |
+ dc.col[IS_SET(MODE_REVERSE)? | |
+ defaultfg : defaultbg].pixel); | |
} | |
void |