From d825356878eefda3c5ff8cd4395afee9a846f23e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 17 Apr 2012 23:23:45 +0200 Subject: [PATCH] Fix windows console bug Line input cursor was going crazy when input reached right side of the screen --- library/Console-windows.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/library/Console-windows.cpp b/library/Console-windows.cpp index 8c507d610..d4d47303f 100644 --- a/library/Console-windows.cpp +++ b/library/Console-windows.cpp @@ -223,12 +223,13 @@ namespace DFHack size_t plen = prompt.size(); const char * buf = raw_buffer.c_str(); size_t len = raw_buffer.size(); + int cooked_cursor = raw_cursor; - while ((plen + raw_cursor) >= cols) + while ((plen + cooked_cursor) >= cols) { buf++; len--; - raw_cursor--; + cooked_cursor--; } while (plen + len > cols) { @@ -247,7 +248,7 @@ namespace DFHack output(tmp, inf.dwSize.X - (plen + len), len + plen, inf.dwCursorPosition.Y); free(tmp); } - inf.dwCursorPosition.X = (SHORT)(raw_cursor + plen); + inf.dwCursorPosition.X = (SHORT)(cooked_cursor + plen); SetConsoleCursorPosition(console_out, inf.dwCursorPosition); }