moved term.hidec in term.c for consistency, put back delay in xbell()
along with duration in config.h, factored some code in tnew()/treset() and cleaned some code.
This commit is contained in:
		
							parent
							
								
									c186c8ef9a
								
							
						
					
					
						commit
						2181040594
					
				
							
								
								
									
										1
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								config.h
									
									
									
									
									
								
							| @ -30,6 +30,7 @@ static const char *colorname[] = { | |||||||
| #define DefaultBG 0 | #define DefaultBG 0 | ||||||
| #define DefaultCS 1 | #define DefaultCS 1 | ||||||
| #define BellCol   DefaultFG | #define BellCol   DefaultFG | ||||||
|  | #define BellTime  30000 /* microseconds */ | ||||||
| 
 | 
 | ||||||
| /* special keys */ | /* special keys */ | ||||||
| static Key key[] = { | static Key key[] = { | ||||||
|  | |||||||
							
								
								
									
										48
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								st.c
									
									
									
									
									
								
							| @ -67,6 +67,7 @@ typedef struct { | |||||||
| 	Glyph attr;	 /* current char attributes */ | 	Glyph attr;	 /* current char attributes */ | ||||||
| 	int x; | 	int x; | ||||||
| 	int y; | 	int y; | ||||||
|  | 	char hide; | ||||||
| } TCursor; | } TCursor; | ||||||
| 
 | 
 | ||||||
| /* CSI Escape sequence structs */ | /* CSI Escape sequence structs */ | ||||||
| @ -86,7 +87,6 @@ typedef struct { | |||||||
| 	int col;	/* nb col */ | 	int col;	/* nb col */ | ||||||
| 	Line* line; /* screen */ | 	Line* line; /* screen */ | ||||||
| 	TCursor c;	/* cursor */ | 	TCursor c;	/* cursor */ | ||||||
| 	char hidec; |  | ||||||
| 	int top;	/* top	  scroll limit */ | 	int top;	/* top	  scroll limit */ | ||||||
| 	int bot;	/* bottom scroll limit */ | 	int bot;	/* bottom scroll limit */ | ||||||
| 	int mode;	/* terminal mode flags */ | 	int mode;	/* terminal mode flags */ | ||||||
| @ -221,17 +221,16 @@ die(const char *errstr, ...) { | |||||||
| void | void | ||||||
| execsh(void) { | execsh(void) { | ||||||
| 	char *args[3] = {getenv("SHELL"), "-i", NULL}; | 	char *args[3] = {getenv("SHELL"), "-i", NULL}; | ||||||
| 	DEFAULT(args[0], "/bin/sh"); /* default shell if getenv() failed */ | 	DEFAULT(args[0], "/bin/sh"); /* if getenv() failed */ | ||||||
| 	putenv("TERM=" TNAME); | 	putenv("TERM=" TNAME); | ||||||
| 	execvp(args[0], args); | 	execvp(args[0], args); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| xbell(void) { /* visual bell */ | xbell(void) { | ||||||
| 	XRectangle r = { BORDER, BORDER, xw.bufw, xw.bufh }; |  | ||||||
| 	XSetForeground(xw.dis, dc.gc, dc.col[BellCol]); | 	XSetForeground(xw.dis, dc.gc, dc.col[BellCol]); | ||||||
| 	XFillRectangles(xw.dis, xw.win, dc.gc, &r, 1); | 	XFillRectangle(xw.dis, xw.win, dc.gc, BORDER, BORDER, xw.bufw, xw.bufh); | ||||||
| 	/* usleep(30000); */ | 	usleep(BellTime); | ||||||
| 	draw(SCREEN_REDRAW); | 	draw(SCREEN_REDRAW); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -325,11 +324,12 @@ tcursor(int mode) { | |||||||
| 
 | 
 | ||||||
| void | void | ||||||
| treset(void) { | treset(void) { | ||||||
| 	term.c.attr.mode = ATTR_NULL; | 	term.c = (TCursor){{ | ||||||
| 	term.c.attr.fg = DefaultFG; | 		.mode = ATTR_NULL,  | ||||||
| 	term.c.attr.bg = DefaultBG; | 		.fg = DefaultFG,  | ||||||
| 	term.c.x = term.c.y = 0; | 		.bg = DefaultBG | ||||||
| 	term.hidec = 0; | 	}, .x = 0, .y = 0, .hide = 0}; | ||||||
|  | 	 | ||||||
| 	term.top = 0, term.bot = term.row - 1; | 	term.top = 0, term.bot = term.row - 1; | ||||||
| 	term.mode = MODE_WRAP; | 	term.mode = MODE_WRAP; | ||||||
| 	tclearregion(0, 0, term.col-1, term.row-1); | 	tclearregion(0, 0, term.col-1, term.row-1); | ||||||
| @ -337,21 +337,13 @@ treset(void) { | |||||||
| 
 | 
 | ||||||
| void | void | ||||||
| tnew(int col, int row) { | tnew(int col, int row) { | ||||||
| 	/* screen size */ | 	/* set screen size */ | ||||||
| 	term.row = row, term.col = col; | 	term.row = row, term.col = col; | ||||||
| 	term.top = 0, term.bot = term.row - 1; | 	term.line = malloc(term.row * sizeof(Line)); | ||||||
| 	/* mode */ |  | ||||||
| 	term.mode = MODE_WRAP; |  | ||||||
| 	/* cursor */ |  | ||||||
| 	term.c.attr.mode = ATTR_NULL; |  | ||||||
| 	term.c.attr.fg = DefaultFG; |  | ||||||
| 	term.c.attr.bg = DefaultBG; |  | ||||||
| 	term.c.x = term.c.y = 0; |  | ||||||
| 	term.hidec = 0; |  | ||||||
| 	/* allocate screen */ |  | ||||||
| 	term.line = calloc(term.row, sizeof(Line)); |  | ||||||
| 	for(row = 0 ; row < term.row; row++) | 	for(row = 0 ; row < term.row; row++) | ||||||
| 		term.line[row] = calloc(term.col, sizeof(Glyph)); | 		term.line[row] = malloc(term.col * sizeof(Glyph)); | ||||||
|  | 	/* setup screen */ | ||||||
|  | 	treset(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| @ -718,7 +710,7 @@ csihandle(void) { | |||||||
| 			case 12: /* att610 -- Stop blinking cursor (IGNORED) */ | 			case 12: /* att610 -- Stop blinking cursor (IGNORED) */ | ||||||
| 				break; | 				break; | ||||||
| 			case 25: | 			case 25: | ||||||
| 				term.hidec = 1; | 				term.c.hide = 1; | ||||||
| 				break; | 				break; | ||||||
| 			case 1048: /* XXX: no alt. screen to erase/save */ | 			case 1048: /* XXX: no alt. screen to erase/save */ | ||||||
| 			case 1049: | 			case 1049: | ||||||
| @ -767,7 +759,7 @@ csihandle(void) { | |||||||
| 			case 12: /* att610 -- Start blinking cursor (IGNORED) */ | 			case 12: /* att610 -- Start blinking cursor (IGNORED) */ | ||||||
| 				break; | 				break; | ||||||
| 			case 25: | 			case 25: | ||||||
| 				term.hidec = 0; | 				term.c.hide = 0; | ||||||
| 				break; | 				break; | ||||||
| 			case 1048:  | 			case 1048:  | ||||||
| 			case 1049: /* XXX: no alt. screen to erase/save */ | 			case 1049: /* XXX: no alt. screen to erase/save */ | ||||||
| @ -1173,7 +1165,7 @@ draw(int dummy) { | |||||||
| 			if(term.line[y][x].state & GLYPH_SET) | 			if(term.line[y][x].state & GLYPH_SET) | ||||||
| 				xdrawc(x, y, term.line[y][x]); | 				xdrawc(x, y, term.line[y][x]); | ||||||
| 
 | 
 | ||||||
| 	if(!term.hidec) | 	if(!term.c.hide) | ||||||
| 		xcursor(CURSOR_DRAW); | 		xcursor(CURSOR_DRAW); | ||||||
| 	XCopyArea(xw.dis, xw.buf, xw.win, dc.gc, 0, 0, xw.bufw, xw.bufh, BORDER, BORDER); | 	XCopyArea(xw.dis, xw.buf, xw.win, dc.gc, 0, 0, xw.bufw, xw.bufh, BORDER, BORDER); | ||||||
| 	XFlush(xw.dis); | 	XFlush(xw.dis); | ||||||
| @ -1206,7 +1198,7 @@ draw(int redraw_all) { | |||||||
| 		} | 		} | ||||||
| 		xdraws(buf, base, ox, y, i); | 		xdraws(buf, base, ox, y, i); | ||||||
| 	} | 	} | ||||||
| 	xcursor(term.hidec ? CURSOR_HIDE : CURSOR_DRAW); | 	xcursor(term.c.hide ? CURSOR_HIDE : CURSOR_DRAW); | ||||||
| 	XCopyArea(xw.dis, xw.buf, xw.win, dc.gc, 0, 0, xw.bufw, xw.bufh, BORDER, BORDER); | 	XCopyArea(xw.dis, xw.buf, xw.win, dc.gc, 0, 0, xw.bufw, xw.bufh, BORDER, BORDER); | ||||||
| 	XFlush(xw.dis); | 	XFlush(xw.dis); | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user