Jelajahi Sumber

A few fixes to text input single line scrolling.

- Fixed a problem on deleteSelection
- Fixed a problem with select
cib 12 tahun lalu
induk
melakukan
22dc4607a8
1 mengubah file dengan 5 tambahan dan 5 penghapusan
  1. 5 5
      Modules/Contents/UI/Source/PolyUITextInput.cpp

+ 5 - 5
Modules/Contents/UI/Source/PolyUITextInput.cpp

@@ -713,9 +713,9 @@ void UITextInput::dragSelectionTo(Number x, Number y) {
 	
 	int len = selectToLine.length();
 	Number slen = 0;
-	int caretPosition = bufferLines[0]->getLabel()->getTextWidthForString(selectToLine.substr(0,len));
+	int caretPosition = bufferLines[0]->getLabel()->getTextWidthForString(selectToLine.substr(0,len)) - horizontalPixelScroll;
 	for(int i=0; i < len; i++) {
-		slen = bufferLines[0]->getLabel()->getTextWidthForString(selectToLine.substr(0,i));
+		slen = bufferLines[0]->getLabel()->getTextWidthForString(selectToLine.substr(0,i)) - horizontalPixelScroll;
 		if(slen > x) {
 			caretPosition = i;
 			break;
@@ -872,8 +872,8 @@ void UITextInput::setCaretToMouse(Number x, Number y) {
 	int newCaretPosition = -1;
 	
 	for(int i=1; i < len; i++) {
-		slen = bufferLines[0]->getLabel()->getTextWidthForString(lines[lineOffset].substr(0,i));
-		Number slen_prev = bufferLines[0]->getLabel()->getTextWidthForString(lines[lineOffset].substr(0,i-1));		
+		slen = bufferLines[0]->getLabel()->getTextWidthForString(lines[lineOffset].substr(0,i)) - horizontalPixelScroll;
+		Number slen_prev = bufferLines[0]->getLabel()->getTextWidthForString(lines[lineOffset].substr(0,i-1)) - horizontalPixelScroll;		
 		if(x >= slen_prev && x <= slen) {
 			if(x < slen_prev + ((slen - slen_prev) /2.0)) {
 				newCaretPosition = i-1;
@@ -1490,7 +1490,7 @@ void UITextInput::readjustBuffer() {
 		} else {
 			bufferLines[i]->setText("");
 		}
-		bufferLines[i]->setPosition(0, (i*(lineHeight+lineSpacing)),0.0f);	
+		bufferLines[i]->setPosition(-horizontalPixelScroll, (i*(lineHeight+lineSpacing)),0.0f);	
 	}
 	
 	for(int i=0; i < numberLines.size(); i++) {