瀏覽代碼

UITextInput will now keep current line offset after word wrap on resize

Ivan Safrin 12 年之前
父節點
當前提交
cb41aa7e19
共有 1 個文件被更改,包括 5 次插入0 次删除
  1. 5 0
      Modules/Contents/UI/Source/PolyUITextInput.cpp

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

@@ -662,9 +662,12 @@ void UITextInput::setSyntaxHighlighter(UITextInputSyntaxHighlighter *syntaxHighl
 void UITextInput::doMultilineResize() {
 void UITextInput::doMultilineResize() {
 
 
 	if(multiLine) {
 	if(multiLine) {
+		int bufferOffset = -linesContainer->position.y/ ( lineHeight+lineSpacing);	
+		int realLineOffset = wordWrapLines[bufferOffset].actualLineNumber;
 		if(width != lastResizeWidth) {	
 		if(width != lastResizeWidth) {	
 			updateWordWrap(0, lines.size()-1);
 			updateWordWrap(0, lines.size()-1);
 		}
 		}
+		showLine(realLineOffset, true);
 		renumberLines();
 		renumberLines();
 		restructLines();		
 		restructLines();		
 		readjustBuffer();
 		readjustBuffer();
@@ -1645,6 +1648,8 @@ void UITextInput::showLine(unsigned int lineNumber, bool top) {
 	if(!multiLine) {
 	if(!multiLine) {
 		return;
 		return;
 	}
 	}
+	
+	scrollContainer->setContentSize(width,  (((wordWrapLines.size()+1) * ((lineHeight+lineSpacing)))) + padding);
 
 
 	if(top) {
 	if(top) {
 		scrollContainer->setScrollValue(0.0, ((((offsetLineNumber) * ((lineHeight+lineSpacing)))) + padding)/(scrollContainer->getContentSize().y-scrollContainer->getHeight()));
 		scrollContainer->setScrollValue(0.0, ((((offsetLineNumber) * ((lineHeight+lineSpacing)))) + padding)/(scrollContainer->getContentSize().y-scrollContainer->getHeight()));