GTextEditor: Shift+Delete should delete the current line.

This commit is contained in:
Andreas Kling 2019-03-25 13:13:46 +01:00
parent fceeb9b695
commit 838a06096a
Notes: sideshowbarker 2024-07-19 14:56:45 +09:00
2 changed files with 22 additions and 4 deletions

View file

@ -379,6 +379,11 @@ void GTextEditor::keydown_event(GKeyEvent& event)
return;
}
if (event.modifiers() == Mod_Shift && event.key() == KeyCode::Key_Delete) {
delete_current_line();
return;
}
if (event.key() == KeyCode::Key_Delete) {
do_delete();
return;
@ -390,12 +395,24 @@ void GTextEditor::keydown_event(GKeyEvent& event)
return GWidget::keydown_event(event);
}
void GTextEditor::delete_current_line()
{
if (has_selection())
return delete_selection();
m_lines.remove(m_cursor.line());
if (m_lines.is_empty())
m_lines.append(make<Line>());
update_content_size();
update();
}
void GTextEditor::do_delete()
{
if (has_selection()) {
delete_selection();
return;
}
if (has_selection())
return delete_selection();
if (m_cursor.column() < current_line().length()) {
// Delete within line
current_line().remove(m_cursor.column());

View file

@ -94,6 +94,7 @@ public:
void copy();
void paste();
void do_delete();
void delete_current_line();
Function<void(GTextEditor&)> on_return_pressed;
Function<void(GTextEditor&)> on_escape_pressed;