tfix default color overwriten bug. - st - [fork] customized build of st, the si… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 751fb765e4f26ce1500b4e8ee9f4cd5b6039b495 | |
parent be2877cd042eaf5d0f7dda102f526357aa577232 | |
Author: Aurélien Aptel <[email protected]> | |
Date: Thu, 16 Feb 2012 00:10:32 +0100 | |
fix default color overwriten bug. | |
Diffstat: | |
M config.def.h | 8 +++++--- | |
M st.c | 41 +++++++++++++++++------------… | |
2 files changed, 28 insertions(+), 21 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -30,7 +30,9 @@ static const char *colorname[] = { | |
"cyan", | |
"white", | |
- /* more colors can be added to use with DefaultXX */ | |
+ [255] = 0, | |
+ | |
+ /* more colors can be added after 255 to use with DefaultXX */ | |
"#cccccc", | |
"#333333", | |
}; | |
t@@ -39,8 +41,8 @@ static const char *colorname[] = { | |
foreground, background, cursor, unfocused cursor */ | |
#define DefaultFG 7 | |
#define DefaultBG 0 | |
-#define DefaultCS 16 | |
-#define DefaultUCS 17 | |
+#define DefaultCS 256 | |
+#define DefaultUCS 257 | |
/* Special keys (change & recompile st.info accordingly) | |
Keep in mind that kpress() in st.c hardcodes some keys. | |
diff --git a/st.c b/st.c | |
t@@ -83,13 +83,14 @@ enum { B0=1, B1=2, B2=4, B3=8, B4=16, B5=32, B6=64, B7=128… | |
typedef unsigned char uchar; | |
typedef unsigned int uint; | |
typedef unsigned long ulong; | |
+typedef unsigned short ushort; | |
typedef struct { | |
char c[UTF_SIZ]; /* character code */ | |
uchar mode; /* attribute flags */ | |
- uchar fg; /* foreground */ | |
- uchar bg; /* background */ | |
- uchar state; /* state flags */ | |
+ ushort fg; /* foreground */ | |
+ ushort bg; /* background */ | |
+ uchar state; /* state flags */ | |
} Glyph; | |
typedef Glyph* Line; | |
t@@ -154,18 +155,6 @@ typedef struct { | |
char s[ESC_BUF_SIZ]; | |
} Key; | |
-/* Drawing Context */ | |
-typedef struct { | |
- ulong col[256]; | |
- GC gc; | |
- struct { | |
- int ascent; | |
- int descent; | |
- short lbearing; | |
- short rbearing; | |
- XFontSet set; | |
- } font, bfont; | |
-} DC; | |
/* TODO: use better name for vars... */ | |
typedef struct { | |
t@@ -181,6 +170,19 @@ typedef struct { | |
#include "config.h" | |
+/* Drawing Context */ | |
+typedef struct { | |
+ ulong col[LEN(colorname) < 256 ? 256 : LEN(colorname)]; | |
+ GC gc; | |
+ struct { | |
+ int ascent; | |
+ int descent; | |
+ short lbearing; | |
+ short rbearing; | |
+ XFontSet set; | |
+ } font, bfont; | |
+} DC; | |
+ | |
static void die(const char*, ...); | |
static void draw(void); | |
static void drawregion(int, int, int, int); | |
t@@ -1583,16 +1585,19 @@ xloadcols(void) { | |
XColor color; | |
ulong white = WhitePixel(xw.dpy, xw.scr); | |
+ /* load colors [0-15] colors and [256-LEN(colorname)[ (config.h) */ | |
for(i = 0; i < LEN(colorname); i++) { | |
+ if(!colorname[i]) | |
+ continue; | |
if(!XAllocNamedColor(xw.dpy, xw.cmap, colorname[i], &color, &c… | |
dc.col[i] = white; | |
fprintf(stderr, "Could not allocate color '%s'\n", col… | |
} else | |
dc.col[i] = color.pixel; | |
} | |
- | |
- /* same colors as xterm */ | |
- for(r = 0; r < 6; r++) | |
+ | |
+ /* load colors [16-255] ; same colors as xterm */ | |
+ for(i = 16, r = 0; r < 6; r++) | |
for(g = 0; g < 6; g++) | |
for(b = 0; b < 6; b++) { | |
color.red = r == 0 ? 0 : 0x3737 + 0x2828 * r; |