IncrementalInsert::move_cursors: use overloaded for LineCount/CharCount editor implementation

This commit is contained in:
Maxime Coste 2012-11-26 19:38:07 +01:00
parent cad4d3c01e
commit 557128b641
3 changed files with 13 additions and 12 deletions

View File

@ -461,14 +461,14 @@ void IncrementalInserter::erase()
} }
} }
void IncrementalInserter::move_cursors(const BufferCoord& offset) void IncrementalInserter::move_cursors(CharCount move)
{ {
for (auto& sel : m_editor.m_selections) m_editor.move_selections(move, SelectMode::Replace);
{
BufferCoord pos = sel.last().coord();
BufferIterator it = m_editor.m_buffer->iterator_at(pos + offset);
sel = Selection(it, it);
} }
void IncrementalInserter::move_cursors(LineCount move)
{
m_editor.move_selections(move, SelectMode::Replace);
} }
} }

View File

@ -121,7 +121,8 @@ public:
void insert(String content); void insert(String content);
void insert(const memoryview<String>& strings); void insert(const memoryview<String>& strings);
void erase(); void erase();
void move_cursors(const BufferCoord& offset); void move_cursors(CharCount move);
void move_cursors(LineCount move);
Buffer& buffer() const { return m_editor.buffer(); } Buffer& buffer() const { return m_editor.buffer(); }
Editor& editor() const { return m_editor; } Editor& editor() const { return m_editor; }

View File

@ -502,13 +502,13 @@ public:
else if (key == Key::Backspace) else if (key == Key::Backspace)
m_inserter.erase(); m_inserter.erase();
else if (key == Key::Left) else if (key == Key::Left)
m_inserter.move_cursors({0, -1}); m_inserter.move_cursors(-1_char);
else if (key == Key::Right) else if (key == Key::Right)
m_inserter.move_cursors({0, 1}); m_inserter.move_cursors(1_char);
else if (key == Key::Up) else if (key == Key::Up)
m_inserter.move_cursors({-1, 0}); m_inserter.move_cursors(-1_line);
else if (key == Key::Down) else if (key == Key::Down)
m_inserter.move_cursors({ 1, 0}); m_inserter.move_cursors(1_line);
else if (key.modifiers == Key::Modifiers::None) else if (key.modifiers == Key::Modifiers::None)
{ {
m_inserter.insert(codepoint_to_str(key.key)); m_inserter.insert(codepoint_to_str(key.key));