Преглед на файлове

Fixed delete key in UITextInput

Ivan Safrin преди 12 години
родител
ревизия
97373207cb
променени са 2 файла, в които са добавени 18 реда и са изтрити 16 реда
  1. 0 1
      Core/Contents/Source/PolyString.cpp
  2. 18 15
      Modules/Contents/UI/Source/PolyUITextInput.cpp

+ 0 - 1
Core/Contents/Source/PolyString.cpp

@@ -73,7 +73,6 @@ size_t String::getDataSizeWithEncoding(int encoding) const {
 			return NULL;
 			return NULL;
 	}
 	}
 }
 }
-
 const char *String::getDataWithEncoding(int encoding) const {
 const char *String::getDataWithEncoding(int encoding) const {
 	switch(encoding) {
 	switch(encoding) {
 		case ENCODING_UTF8: {
 		case ENCODING_UTF8: {

+ 18 - 15
Modules/Contents/UI/Source/PolyUITextInput.cpp

@@ -1946,7 +1946,7 @@ void UITextInput::onKeyDown(PolyKEY key, wchar_t charCode) {
 	
 	
 	bool _changedText = false;
 	bool _changedText = false;
 		
 		
-	if((charCode > 31 && charCode < 127) || charCode > 127) {
+	if(((charCode > 31 && charCode < 127) || charCode > 127) && key != KEY_DELETE) {
 		
 		
 		if(!isNumberOnly || (isNumberOnly && ((charCode > 47 && charCode < 58) || (charCode == '.' || charCode == '-')))) {
 		if(!isNumberOnly || (isNumberOnly && ((charCode > 47 && charCode < 58) || (charCode == '.' || charCode == '-')))) {
 			if(!isNumberOrCharacter(charCode)) { 
 			if(!isNumberOrCharacter(charCode)) { 
@@ -1984,31 +1984,34 @@ void UITextInput::onKeyDown(PolyKEY key, wchar_t charCode) {
 			deleteSelection();
 			deleteSelection();
 			return;
 			return;
 		} else {
 		} else {
-			ctext = lines[lineOffset];
-			if(caretPosition <= ctext.length()) {
+			ctext = lines[actualLineOffset].text;
+			if(actualCaretPosition < ctext.length()) {
 				if(ctext.length() > 0) {
 				if(ctext.length() > 0) {
-					String text2 = ctext.substr(caretPosition, ctext.length()-caretPosition);
-					ctext = ctext.substr(0,caretPosition-1);
+					String text2 = ctext.substr(actualCaretPosition+1, ctext.length()-actualCaretPosition);
+					ctext = ctext.substr(0,actualCaretPosition);
 					ctext += text2;
 					ctext += text2;
 					_changedText = true;
 					_changedText = true;
-					caretPosition--;
+				} else {
+					return;
 				}
 				}
 			} else {
 			} else {
-				if(lineOffset < lines.size() - 1) {
+				if(actualLineOffset < lines.size() - 1) {
 					saveUndoState();
 					saveUndoState();
-					lines[lineOffset] = ctext + lines[lineOffset+1];
-					removeLines(lineOffset+1, lineOffset+2);
-					caretPosition--;
+					lines[actualLineOffset].text = ctext + lines[actualLineOffset+1].text;
+					removeLines(actualLineOffset+1, actualLineOffset+1);
+					changedText(actualLineOffset, actualLineOffset);
 					updateCaretPosition();
 					updateCaretPosition();
 					return;
 					return;
+				} else {
+					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 (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(key == KEY_BACKSPACE) {