LibGUI: Make Ctrl-Shift-Home/-End work again

Previously, the initial call to update_selection() was missing, so if no
text was already selected, then Ctrl-Shift-End would only move the
cursor to the document end, but not select any text.
This commit is contained in:
Ben Wiederhake 2021-10-12 19:49:33 +02:00 committed by Andreas Kling
parent 2f023acf78
commit 68884eefc6
Notes: sideshowbarker 2024-07-18 02:21:42 +09:00

View File

@ -120,38 +120,30 @@ bool EditingEngine::on_key(const KeyEvent& event)
} }
if (event.key() == KeyCode::Key_Home) { if (event.key() == KeyCode::Key_Home) {
m_editor->update_selection(event.shift());
if (event.ctrl()) { if (event.ctrl()) {
move_to_first_line(); move_to_first_line();
if (event.shift() && m_editor->selection().start().is_valid()) {
m_editor->selection().set_end(m_editor->cursor());
m_editor->did_update_selection();
}
} else { } else {
m_editor->update_selection(event.shift());
move_to_line_beginning(); move_to_line_beginning();
}
if (event.shift() && m_editor->selection().start().is_valid()) { if (event.shift() && m_editor->selection().start().is_valid()) {
m_editor->selection().set_end(m_editor->cursor()); m_editor->selection().set_end(m_editor->cursor());
m_editor->did_update_selection(); m_editor->did_update_selection();
} }
}
return true; return true;
} }
if (event.key() == KeyCode::Key_End) { if (event.key() == KeyCode::Key_End) {
m_editor->update_selection(event.shift());
if (event.ctrl()) { if (event.ctrl()) {
move_to_last_line(); move_to_last_line();
if (event.shift() && m_editor->selection().start().is_valid()) {
m_editor->selection().set_end(m_editor->cursor());
m_editor->did_update_selection();
}
} else { } else {
m_editor->update_selection(event.shift());
move_to_line_end(); move_to_line_end();
}
if (event.shift() && m_editor->selection().start().is_valid()) { if (event.shift() && m_editor->selection().start().is_valid()) {
m_editor->selection().set_end(m_editor->cursor()); m_editor->selection().set_end(m_editor->cursor());
m_editor->did_update_selection(); m_editor->did_update_selection();
} }
}
return true; return true;
} }