sled

Једноставни уређивач текста
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 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:
MTODO | 4----
Mdraw.c | 5+++--
Msled.c | 12++++++------
измењених датотека: 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) {