Clamp scrolling, auto scroll on reads and typing
This commit is contained in:
		
							parent
							
								
									938e1db316
								
							
						
					
					
						commit
						9a929773c7
					
				
							
								
								
									
										26
									
								
								bt.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								bt.c
									
									
									
									
									
								
							| @ -76,7 +76,6 @@ int read_pty(scrollback *sb) { | |||||||
|             sb->buf = realloc(sb->buf, sb->capacity); |             sb->buf = realloc(sb->buf, sb->capacity); | ||||||
|         } |         } | ||||||
|         if (readbuf[nread - 1] == '\n') { |         if (readbuf[nread - 1] == '\n') { | ||||||
|             printf("this\n"); |  | ||||||
|             nread--; |             nread--; | ||||||
|         } |         } | ||||||
|         int nreturns = 0; |         int nreturns = 0; | ||||||
| @ -124,9 +123,28 @@ int main(void) { | |||||||
| 
 | 
 | ||||||
|     sb.ypos = 0; |     sb.ypos = 0; | ||||||
| 
 | 
 | ||||||
|  |     bool new_read = false; | ||||||
|  |     bool new_char = false; | ||||||
|     while (!WindowShouldClose()) { |     while (!WindowShouldClose()) { | ||||||
|  |         float scroll_speed = 15.5f; | ||||||
|  |         sb.ypos += GetMouseWheelMoveV().y * scroll_speed; | ||||||
|  |         sb.height = MeasureTextEx(*fontDefault, sb.buf, fontsize, 1).y; | ||||||
|  | 
 | ||||||
|  |         if (new_read || new_char) { | ||||||
|  |             if (sb.height - abs((int)sb.ypos) + fontsize > screenHeight) { | ||||||
|  |                 sb.ypos = -(sb.height - screenHeight) - fontsize; | ||||||
|  |             } | ||||||
|  |             new_read = false; | ||||||
|  |             new_char = false; | ||||||
|  |         } else { | ||||||
|  |             if (sb.ypos > 0) { | ||||||
|  |                 sb.ypos = 0; | ||||||
|  |             } else if (abs((int)sb.ypos) > sb.height - fontsize) { | ||||||
|  |                 sb.ypos = -(sb.height - fontsize); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         int key = GetCharPressed(); |         int key = GetCharPressed(); | ||||||
|         fontsize += GetMouseWheelMove(); |  | ||||||
|         while (key > 0) { |         while (key > 0) { | ||||||
|             if ((key >= 32) && (key <= 125)) { |             if ((key >= 32) && (key <= 125)) { | ||||||
|                 buf[buf_len] = (char)key; |                 buf[buf_len] = (char)key; | ||||||
| @ -137,7 +155,9 @@ int main(void) { | |||||||
|                 sb.length++; |                 sb.length++; | ||||||
|             } |             } | ||||||
|             key = GetCharPressed(); |             key = GetCharPressed(); | ||||||
|  |             new_char = true; | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|         if (IsKeyPressed(KEY_ENTER)) { |         if (IsKeyPressed(KEY_ENTER)) { | ||||||
|             sb.length -= buf_len; |             sb.length -= buf_len; | ||||||
|             sb.buf[sb.length] = '\0'; |             sb.buf[sb.length] = '\0'; | ||||||
| @ -145,6 +165,7 @@ int main(void) { | |||||||
|             write(master, "\r", 1); |             write(master, "\r", 1); | ||||||
|             buf[0] = '\0'; |             buf[0] = '\0'; | ||||||
|             buf_len = 0; |             buf_len = 0; | ||||||
|  |             new_char = true; | ||||||
|         } |         } | ||||||
|         if (IsKeyPressed(KEY_BACKSPACE)) { |         if (IsKeyPressed(KEY_BACKSPACE)) { | ||||||
|             if (buf_len > 0) { |             if (buf_len > 0) { | ||||||
| @ -153,6 +174,7 @@ int main(void) { | |||||||
|                 sb.length--; |                 sb.length--; | ||||||
|                 sb.buf[sb.length] = '\0'; |                 sb.buf[sb.length] = '\0'; | ||||||
|             } |             } | ||||||
|  |             new_char = true; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // Drawing
 |         // Drawing
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user