mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:27:35 +00:00
LibVT: Don't crash when clicking outside of the terminal's buffer area
When resizing a terminal window the number of columns may change. Previously we assumed that this also affects lines which were in the terminal's buffer while that is not necessarily true.
This commit is contained in:
parent
c503a28e19
commit
21ee0ad6fc
1 changed files with 4 additions and 3 deletions
|
@ -592,8 +592,9 @@ VT::Position TerminalWidget::buffer_position_at(const Gfx::IntPoint& position) c
|
|||
column = 0;
|
||||
if (row >= m_terminal.rows())
|
||||
row = m_terminal.rows() - 1;
|
||||
if (column >= m_terminal.columns())
|
||||
column = m_terminal.columns() - 1;
|
||||
auto& line = m_terminal.line(row);
|
||||
if (column >= (int)line.length())
|
||||
column = line.length() - 1;
|
||||
row += m_scrollbar->value();
|
||||
return { row, column };
|
||||
}
|
||||
|
@ -736,7 +737,7 @@ void TerminalWidget::doubleclick_event(GUI::MouseEvent& event)
|
|||
start_column = column;
|
||||
}
|
||||
|
||||
for (int column = position.column(); column < m_terminal.columns() && (line.code_point(column) == ' ') == want_whitespace; ++column) {
|
||||
for (int column = position.column(); column < (int)line.length() && (line.code_point(column) == ' ') == want_whitespace; ++column) {
|
||||
end_column = column;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue