Removing dbe and introducing umlauts to titles. Thanks Alexander Sedov <alex0player@gmail.com> for the title patch!
Christoph Lohmann 20h@r-36.net
1 files changed,
39 insertions(+),
53 deletions(-)
jump to
M
st.c
→
st.c
@@ -25,7 +25,6 @@ #include <X11/Xlib.h>
#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>@@ -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*);@@ -422,8 +422,6 @@ static char *opt_title = NULL;
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;@@ -1862,7 +1860,6 @@ void
strhandle(void) { char *p = NULL; int i, j, narg; - XTextProperty prop; strparse(); narg = strescseq.narg;@@ -1873,12 +1870,8 @@ switch(i = atoi(strescseq.args[0])) {
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)@@ -1890,7 +1883,11 @@ j = (narg > 1) ? atoi(strescseq.args[1]) : -1;
if (!xsetcolorname(j, p)) { fprintf(stderr, "erresc: invalid color %s\n", p); } else { - redraw(0); /* TODO if defaultbg color is changed, borders are dirty */ + /* + * TODO if defaultbg color is changed, borders + * are dirty + */ + redraw(0); } break; default:@@ -1900,10 +1897,7 @@ break;
} 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 */@@ -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) ? defaultfg : defaultbg].pixel); - 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 : defaultbg].pixel); + XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, xw.w, xw.h); XftDrawChange(xw.draw, xw.buf); }@@ -2606,7 +2598,7 @@ XSetWindowAttributes attrs;
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");@@ -2661,26 +2653,14 @@ CWBackPixel | CWBorderPixel | CWBitGravity | CWEventMask
| 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);@@ -2971,9 +2951,19 @@ oldx = term.c.x, oldy = term.c.y;
} } + +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@@ -2991,16 +2981,12 @@ }
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) ? defaultfg : defaultbg].pixel); - } + 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