[Scummvm-cvs-logs] CVS: scummvm/gui console.cpp,1.7,1.8 console.h,1.7,1.8

Max Horn fingolfin at users.sourceforge.net
Sat Dec 14 14:11:04 CET 2002


Update of /cvsroot/scummvm/scummvm/gui
In directory sc8-pr-cvs1:/tmp/cvs-serv26777

Modified Files:
	console.cpp console.h 
Log Message:
scroll to caret if user types

Index: console.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/console.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- console.cpp	14 Dec 2002 21:57:30 -0000	1.7
+++ console.cpp	14 Dec 2002 22:10:37 -0000	1.8
@@ -149,6 +149,7 @@
 				_buffer[_promptEndPos % kBufferSize] = ' ';
 				_promptEndPos--;
 			}
+			scrollToCurrent();
 			draw();	// FIXME - not nice to redraw the full console just for one char!
 			break;
 /*
@@ -194,6 +195,7 @@
 					_buffer[(i+1) % kBufferSize] = _buffer[i % kBufferSize];
 				_promptEndPos++;
 				putchar((char)ascii);
+				scrollToCurrent();
 			}
 	}
 }
@@ -351,4 +353,17 @@
 	_gui->addDirtyRect(x, y, kCharWidth, kLineHeight);
 	
 	_caretVisible = !erase;
+}
+
+void ConsoleDialog::scrollToCurrent()
+{
+	int line = _currentPos / _lineWidth;
+	int displayLine = line - _scrollLine + _linesPerPage - 1;
+	
+	if (displayLine < 0) {
+		// TODO - this should only occur for loong edit lines, though
+	} else if (displayLine >= _linesPerPage) {
+		_scrollLine = _currentPos / _lineWidth;
+		updateScrollBar();
+	}
 }

Index: console.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/gui/console.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- console.h	14 Dec 2002 21:59:16 -0000	1.7
+++ console.h	14 Dec 2002 22:10:37 -0000	1.8
@@ -77,6 +77,7 @@
 	void print(const char *str);
 	void nextLine();
 	void updateScrollBar();
+	void scrollToCurrent();
 	inline int getBufferPos() const { return _currentPos % kBufferSize; }
 
 	// Line editing





More information about the Scummvm-git-logs mailing list