Implement Ctrl + backspace/delete to delete words
This commit is contained in:
parent
1d7e9c4ba5
commit
222d112f49
|
@ -1647,8 +1647,60 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
|
|||
case KEY_BACKSPACE: {
|
||||
if (readonly)
|
||||
break;
|
||||
backspace_at_cursor();
|
||||
|
||||
|
||||
#ifdef APPLE_STYLE_KEYS
|
||||
if (k.mod.alt) {
|
||||
#else
|
||||
if (k.mod.alt) {
|
||||
scancode_handled=false;
|
||||
break;
|
||||
} else if (k.mod.command) {
|
||||
#endif
|
||||
int line=cursor.line;
|
||||
int column=cursor.column;
|
||||
|
||||
bool prev_char=false;
|
||||
bool only_whitespace=true;
|
||||
|
||||
while (only_whitespace && line > 0) {
|
||||
|
||||
while (column>0) {
|
||||
CharType c=text[line][column-1];
|
||||
|
||||
if (c != '\t' && c != ' ') {
|
||||
only_whitespace=false;
|
||||
break;
|
||||
}
|
||||
|
||||
column--;
|
||||
}
|
||||
|
||||
if (only_whitespace) {
|
||||
line--;
|
||||
column=text[line].length();
|
||||
}
|
||||
}
|
||||
|
||||
while (column>0) {
|
||||
bool ischar=_is_text_char(text[line][column-1]);
|
||||
|
||||
if (prev_char && !ischar)
|
||||
break;
|
||||
|
||||
prev_char=ischar;
|
||||
column--;
|
||||
|
||||
}
|
||||
|
||||
_remove_text(line, column, cursor.line, cursor.column);
|
||||
|
||||
cursor_set_line(line);
|
||||
cursor_set_column(column);
|
||||
|
||||
} else {
|
||||
backspace_at_cursor();
|
||||
}
|
||||
|
||||
} break;
|
||||
case KEY_LEFT: {
|
||||
|
||||
|
@ -1789,10 +1841,63 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
|
|||
if (cursor.line==text.size()-1 && cursor.column==curline_len)
|
||||
break; //nothing to do
|
||||
|
||||
int next_line = cursor.column<curline_len?cursor.line:cursor.line+1;
|
||||
int next_column = cursor.column<curline_len?(cursor.column+1):0;
|
||||
int next_line=cursor.column<curline_len?cursor.line:cursor.line+1;
|
||||
int next_column;
|
||||
|
||||
#ifdef APPLE_STYLE_KEYS
|
||||
if (k.mod.alt) {
|
||||
#else
|
||||
if (k.mod.alt) {
|
||||
scancode_handled=false;
|
||||
break;
|
||||
} else if (k.mod.command) {
|
||||
#endif
|
||||
int last_line=text.size()-1;
|
||||
|
||||
int line=cursor.line;
|
||||
int column=cursor.column;
|
||||
|
||||
bool prev_char=false;
|
||||
bool only_whitespace=true;
|
||||
|
||||
while (only_whitespace && line < last_line) {
|
||||
|
||||
while (column<text[line].length()) {
|
||||
CharType c=text[line][column];
|
||||
|
||||
if (c != '\t' && c != ' ') {
|
||||
only_whitespace=false;
|
||||
break;
|
||||
}
|
||||
|
||||
column++;
|
||||
}
|
||||
|
||||
if (only_whitespace) {
|
||||
line++;
|
||||
column=0;
|
||||
}
|
||||
}
|
||||
|
||||
while (column<text[line].length()) {
|
||||
|
||||
bool ischar=_is_text_char(text[line][column]);
|
||||
|
||||
if (prev_char && !ischar)
|
||||
break;
|
||||
prev_char=ischar;
|
||||
column++;
|
||||
}
|
||||
|
||||
next_line=line;
|
||||
next_column=column;
|
||||
} else {
|
||||
next_column=cursor.column<curline_len?(cursor.column+1):0;
|
||||
}
|
||||
|
||||
_remove_text(cursor.line,cursor.column,next_line,next_column);
|
||||
update();
|
||||
|
||||
} break;
|
||||
#ifdef APPLE_STYLE_KEYS
|
||||
case KEY_HOME: {
|
||||
|
|
Loading…
Reference in New Issue