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>
Этот коммит содержится в:
родитель
73357ddda6
Коммит
7d0fb092a4
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user