Merge branch '2086_scroll_down_up_wrap_fix'

* 2086_scroll_down_up_wrap_fix:
  Ticket #2086 (viewer: incorrect scroll down/up in wrap mode)
This commit is contained in:
Ilia Maslakov 2010-03-30 15:38:04 +04:00
commit afa93bbb36
2 changed files with 14 additions and 1 deletions

View File

@ -91,6 +91,8 @@ mcview_toggle_magic_mode (mcview_t * view)
void
mcview_toggle_wrap_mode (mcview_t * view)
{
if (view->text_wrap_mode)
view->dpy_start = mcview_bol (view, view->dpy_start);
view->text_wrap_mode = !view->text_wrap_mode;
view->dpy_bbar_dirty = TRUE;
view->dirty++;

View File

@ -108,12 +108,21 @@ mcview_move_up (mcview_t * view, off_t lines)
off_t i;
for (i = 0; i < lines; i++)
{
new_offset = mcview_bol (view, view->dpy_start);
off_t cur_bol;
cur_bol = new_offset = mcview_bol (view, view->dpy_start);
if (new_offset > 0)
new_offset--;
new_offset = mcview_bol (view, new_offset);
if (new_offset < 0)
new_offset = 0;
if (view->text_wrap_mode)
{
size_t last_row_length = (view->dpy_start - new_offset) % view->data_area.width;
if (last_row_length != 0 && cur_bol == view->dpy_start)
new_offset = max (new_offset, view->dpy_start - last_row_length);
else
new_offset = max (new_offset, view->dpy_start - view->data_area.width);
}
view->dpy_start = new_offset;
}
}
@ -149,6 +158,8 @@ mcview_move_down (mcview_t * view, off_t lines)
{
off_t new_offset;
new_offset = mcview_eol (view, view->dpy_start);
if (view->text_wrap_mode)
new_offset = min (new_offset, view->dpy_start + view->data_area.width);
view->dpy_start = new_offset;
}
}