version 1.19, 2009/07/30 20:41:48 |
version 1.20, 2009/08/08 15:57:49 |
|
|
|
|
/* Line feed (down with scroll). */ |
/* Line feed (down with scroll). */ |
void |
void |
screen_write_linefeed(struct screen_write_ctx *ctx) |
screen_write_linefeed(struct screen_write_ctx *ctx, int wrapped) |
{ |
{ |
struct screen *s = ctx->s; |
struct screen *s = ctx->s; |
struct tty_ctx ttyctx; |
struct grid_line *gl; |
|
struct tty_ctx ttyctx; |
|
|
screen_write_initctx(ctx, &ttyctx); |
screen_write_initctx(ctx, &ttyctx); |
|
|
|
gl = &s->grid->linedata[s->grid->hsize + s->cy]; |
|
if (wrapped) |
|
gl->flags |= GRID_LINE_WRAPPED; |
|
else |
|
gl->flags &= ~GRID_LINE_WRAPPED; |
|
|
if (s->cy == s->rlower) |
if (s->cy == s->rlower) |
grid_view_scroll_region_up(s->grid, s->rupper, s->rlower); |
grid_view_scroll_region_up(s->grid, s->rupper, s->rlower); |
else if (s->cy < screen_size_y(s) - 1) |
else if (s->cy < screen_size_y(s) - 1) |
|
|
insert = 1; |
insert = 1; |
} |
} |
|
|
/* Check this will fit on the current line; scroll if not. */ |
/* Check this will fit on the current line and wrap if not. */ |
if (s->cx > screen_size_x(s) - width) { |
if (s->cx > screen_size_x(s) - width) { |
screen_write_carriagereturn(ctx); |
screen_write_carriagereturn(ctx); |
screen_write_linefeed(ctx); |
screen_write_linefeed(ctx, 1); |
} |
} |
|
|
/* Sanity checks. */ |
/* Sanity checks. */ |