Index: base/setup/usetup/interface/usetup.c =================================================================== --- base/setup/usetup/interface/usetup.c (revision 66925) +++ base/setup/usetup/interface/usetup.c (working copy) @@ -24,8 +24,17 @@ * PROGRAMMER: Eric Kohl * Casper S. Hornstrup (chorns@users.sourceforge.net) * Hervé Poussineau (hpoussin@reactos.org) + * Gerhard Gruber (sparhawk@gmx.at) */ +/** + ChangeLog: + + 2015.03.15 sparhawk + Changed the input field for creating a partition with user defined + size, to make it looke like an input field. +*/ + #include #include "bootsup.h" @@ -1724,6 +1733,7 @@ CHAR ch; SHORT iLeft; SHORT iTop; + DWORD redraw; if (Quit != NULL) *Quit = FALSE; @@ -1757,13 +1767,41 @@ sprintf(Buffer, "%lu", MaxSize); Index = strlen(Buffer); - DrawInputField(PARTITION_SIZE_INPUT_FIELD_LENGTH, - iLeft, - iTop, - Buffer); + coPos.X = iLeft; + coPos.Y = iTop; + redraw = TRUE; + while (TRUE) { + if(redraw) + { + DWORD blen = strlen(Buffer); + COORD cursor; + + FillConsoleOutputAttribute( + StdOutput, + BACKGROUND_WHITE, + blen, + coPos, + &Written); + + cursor.Y = coPos.Y; + cursor.X = coPos.X+PARTITION_SIZE_INPUT_FIELD_LENGTH-1; + FillConsoleOutputAttribute( + StdOutput, + FOREGROUND_WHITE, + 1, + cursor, + &Written); + + DrawInputField(PARTITION_SIZE_INPUT_FIELD_LENGTH, + iLeft, + iTop, + Buffer); + } + redraw = FALSE; + CONSOLE_ConInKey(&Ir); if ((Ir.Event.KeyEvent.uChar.AsciiChar == 0x00) && @@ -1792,11 +1830,7 @@ { Index--; Buffer[Index] = 0; - - DrawInputField(PARTITION_SIZE_INPUT_FIELD_LENGTH, - iLeft, - iTop, - Buffer); + redraw = TRUE; } else if ((Ir.Event.KeyEvent.uChar.AsciiChar != 0x00) && (Index < PARTITION_SIZE_INPUT_FIELD_LENGTH)) @@ -1808,11 +1842,7 @@ Buffer[Index] = ch; Index++; Buffer[Index] = 0; - - DrawInputField(PARTITION_SIZE_INPUT_FIELD_LENGTH, - iLeft, - iTop, - Buffer); + redraw = TRUE; } } }