Use screen_* versions to avoid range checks (s->dy may be wrong), fix miscalculated free.

This commit is contained in:
Nicholas Marriott 2007-11-21 14:30:15 +00:00
parent c424ef37d0
commit 08a0c5e661
2 changed files with 9 additions and 11 deletions

10
TODO
View File

@ -66,16 +66,14 @@
some -s after, some no -s, there are various uses of -n. the differences are
sort of logical, but confusing. needs rethought
- XXX should -i for win idx be before cmd too??
- bind non prefix keys (useful for shift-pageup for scrollback, when we
have scrollback)
- for scrollback (?) or copy/paste, modal key/display handling (key/draw
through function pointers in screen). also move ? etc to that too
- bind non prefix keys
- stuff like rename would be nice to be able to do in-client like screen, if
it could be implemented in a non-icky way
- there is to much redrawing. use flags? (there was a problem with this idea..?)
- use modes for help etc
- scrollback should only draw scrolled line on up/down
-- For 0.2 --------------------------------------------------------------------
- copy and paste
- scrollback
phys screen vs virt screen? or seperate scrollback buffer?
- window splitting?

View File

@ -1,4 +1,4 @@
/* $Id: screen.c,v 1.28 2007-11-21 13:11:41 nicm Exp $ */
/* $Id: screen.c,v 1.29 2007-11-21 14:30:15 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -160,8 +160,8 @@ screen_resize(struct screen *s, u_int sx, u_int sy)
if (my > ny)
my = ny;
screen_display_free_lines(s, 0, my);
screen_display_move_lines(s, 0, my, oy - my);
screen_free_lines(s, s->hsize, my);
screen_move_lines(s, s->hsize, my, oy - my);
s->cy -= my;
oy -= my;
@ -172,7 +172,7 @@ screen_resize(struct screen *s, u_int sx, u_int sy)
/*
* Remove any remaining lines from the bottom.
*/
screen_display_free_lines(s, oy, ny);
screen_free_lines(s, s->hsize + oy - ny, ny);
if (s->cy >= sy)
s->cy = sy - 1;
}
@ -187,7 +187,7 @@ screen_resize(struct screen *s, u_int sx, u_int sy)
/* Size increasing. */
if (sy > oy)
screen_display_make_lines(s, oy, sy - oy);
screen_make_lines(s, s->hsize + oy, sy - oy);
s->rupper = 0;
s->rlower = s->dy - 1;