From 280a9a2f34c10224533ce81f824a2bbe1b94f1fc Mon Sep 17 00:00:00 2001 From: rhin123 Date: Sun, 25 Aug 2019 00:01:47 -0500 Subject: [PATCH] Terminal: Clear selection if we type behind/inside it --- Applications/Terminal/TerminalWidget.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Applications/Terminal/TerminalWidget.cpp b/Applications/Terminal/TerminalWidget.cpp index b0ff28cf9e..ce59aa7677 100644 --- a/Applications/Terminal/TerminalWidget.cpp +++ b/Applications/Terminal/TerminalWidget.cpp @@ -172,6 +172,16 @@ void TerminalWidget::keydown_event(GKeyEvent& event) if (event.alt()) write(m_ptm_fd, "\033", 1); + //Clear the selection if we type in/behind it + auto future_cursor_column = (event.key() == KeyCode::Key_Backspace) ? m_terminal.cursor_column() - 1 : m_terminal.cursor_column(); + auto min_selection_row = min(m_selection_start.row(), m_selection_end.row()); + auto max_selection_row = max(m_selection_start.row(), m_selection_end.row()); + + if (future_cursor_column <= max(m_selection_start.column(), m_selection_end.column()) && m_terminal.cursor_row() >= min_selection_row && m_terminal.cursor_row() <= max_selection_row) { + m_selection_end = {}; + update(); + } + write(m_ptm_fd, &ch, 1); } }