scroll through file with J/K keys
This commit is contained in:
parent
d8fcbcd428
commit
b1684f1341
@ -23,6 +23,8 @@ public:
|
|||||||
auto crbegin() const { return m_lines.crbegin(); }
|
auto crbegin() const { return m_lines.crbegin(); }
|
||||||
auto crend() const { return m_lines.crend(); }
|
auto crend() const { return m_lines.crend(); }
|
||||||
|
|
||||||
|
int get_num_lines() { return m_lines.size(); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
LinesType m_lines;
|
LinesType m_lines;
|
||||||
/* TODO: delete this */
|
/* TODO: delete this */
|
||||||
|
@ -111,6 +111,7 @@ bool Window::create(std::shared_ptr<Buffer> buffer)
|
|||||||
m_programs.text->set_color(1.0, 1.0, 1.0, 1.0);
|
m_programs.text->set_color(1.0, 1.0, 1.0, 1.0);
|
||||||
|
|
||||||
m_buffer = buffer;
|
m_buffer = buffer;
|
||||||
|
m_line = 0;
|
||||||
|
|
||||||
resize();
|
resize();
|
||||||
|
|
||||||
@ -149,6 +150,20 @@ void Window::handle_event(SDL_Event & event)
|
|||||||
case SDLK_ESCAPE:
|
case SDLK_ESCAPE:
|
||||||
m_exit_requested = true;
|
m_exit_requested = true;
|
||||||
break;
|
break;
|
||||||
|
case SDLK_j:
|
||||||
|
if (m_line < m_buffer->get_num_lines() - 1)
|
||||||
|
{
|
||||||
|
m_line++;
|
||||||
|
redraw();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SDLK_k:
|
||||||
|
if (m_line > 0)
|
||||||
|
{
|
||||||
|
m_line--;
|
||||||
|
redraw();
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -185,8 +200,13 @@ void Window::redraw()
|
|||||||
int advance = m_font.get_advance();
|
int advance = m_font.get_advance();
|
||||||
int line_height = m_font.get_line_height();
|
int line_height = m_font.get_line_height();
|
||||||
int y = m_height - line_height;
|
int y = m_height - line_height;
|
||||||
|
int line_number = 0;
|
||||||
for (auto line = m_buffer->cbegin(); line != m_buffer->cend(); line++)
|
for (auto line = m_buffer->cbegin(); line != m_buffer->cend(); line++)
|
||||||
{
|
{
|
||||||
|
if (line_number++ < m_line)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
int x = 0;
|
int x = 0;
|
||||||
for (int i = 0, len = (*line)->size(); i < len; i++)
|
for (int i = 0, len = (*line)->size(); i < len; i++)
|
||||||
{
|
{
|
||||||
|
@ -29,6 +29,8 @@ protected:
|
|||||||
Font m_font;
|
Font m_font;
|
||||||
|
|
||||||
std::shared_ptr<Buffer> m_buffer;
|
std::shared_ptr<Buffer> m_buffer;
|
||||||
|
|
||||||
|
int m_line;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user