summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-05-29 00:14:05 +0000
committerMaxime Coste <frrrwww@gmail.com>2012-05-29 00:14:05 +0000
commit6fa40796e7c21b6505ad6791e607cc40fd23e256 (patch)
tree64048784b3c4abe88c66f6984de2c56ad6d5a0bd /src
parent7451423ce32a4759c2fbbad4ff6e51a664b98c71 (diff)
Fix Window::scroll_to_keep_cursor_visible_ifn
Diffstat (limited to 'src')
-rw-r--r--src/window.cc28
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