Author: turner
Date: Sat Jul 22 09:16:26 2006
New Revision: 23220
URL:
http://svn.reactos.org/svn/reactos?rev=23220&view=rev
Log:
Revert my backspace patch from before. I found a better way to handle backspaces which
doesnt break backspacing in ftp.exe(and some of apps) while still fixing ncftp.exe.
Modified:
trunk/reactos/subsystems/win32/csrss/win32csr/conio.c
Modified: trunk/reactos/subsystems/win32/csrss/win32csr/conio.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win…
==============================================================================
--- trunk/reactos/subsystems/win32/csrss/win32csr/conio.c (original)
+++ trunk/reactos/subsystems/win32/csrss/win32csr/conio.c Sat Jul 22 09:16:26 2006
@@ -607,8 +607,12 @@
&& Input->InputEvent.Event.KeyEvent.bKeyDown
&& Input->InputEvent.Event.KeyEvent.uChar.AsciiChar !=
'\0')
{
- /* backspace handling */
- if ('\b' == Input->InputEvent.Event.KeyEvent.uChar.AsciiChar)
+ /*
+ * backspace handling - if we are in charge of echoing it then we handle it
here
+ * otherwise we treat it like a normal char.
+ */
+ if ('\b' == Input->InputEvent.Event.KeyEvent.uChar.AsciiChar
&& 0
+ != (Console->Mode & ENABLE_ECHO_INPUT))
{
/* echo if it has not already been done, and either we or the client has
chars to be deleted */
if (! Input->Echoed
@@ -622,14 +626,14 @@
i -= 2; /* if we already have something to return, just back it
up by 2 */
}
else
- {
- /* otherwise, we will treat the backspace just like any other char and
let the client decide what to do */
+ { /* otherwise, return STATUS_NOTIFY_CLEANUP to tell client to
back up its buffer */
Console->WaitingChars--;
ConioUnlockConsole(Console);
HeapFree(Win32CsrApiHeap, 0, Input);
- Request->Data.ReadConsoleRequest.NrCharactersRead++;
- Buffer[i] = Input->InputEvent.Event.KeyEvent.uChar.AsciiChar;
- return Request->Status;
+ Request->Data.ReadConsoleRequest.NrCharactersRead = 0;
+ Request->Status = STATUS_NOTIFY_CLEANUP;
+ return STATUS_NOTIFY_CLEANUP;
+
}
Request->Data.ReadConsoleRequest.nCharsCanBeDeleted--;
Input->Echoed = TRUE; /* mark as echoed so we don't echo it below
*/