diff options
| author | Carl Olsson | 2015-03-23 08:19:20 +1000 |
|---|---|---|
| committer | Carl Olsson | 2015-03-23 08:19:20 +1000 |
| commit | fb2cdfe7edcc2ccafea7604afd104f582e5b9c17 (patch) | |
| tree | d9555d9519648f95d7ed3663fbca50978bb12a1f /scene/gui/text_edit.cpp | |
| parent | 41686d5fdd0d72f167894f976d19b177789f1f63 (diff) | |
| parent | e9f94ce8d2cc6805e74fffdf733e6dc5b5c530f5 (diff) | |
| download | godot-fb2cdfe7edcc2ccafea7604afd104f582e5b9c17.tar.gz godot-fb2cdfe7edcc2ccafea7604afd104f582e5b9c17.tar.zst godot-fb2cdfe7edcc2ccafea7604afd104f582e5b9c17.zip | |
Merge branch 'master' of https://github.com/not-surt/godot into snapping2
Conflicts:
tools/editor/plugins/canvas_item_editor_plugin.cpp
tools/editor/plugins/canvas_item_editor_plugin.h
Diffstat (limited to 'scene/gui/text_edit.cpp')
| -rw-r--r-- | scene/gui/text_edit.cpp | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 8855627bb..b26b55f07 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -498,7 +498,29 @@ void TextEdit::_notification(int p_what) { for(int j=from;j<text[i].length();j++) { CharType cc = text[i][j]; - if (cc==c) + //ignore any brackets inside a string + if (cc== '"' | cc == '\'') { + CharType quotation = cc; + do { + j++; + if (!(j<text[i].length())) { + break; + } + cc=text[i][j]; + //skip over escaped quotation marks inside strings + if (cc=='\\') { + bool escaped = true; + while (j+1<text[i].length() && text[i][j+1]=='\\') { + escaped=!escaped; + j++; + } + if (escaped) { + j++; + continue; + } + } + } while (cc!= quotation); + } else if (cc==c) stack++; else if (cc==closec) stack--; @@ -547,7 +569,30 @@ void TextEdit::_notification(int p_what) { for(int j=from;j>=0;j--) { CharType cc = text[i][j]; - if (cc==c) + //ignore any brackets inside a string + if (cc== '"' | cc == '\'') { + CharType quotation = cc; + do { + j--; + if (!(j>=0)) { + break; + } + cc=text[i][j]; + //skip over escaped quotation marks inside strings + if (cc==quotation) { + bool escaped = false; + while (j-1>=0 && text[i][j-1]=='\\') { + escaped=!escaped; + j--; + } + if (escaped) { + j--; + cc='\\'; + continue; + } + } + } while (cc!= quotation); + } else if (cc==c) stack++; else if (cc==closec) stack--; @@ -1345,7 +1390,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { return; } - if (k.scancode==KEY_HOME) { + if (k.scancode==KEY_HOME && completion_index>0) { completion_index=0; completion_current=completion_options[completion_index]; @@ -1354,7 +1399,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { return; } - if (k.scancode==KEY_END) { + if (k.scancode==KEY_END && completion_index<completion_options.size()-1) { completion_index=completion_options.size()-1; completion_current=completion_options[completion_index]; |
