Fix Insert mode.

svn path=/trunk/; revision=62700
This commit is contained in:
Hermès Bélusca-Maïto 2014-04-10 20:24:49 +00:00
parent cd05473bf9
commit 1f1924d7f1
5 changed files with 10 additions and 9 deletions

View file

@ -260,7 +260,7 @@ ConDrvReadConsole(IN PCONSOLE Console,
Console->LineComplete = FALSE;
Console->LineUpPressed = FALSE;
Console->LineInsertToggle = 0;
Console->LineInsertToggle = Console->InsertMode;
Console->LineWakeupMask = ReadControl->dwCtrlWakeupMask;
Console->LineSize = ReadControl->nInitialChars;
Console->LinePos = Console->LineSize;

View file

@ -569,7 +569,8 @@ ConDrvInitConsole(OUT PHANDLE NewConsoleHandle,
Console->InsertMode = ConsoleInfo->InsertMode;
Console->LineBuffer = NULL;
Console->LineMaxSize = Console->LineSize = Console->LinePos = 0;
Console->LineComplete = Console->LineUpPressed = Console->LineInsertToggle = FALSE;
Console->LineComplete = Console->LineUpPressed = FALSE;
Console->LineInsertToggle = Console->InsertMode;
// LineWakeupMask
// FIXME: This is terminal-specific !! VV

View file

@ -298,7 +298,7 @@ ConioEffectiveCursorSize(PCONSOLE Console, DWORD Scale)
{
DWORD Size = (Console->ActiveBuffer->CursorInfo.dwSize * Scale + 99) / 100;
/* If line input in progress, perhaps adjust for insert toggle */
if (Console->LineBuffer && !Console->LineComplete && Console->LineInsertToggle)
if (Console->LineBuffer && !Console->LineComplete && (Console->InsertMode ? !Console->LineInsertToggle : Console->LineInsertToggle))
return (Size * 2 <= Scale) ? (Size * 2) : (Size / 2);
return Size;
}

View file

@ -444,8 +444,8 @@ LineInputKeyDown(PCONSOLE Console, KEY_EVENT_RECORD *KeyEvent)
else
{
/* Normal character */
BOOL Overstrike = Console->LineInsertToggle && Console->LinePos != Console->LineSize;
LineInputEdit(Console, Overstrike, 1, &KeyEvent->uChar.UnicodeChar);
BOOL Overstrike = !Console->LineInsertToggle && (Console->LinePos != Console->LineSize);
LineInputEdit(Console, (Overstrike ? 1 : 0), 1, &KeyEvent->uChar.UnicodeChar);
}
}
}

View file

@ -267,17 +267,17 @@ ConSrvReadUserSettings(IN OUT PCONSOLE_INFO ConsoleInfo,
}
else if (!wcscmp(szValueName, L"HistoryNoDup"))
{
ConsoleInfo->HistoryNoDup = (BOOLEAN)Value;
ConsoleInfo->HistoryNoDup = !!Value;
RetVal = TRUE;
}
else if (!wcscmp(szValueName, L"QuickEdit"))
{
ConsoleInfo->QuickEdit = (BOOLEAN)Value;
ConsoleInfo->QuickEdit = !!Value;
RetVal = TRUE;
}
else if (!wcscmp(szValueName, L"InsertMode"))
{
ConsoleInfo->InsertMode = (BOOLEAN)Value;
ConsoleInfo->InsertMode = !!Value;
RetVal = TRUE;
}
else if (!wcscmp(szValueName, L"ScreenBufferSize"))
@ -421,7 +421,7 @@ ConSrvGetDefaultSettings(IN OUT PCONSOLE_INFO ConsoleInfo,
memcpy(ConsoleInfo->Colors, s_Colors, sizeof(s_Colors));
// ConsoleInfo->CodePage;
ConsoleInfo->CodePage = 0;
ConsoleInfo->ConsoleTitle[0] = L'\0';