Window: refactor center_selection/display_selection_at
Take the line we are intersted in as a parameter rather than getting the main selection last char line.
This commit is contained in:
parent
94c9e4e99b
commit
ae75594d25
|
@ -129,7 +129,7 @@ void edit(CommandParameters params, Context& context)
|
||||||
|
|
||||||
context.selections() = context.buffer().clamp({ line, column });
|
context.selections() = context.buffer().clamp({ line, column });
|
||||||
if (context.has_window())
|
if (context.has_window())
|
||||||
context.window().center_selection();
|
context.window().center_line(context.selections().main().last().line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -224,7 +224,7 @@ void goto_commands(Context& context, int line)
|
||||||
context.push_jump();
|
context.push_jump();
|
||||||
select_coord<mode>(context.buffer(), LineCount{line - 1}, context.selections());
|
select_coord<mode>(context.buffer(), LineCount{line - 1}, context.selections());
|
||||||
if (context.has_window())
|
if (context.has_window())
|
||||||
context.window().center_selection();
|
context.window().center_line(LineCount{line-1});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -331,18 +331,19 @@ void view_commands(Context& context, int param)
|
||||||
if (key.modifiers != Key::Modifiers::None or not context.has_window())
|
if (key.modifiers != Key::Modifiers::None or not context.has_window())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
LineCount cursor_line = context.selections().main().last().line;
|
||||||
Window& window = context.window();
|
Window& window = context.window();
|
||||||
switch (tolower(key.key))
|
switch (tolower(key.key))
|
||||||
{
|
{
|
||||||
case 'v':
|
case 'v':
|
||||||
case 'c':
|
case 'c':
|
||||||
context.window().center_selection();
|
context.window().center_line(cursor_line);
|
||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
context.window().display_selection_at(0);
|
context.window().display_line_at(cursor_line, 0);
|
||||||
break;
|
break;
|
||||||
case 'b':
|
case 'b':
|
||||||
context.window().display_selection_at(window.dimensions().line-1);
|
context.window().display_line_at(cursor_line, window.dimensions().line-1);
|
||||||
break;
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
context.window().scroll(-std::max<CharCount>(1, param));
|
context.window().scroll(-std::max<CharCount>(1, param));
|
||||||
|
|
|
@ -42,18 +42,15 @@ Window::~Window()
|
||||||
m_options.unregister_watcher(*this);
|
m_options.unregister_watcher(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::display_selection_at(LineCount line)
|
void Window::display_line_at(LineCount buffer_line, LineCount display_line)
|
||||||
{
|
{
|
||||||
if (line >= 0 or line < m_dimensions.line)
|
if (display_line >= 0 or display_line < m_dimensions.line)
|
||||||
{
|
m_position.line = std::max(0_line, buffer_line - display_line);
|
||||||
auto cursor_line = selections().main().last().line;
|
|
||||||
m_position.line = std::max(0_line, cursor_line - line);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::center_selection()
|
void Window::center_line(LineCount buffer_line)
|
||||||
{
|
{
|
||||||
display_selection_at(m_dimensions.line/2_line);
|
display_line_at(buffer_line, m_dimensions.line/2_line);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::scroll(LineCount offset)
|
void Window::scroll(LineCount offset)
|
||||||
|
|
|
@ -33,8 +33,8 @@ public:
|
||||||
|
|
||||||
const DisplayBuffer& display_buffer() const { return m_display_buffer; }
|
const DisplayBuffer& display_buffer() const { return m_display_buffer; }
|
||||||
|
|
||||||
void center_selection();
|
void center_line(LineCount buffer_line);
|
||||||
void display_selection_at(LineCount line);
|
void display_line_at(LineCount buffer_line, LineCount display_line);
|
||||||
void scroll(LineCount offset);
|
void scroll(LineCount offset);
|
||||||
void scroll(CharCount offset);
|
void scroll(CharCount offset);
|
||||||
void update_display_buffer();
|
void update_display_buffer();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user