mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 17:55:09 +00:00
GTextEditor: The Home key should jump to the first non-space character
Press Home twice to get to column 0. This feels way more natural.
This commit is contained in:
parent
532001f4c1
commit
4fa8acf6ea
2 changed files with 15 additions and 1 deletions
|
@ -568,8 +568,12 @@ void GTextEditor::keydown_event(GKeyEvent& event)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!event.ctrl() && event.key() == KeyCode::Key_Home) {
|
if (!event.ctrl() && event.key() == KeyCode::Key_Home) {
|
||||||
|
int first_nonspace_column = current_line().first_non_whitespace_column();
|
||||||
toggle_selection_if_needed_for_event(event);
|
toggle_selection_if_needed_for_event(event);
|
||||||
set_cursor(m_cursor.line(), 0);
|
if (m_cursor.column() == first_nonspace_column)
|
||||||
|
set_cursor(m_cursor.line(), 0);
|
||||||
|
else
|
||||||
|
set_cursor(m_cursor.line(), first_nonspace_column);
|
||||||
if (event.shift() && m_selection.start().is_valid()) {
|
if (event.shift() && m_selection.start().is_valid()) {
|
||||||
m_selection.set_end(m_cursor);
|
m_selection.set_end(m_cursor);
|
||||||
did_update_selection();
|
did_update_selection();
|
||||||
|
@ -1447,6 +1451,15 @@ int GTextEditor::Line::visual_line_containing(int column) const
|
||||||
return visual_line_index;
|
return visual_line_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int GTextEditor::Line::first_non_whitespace_column() const
|
||||||
|
{
|
||||||
|
for (int i = 0; i < length(); ++i) {
|
||||||
|
if (!isspace(m_text[i]))
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
return length();
|
||||||
|
}
|
||||||
|
|
||||||
void GTextEditor::add_custom_context_menu_action(GAction& action)
|
void GTextEditor::add_custom_context_menu_action(GAction& action)
|
||||||
{
|
{
|
||||||
m_custom_context_menu_actions.append(action);
|
m_custom_context_menu_actions.append(action);
|
||||||
|
|
|
@ -233,6 +233,7 @@ private:
|
||||||
void clear();
|
void clear();
|
||||||
void recompute_visual_lines();
|
void recompute_visual_lines();
|
||||||
int visual_line_containing(int column) const;
|
int visual_line_containing(int column) const;
|
||||||
|
int first_non_whitespace_column() const;
|
||||||
|
|
||||||
template<typename Callback>
|
template<typename Callback>
|
||||||
void for_each_visual_line(Callback) const;
|
void for_each_visual_line(Callback) const;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue