From 1a34b8d7f79cf72f6cbbdd548e3a904838833661 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 24 Dec 2016 15:03:38 -0500 Subject: [PATCH] turn on buffer status pane cursor position display again --- src/gui/BufferPane.cc | 3 ++- src/gui/BufferPane.h | 2 ++ src/gui/BufferStatusPane.cc | 4 +--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gui/BufferPane.cc b/src/gui/BufferPane.cc index b678c90..847f684 100644 --- a/src/gui/BufferPane.cc +++ b/src/gui/BufferPane.cc @@ -88,10 +88,11 @@ int BufferPane::rows_in_line(const Buffer::Iterator & start_of_line) int BufferPane::rows_in_line_with_iterator_offset(const Buffer::Iterator & start_of_line, const Buffer::Iterator & reference, int * iterator_row_offset) { int saved_row_offset = 0; - walk_line(start_of_line, [&saved_row_offset, &reference, &iterator_row_offset](int row_offset, int screen_column, int virtual_column, int character_width, const Buffer::Iterator & i) { + walk_line(start_of_line, [this, &saved_row_offset, &reference, &iterator_row_offset](int row_offset, int screen_column, int virtual_column, int character_width, const Buffer::Iterator & i) { uint32_t code_point = *i; if (i == reference) { + m_cursor_virtual_column = virtual_column; *iterator_row_offset = row_offset; } if ((code_point != '\n') && (code_point != 0xFFFFFFFFu)) diff --git a/src/gui/BufferPane.h b/src/gui/BufferPane.h index 46219da..520ed1a 100644 --- a/src/gui/BufferPane.h +++ b/src/gui/BufferPane.h @@ -15,6 +15,8 @@ public: void resize(int width, int height) override; void draw(); void handle_key(uint32_t keyval); + size_t line() const { return m_iterator->line(); } + size_t column() const { return m_cursor_virtual_column; } protected: enum class CursorMovement : uint8_t diff --git a/src/gui/BufferStatusPane.cc b/src/gui/BufferStatusPane.cc index 2749c0d..17230e6 100644 --- a/src/gui/BufferStatusPane.cc +++ b/src/gui/BufferStatusPane.cc @@ -4,9 +4,8 @@ void BufferStatusPane::draw() { m_gl->draw_rect(win_x(0), win_y(m_font->get_line_height()), m_width, 1, 0.5, 0.5, 0.5, 1.0); m_gl->draw_rect(win_x(0), win_y(0), m_width, m_font->get_line_height(), 0.0, 0.0, 0.0, 1.0); -#if 0 char cursor_position[20]; - sprintf(cursor_position, "%zu, %zu", m_buffer_pane->cursor()->line() + 1, m_buffer_pane->cursor()->column() + 1u); + sprintf(cursor_position, "%zu, %zu", m_buffer_pane->line() + 1, m_buffer_pane->column() + 1u); int cursor_position_length = strlen(cursor_position); int x = m_width - m_font->get_advance() * cursor_position_length; for (int i = 0; i < cursor_position_length; i++) @@ -14,5 +13,4 @@ void BufferStatusPane::draw() m_gl->draw_character(win_x(x), win_y(0), cursor_position[i], *m_font); x += m_font->get_advance(); } -#endif }