diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2012-05-29 00:14:05 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2012-05-29 00:14:05 +0000 |
| commit | 6fa40796e7c21b6505ad6791e607cc40fd23e256 (patch) | |
| tree | 64048784b3c4abe88c66f6984de2c56ad6d5a0bd /src | |
| parent | 7451423ce32a4759c2fbbad4ff6e51a664b98c71 (diff) | |
Fix Window::scroll_to_keep_cursor_visible_ifn
Diffstat (limited to 'src')
| -rw-r--r-- | src/window.cc | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/src/window.cc b/src/window.cc index 91e9baa4..310d58c8 100644 --- a/src/window.cc +++ b/src/window.cc @@ -93,24 +93,16 @@ void Window::set_dimensions(const DisplayCoord& dimensions) void Window::scroll_to_keep_cursor_visible_ifn() { - DisplayCoord cursor = line_and_column_at(selections().back().last()); - if (cursor.line < 0) - { - m_position.line = std::max(m_position.line + cursor.line, 0); - } - else if (cursor.line >= m_dimensions.line) - { - m_position.line += cursor.line - (m_dimensions.line - 1); - } - - if (cursor.column < 0) - { - m_position.column = std::max(m_position.column + cursor.column, 0); - } - else if (cursor.column >= m_dimensions.column) - { - m_position.column += cursor.column - (m_dimensions.column - 1); - } + BufferCoord cursor = buffer().line_and_column_at(selections().back().last()); + if (cursor.line < m_position.line) + m_position.line = cursor.line; + else if (cursor.line >= m_position.line + m_dimensions.line) + m_position.line = cursor.line - (m_dimensions.line - 1); + + if (cursor.column < m_position.column) + m_position.column = cursor.column; + else if (cursor.column >= m_position.column + m_dimensions.column) + m_position.column = cursor.column - (m_dimensions.column - 1); } String Window::status_line() const |
