1
1

Ticket #2086 (viewer: incorrect scroll down/up in wrap mode)

fixed: scroll down/scroll up in wrap mode.

Signed-off-by: Ilia Maslakov <il.smind@gmail.com>

    fixed: scroll up in wrap mode.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Этот коммит содержится в:
Ilia Maslakov 2010-03-25 11:51:12 +03:00
родитель 73357ddda6
Коммит 7d0fb092a4
2 изменённых файлов: 14 добавлений и 1 удалений

Просмотреть файл

@ -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++;

Просмотреть файл

@ -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;
}
}