Condensing the code by removing a triplication.
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5583 35c25a1d-7b9e-4130-9fde-d3aeb78583b8master
parent
8c705b5dc2
commit
b8d32d8b7b
|
@ -2,6 +2,7 @@
|
||||||
* src/files.c (update_poshistory): Move an updated item to the end
|
* src/files.c (update_poshistory): Move an updated item to the end
|
||||||
of the list, so that it won't be dropped any time soon. The problem
|
of the list, so that it won't be dropped any time soon. The problem
|
||||||
was pointed out by David Niklas.
|
was pointed out by David Niklas.
|
||||||
|
* src/winio.c (edit_redraw): Condense by removing a triplication.
|
||||||
|
|
||||||
2016-01-22 Benno Schulenberg <bensberg@justemail.net>
|
2016-01-22 Benno Schulenberg <bensberg@justemail.net>
|
||||||
* src/utils.c (get_homedir): Don't use $HOME when we're root, because
|
* src/utils.c (get_homedir): Don't use $HOME when we're root, because
|
||||||
|
|
82
src/winio.c
82
src/winio.c
|
@ -2948,57 +2948,17 @@ void edit_scroll(scroll_dir direction, ssize_t nlines)
|
||||||
* updated. Use this if we've moved without changing any text. */
|
* updated. Use this if we've moved without changing any text. */
|
||||||
void edit_redraw(filestruct *old_current, size_t pww_save)
|
void edit_redraw(filestruct *old_current, size_t pww_save)
|
||||||
{
|
{
|
||||||
filestruct *foo = NULL;
|
/* If the current line is offscreen, scroll until it's onscreen. */
|
||||||
bool do_redraw = need_screen_update(0) || need_screen_update(pww_save);
|
if (openfile->current->lineno >= openfile->edittop->lineno + maxrows ||
|
||||||
|
openfile->current->lineno < openfile->edittop->lineno)
|
||||||
/* If either old_current or current is offscreen, scroll the edit
|
|
||||||
* window until it's onscreen and get out. */
|
|
||||||
if (old_current->lineno < openfile->edittop->lineno ||
|
|
||||||
old_current->lineno >= openfile->edittop->lineno + maxrows ||
|
|
||||||
openfile->current->lineno < openfile->edittop->lineno ||
|
|
||||||
openfile->current->lineno >= openfile->edittop->lineno + maxrows) {
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf(stderr, "edit_redraw(): line %ld was offscreen, oldcurrent = %ld edittop = %ld",
|
|
||||||
(long)openfile->current->lineno, (long)old_current->lineno, (long)openfile->edittop->lineno);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef NANO_TINY
|
|
||||||
/* If the mark is on, update all the lines between old_current
|
|
||||||
* and either the old first line or old last line (depending on
|
|
||||||
* whether we've scrolled up or down) of the edit window. */
|
|
||||||
if (openfile->mark_set) {
|
|
||||||
ssize_t old_lineno;
|
|
||||||
|
|
||||||
if (openfile->edittop->lineno + maxrows <= openfile->filebot->lineno)
|
|
||||||
old_lineno = openfile->edittop->lineno + editwinrows;
|
|
||||||
else
|
|
||||||
old_lineno = openfile->filebot->lineno;
|
|
||||||
|
|
||||||
foo = old_current;
|
|
||||||
|
|
||||||
while (foo->lineno != old_lineno) {
|
|
||||||
update_line(foo, 0);
|
|
||||||
|
|
||||||
foo = (foo->lineno > old_lineno) ?
|
|
||||||
foo->prev : foo->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif /* !NANO_TINY */
|
|
||||||
|
|
||||||
/* Make sure the current line is on the screen. */
|
|
||||||
edit_update((ISSET(SMOOTH_SCROLL) && !focusing) ? NONE : CENTER);
|
edit_update((ISSET(SMOOTH_SCROLL) && !focusing) ? NONE : CENTER);
|
||||||
|
|
||||||
/* Update old_current if we're not on the same page as
|
|
||||||
* before. */
|
|
||||||
if (do_redraw)
|
|
||||||
update_line(old_current, 0);
|
|
||||||
|
|
||||||
#ifndef NANO_TINY
|
#ifndef NANO_TINY
|
||||||
/* If the mark is on, update all the lines between the old first
|
/* If the mark is on, update all lines between old_current and current. */
|
||||||
* line or old last line of the edit window (depending on
|
|
||||||
* whether we've scrolled up or down) and current. */
|
|
||||||
if (openfile->mark_set) {
|
if (openfile->mark_set) {
|
||||||
while (foo->lineno != openfile->current->lineno) {
|
filestruct *foo = old_current;
|
||||||
|
|
||||||
|
while (foo != openfile->current) {
|
||||||
update_line(foo, 0);
|
update_line(foo, 0);
|
||||||
|
|
||||||
foo = (foo->lineno > openfile->current->lineno) ?
|
foo = (foo->lineno > openfile->current->lineno) ?
|
||||||
|
@ -3007,32 +2967,12 @@ void edit_redraw(filestruct *old_current, size_t pww_save)
|
||||||
}
|
}
|
||||||
#endif /* !NANO_TINY */
|
#endif /* !NANO_TINY */
|
||||||
|
|
||||||
return;
|
/* Update old_current and current if we've changed page. */
|
||||||
}
|
if (need_screen_update(0) || need_screen_update(pww_save)) {
|
||||||
|
update_line(old_current, 0);
|
||||||
/* Update old_current and current if we're not on the same page as
|
|
||||||
* before. If the mark is on, update all the lines between
|
|
||||||
* old_current and current too. */
|
|
||||||
foo = old_current;
|
|
||||||
|
|
||||||
while (foo != openfile->current) {
|
|
||||||
if (do_redraw)
|
|
||||||
update_line(foo, 0);
|
|
||||||
|
|
||||||
#ifndef NANO_TINY
|
|
||||||
if (!openfile->mark_set)
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
|
|
||||||
#ifndef NANO_TINY
|
|
||||||
foo = (foo->lineno > openfile->current->lineno) ? foo->prev :
|
|
||||||
foo->next;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if (do_redraw)
|
|
||||||
update_line(openfile->current, openfile->current_x);
|
update_line(openfile->current, openfile->current_x);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Refresh the screen without changing the position of lines. Use this
|
/* Refresh the screen without changing the position of lines. Use this
|
||||||
* if we've moved and changed text. */
|
* if we've moved and changed text. */
|
||||||
|
|
Loading…
Reference in New Issue