fix moving cursor screen row down with row-wrapping tab characters
This commit is contained in:
1 parent
79aa91bf49
commit
33377f7668
2 files changed
+35
-1
No files matched your search
@@ -729,3 +729,31 @@ TEST(BufferViewTest, scrolls_past_empty_lines)
|
||||
bv.update();
|
||||
EXPECT_EQ(0, LineNumber(iterator));
|
||||
}
|
||||
|
||||
TEST(BufferViewTest, moving_cursor_screen_row_down_jumps_past_wrapped_tab)
|
||||
{
|
||||
static const char data[] =
|
||||
"0\n"
|
||||
"1abc\tdefghijklmnopqrstuvwxyz\n"
|
||||
"2\n"
|
||||
"3\n";
|
||||
auto b = std::make_shared<Buffer>((const uint8_t *)data, strlen(data));
|
||||
auto iterator = b->add_cursor();
|
||||
BufferView bv(b, iterator, Cwd);
|
||||
bv.resize(5, 10);
|
||||
bv.update();
|
||||
EXPECT_EQ(C('0'), **iterator);
|
||||
EXPECT_EQ(0, bv.cursor_screen_row());
|
||||
bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_DOWN, false);
|
||||
bv.update();
|
||||
EXPECT_EQ(C('1'), **iterator);
|
||||
EXPECT_EQ(1, bv.cursor_screen_row());
|
||||
bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_DOWN, false);
|
||||
bv.update();
|
||||
EXPECT_EQ(C('d'), **iterator);
|
||||
EXPECT_EQ(2, bv.cursor_screen_row());
|
||||
bv.cursor_move(BufferView::CursorMovement::SCREEN_ROW_DOWN, false);
|
||||
bv.update();
|
||||
EXPECT_EQ(C('f'), **iterator);
|
||||
EXPECT_EQ(3, bv.cursor_screen_row());
|
||||
}
|
||||
Reference in new issue
Block a user