Merge branch '2086_scroll_down_up_wrap_fix'
* 2086_scroll_down_up_wrap_fix: Ticket #2086 (viewer: incorrect scroll down/up in wrap mode)
Этот коммит содержится в:
Коммит
afa93bbb36
@ -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;
|
||||
}
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user