summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2019-05-01 08:25:40 +0200
committerGitHub <noreply@github.com>2019-05-01 08:25:40 +0200
commit59b553b2af958b6fba019f8fb78326053039b2d3 (patch)
tree4ad5b3790818cc9fa82ee69703e8aed3c99a2458
parent47338a8056415879fc2565fc18cc357e3bcf32d5 (diff)
parentb0956915c9607c7ea1cfd19108c6889e7cf9fc79 (diff)
Merge pull request #28493 from mitchcurtis/mac-line
Make Command + Left go to first non-whitespace character
-rw-r--r--scene/gui/text_edit.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 3eb4e6d75a..729d3025c4 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -2610,9 +2610,22 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
#ifdef APPLE_STYLE_KEYS
if (k->get_command()) {
- cursor_set_column(0);
+ // Start at first column (it's slightly faster that way) and look for the first non-whitespace character.
+ int new_cursor_pos = 0;
+ for (int i = 0; i < text[cursor.line].length(); ++i) {
+ if (!_is_whitespace(text[cursor.line][i])) {
+ new_cursor_pos = i;
+ break;
+ }
+ }
+ if (new_cursor_pos == cursor.column) {
+ // We're already at the first text character, so move to the very beginning of the line.
+ cursor_set_column(0);
+ } else {
+ // We're somewhere to the right of the first text character; move to the first one.
+ cursor_set_column(new_cursor_pos);
+ }
} else if (k->get_alt()) {
-
#else
if (k->get_alt()) {
scancode_handled = false;