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