чување 6bd6096738037e6b5504b6caeeb20140afbe47e3
родитељ f9597f258c447021a444ccffe70082ebc9a12a66
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Mon, 28 Feb 2022 14:49:07 +0100
Draw past the width of the screen by scrolling
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 3, додавања: 9(+), брисања: 12(-)
diff --git a/TODO b/TODO
@@ -1,10 +1,6 @@
TODO
====
- [x] Move positioning logic to separate function
-
- [x] Investigate DrawState.first_shown_column
-
< > Search?
< > Replace?
diff --git a/draw.c b/draw.c
@@ -692,8 +692,9 @@ draw_screen(const struct DrawState* state)
if (current->text)
u32_draw_string(0, cy, TEXT_FG, TEXT_BG, current->text,
- state->maxx, state->maxx, 0, 0, CENTER, 0, 0,
- NULL, 0, 0, ssi, sei, SEL_FG, SEL_BG);
+ state->maxx, state->maxx, 0, 0, CENTER,
+ state->first_shown_column, 0, NULL, 0, 0, ssi,
+ sei, SEL_FG, SEL_BG);
i++;
cy++;
}
diff --git a/sled.c b/sled.c
@@ -524,13 +524,13 @@ position_to(struct DrawState* state, const int row, const int column)
state->display_column = display_length(state,
state->buffer[state->row].text, state->column);
state->saved_column = state->display_column;
- if (state->row > state->rows_count - 1)
- state->row = state->rows_count - 1;
- if (state->first_shown_row > state->row)
- state->first_shown_row = state->row;
- if (state->first_shown_row + (state->maxy - 2) < state->row)
- state->first_shown_row = state->row - (state->maxy - 2);
}
+ if (state->first_shown_column > state->display_column)
+ state->first_shown_column = state->display_column;
+ if (state->first_shown_column + (state->maxx - 1)
+ < state->column)
+ state->first_shown_column
+ = state->display_column - (state->maxx - 1);
if (state->in_selection_mode)
{