Fix scrolling BufferView past empty lines
This commit is contained in:
parent
d2fa28c5e1
commit
55dc13d729
@ -401,6 +401,7 @@ void BufferView::move_forward_to_screen_position(
|
||||
std::shared_ptr<Buffer::Iterator> line, int target_row_offset,
|
||||
bool allow_eol)
|
||||
{
|
||||
*m_iterator = *line;
|
||||
for (auto it = horiz_iter(line); it.is_valid(); it++)
|
||||
{
|
||||
if ((allow_eol || (!it.is_eol())) &&
|
||||
|
@ -22,6 +22,21 @@ static std::shared_ptr<Buffer> buffer1()
|
||||
return std::make_shared<Buffer>((const uint8_t *)data, strlen(data));
|
||||
}
|
||||
|
||||
static std::shared_ptr<Buffer> buffer2()
|
||||
{
|
||||
static const char data[] =
|
||||
"0\n"
|
||||
"\n"
|
||||
"2\n"
|
||||
"3\n"
|
||||
"4\n"
|
||||
"\n"
|
||||
"6\n"
|
||||
"7\n"
|
||||
"8\n";
|
||||
return std::make_shared<Buffer>((const uint8_t *)data, strlen(data));
|
||||
}
|
||||
|
||||
static std::shared_ptr<Buffer> buffer_empty()
|
||||
{
|
||||
return std::make_shared<Buffer>(nullptr, 0u);
|
||||
@ -698,3 +713,19 @@ TEST(BufferViewTest, shows_only_lines_in_buffer_if_fewer_lines_in_buffer_than_vi
|
||||
}
|
||||
EXPECT_EQ(13, count);
|
||||
}
|
||||
|
||||
TEST(BufferViewTest, scrolls_past_empty_lines)
|
||||
{
|
||||
auto b = buffer2();
|
||||
auto iterator = b->add_cursor();
|
||||
BufferView bv(b, iterator, Cwd);
|
||||
bv.resize(10, 1);
|
||||
bv.update();
|
||||
EXPECT_EQ(0, LineNumber(iterator));
|
||||
bv.scroll_view_down(3, false);
|
||||
bv.update();
|
||||
EXPECT_EQ(3, LineNumber(iterator));
|
||||
bv.scroll_view_up(3, false);
|
||||
bv.update();
|
||||
EXPECT_EQ(0, LineNumber(iterator));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user