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 void
mcview_toggle_wrap_mode (mcview_t * view) 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->text_wrap_mode = !view->text_wrap_mode;
view->dpy_bbar_dirty = TRUE; view->dpy_bbar_dirty = TRUE;
view->dirty++; view->dirty++;

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

@ -108,12 +108,21 @@ mcview_move_up (mcview_t * view, off_t lines)
off_t i; off_t i;
for (i = 0; i < lines; 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) if (new_offset > 0)
new_offset--; new_offset--;
new_offset = mcview_bol (view, new_offset); new_offset = mcview_bol (view, new_offset);
if (new_offset < 0) if (new_offset < 0)
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; view->dpy_start = new_offset;
} }
} }
@ -149,6 +158,8 @@ mcview_move_down (mcview_t * view, off_t lines)
{ {
off_t new_offset; off_t new_offset;
new_offset = mcview_eol (view, view->dpy_start); 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; view->dpy_start = new_offset;
} }
} }