Просмотр исходного кода

Merge pull request #361 from MattTuttle/deleteKey

Delete key removes following character in PolyUITextInput
Ivan Safrin 12 лет назад
Родитель
Сommit
8e8b88df50
1 измененных файлов с 33 добавлено и 0 удалено
  1. 33 0
      Modules/Contents/UI/Source/PolyUITextInput.cpp

+ 33 - 0
Modules/Contents/UI/Source/PolyUITextInput.cpp

@@ -1978,6 +1978,39 @@ void UITextInput::onKeyDown(PolyKEY key, wchar_t charCode) {
 		_changedText = true;		
 	}
 	
+	if(key == KEY_DELETE) {
+		if(hasSelection) {
+			saveUndoState();
+			deleteSelection();
+			return;
+		} else {
+			ctext = lines[lineOffset];
+			if(caretPosition <= ctext.length()) {
+				if(ctext.length() > 0) {
+					String text2 = ctext.substr(caretPosition, ctext.length()-caretPosition);
+					ctext = ctext.substr(0,caretPosition-1);
+					ctext += text2;
+					_changedText = true;
+					caretPosition--;
+				}
+			} else {
+				if(lineOffset < lines.size() - 1) {
+					saveUndoState();
+					lines[lineOffset] = ctext + lines[lineOffset+1];
+					removeLines(lineOffset+1, lineOffset+2);
+					caretPosition--;
+					updateCaretPosition();
+					return;
+				}
+			}
+		}
+		if(multiLine) {
+			if(linesContainer->getPosition().y + (lineOffset*(lineHeight+lineSpacing)+padding) < 0.0) {
+				scrollContainer->setScrollValue(0.0, ((((lineOffset) * ((lineHeight+lineSpacing)))) + padding)/(scrollContainer->getContentSize().y-scrollContainer->getHeight()));
+			}
+		}
+	}
+	
 	if(key == KEY_BACKSPACE) {
 		if(hasSelection) {
 			saveUndoState();