added macro to test flags, removed tmovecursor().
This commit is contained in:
		
							parent
							
								
									4db3df312a
								
							
						
					
					
						commit
						5d611cd547
					
				
							
								
								
									
										42
									
								
								st.c
								
								
								
								
							
							
						
						
									
										42
									
								
								st.c
								
								
								
								
							|  | @ -34,6 +34,7 @@ | ||||||
| #define BETWEEN(x, a, b)  ((a) <= (x) && (x) <= (b)) | #define BETWEEN(x, a, b)  ((a) <= (x) && (x) <= (b)) | ||||||
| #define LIMIT(x, a, b)    (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x) | #define LIMIT(x, a, b)    (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x) | ||||||
| #define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg) | #define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != (b).bg) | ||||||
|  | #define IS_SET(flag) (term.mode & flag) | ||||||
| 
 | 
 | ||||||
| /* Attribute, Cursor, Character state, Terminal mode, Screen draw mode */ | /* Attribute, Cursor, Character state, Terminal mode, Screen draw mode */ | ||||||
| enum { ATTR_NULL=0 , ATTR_REVERSE=1 , ATTR_UNDERLINE=2, ATTR_BOLD=4, ATTR_GFX=8 }; | enum { ATTR_NULL=0 , ATTR_REVERSE=1 , ATTR_UNDERLINE=2, ATTR_BOLD=4, ATTR_GFX=8 }; | ||||||
|  | @ -128,7 +129,7 @@ static void csireset(void); | ||||||
| 
 | 
 | ||||||
| static void tclearregion(int, int, int, int); | static void tclearregion(int, int, int, int); | ||||||
| static void tcursor(int); | static void tcursor(int); | ||||||
| static void tmovecursor(int); | static void twrapcursor(void); | ||||||
| static void tdeletechar(int); | static void tdeletechar(int); | ||||||
| static void tdeleteline(int); | static void tdeleteline(int); | ||||||
| static void tinsertblank(int); | static void tinsertblank(int); | ||||||
|  | @ -437,29 +438,13 @@ tmoveto(int x, int y) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| tmovecursor(int dir) { | twrapcursor(void) { | ||||||
| 	int xf = term.c.x, yf = term.c.y; | 	int y = term.c.y+1; | ||||||
| 	 |     if(y > term.bot) { | ||||||
| 	switch(dir) { |         tmoveto(0, term.bot); | ||||||
| 	case CURSOR_UP: |         tscroll(); | ||||||
| 		yf--; |     } else  | ||||||
| 		break; |         tmoveto(0, y); | ||||||
| 	case CURSOR_DOWN: |  | ||||||
| 		yf++; |  | ||||||
| 		break; |  | ||||||
| 	case CURSOR_LEFT: |  | ||||||
| 		xf--; |  | ||||||
| 		break; |  | ||||||
| 	case CURSOR_RIGHT: |  | ||||||
| 		xf++; |  | ||||||
| 		if(term.mode & MODE_WRAP && xf >= term.col) { |  | ||||||
| 			xf = 0, yf++; |  | ||||||
| 			if(yf > term.bot) |  | ||||||
| 				yf = term.bot, tscroll(); |  | ||||||
| 		} |  | ||||||
| 		break; |  | ||||||
| 	} |  | ||||||
| 	tmoveto(xf, yf); |  | ||||||
| } | } | ||||||
| 	 | 	 | ||||||
| void | void | ||||||
|  | @ -969,7 +954,7 @@ tputc(char c) { | ||||||
| 			tputtab(); | 			tputtab(); | ||||||
| 			break; | 			break; | ||||||
| 		case '\b': | 		case '\b': | ||||||
| 			tmovecursor(CURSOR_LEFT); | 			tmoveto(term.c.x-1, term.c.y); | ||||||
| 			break; | 			break; | ||||||
| 		case '\r': | 		case '\r': | ||||||
| 			tmoveto(0, term.c.y); | 			tmoveto(0, term.c.y); | ||||||
|  | @ -986,7 +971,10 @@ tputc(char c) { | ||||||
| 			break; | 			break; | ||||||
| 		default: | 		default: | ||||||
| 			tsetchar(c); | 			tsetchar(c); | ||||||
| 			tmovecursor(CURSOR_RIGHT); |             if(term.c.x+1 < term.col) { | ||||||
|  |                 tmoveto(term.c.x+1, term.c.y); | ||||||
|  |             } else if(IS_SET(MODE_WRAP)) | ||||||
|  |                 twrapcursor(); | ||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | @ -1282,7 +1270,7 @@ kpress(XEvent *ev) { | ||||||
| 		case XK_Down: | 		case XK_Down: | ||||||
| 		case XK_Left: | 		case XK_Left: | ||||||
| 		case XK_Right: | 		case XK_Right: | ||||||
| 			sprintf(buf, "\033%c%c", term.mode & MODE_APPKEYPAD ? 'O' : '[', "DACB"[ksym - XK_Left]); | 			sprintf(buf, "\033%c%c", IS_SET(MODE_APPKEYPAD) ? 'O' : '[', "DACB"[ksym - XK_Left]); | ||||||
| 			ttywrite(buf, 3); | 			ttywrite(buf, 3); | ||||||
| 			break; | 			break; | ||||||
| 		case XK_Insert: | 		case XK_Insert: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue