[ros-diffs] [turner] 23220: 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.

turner at svn.reactos.org turner at svn.reactos.org
Sat Jul 22 07:16:26 CEST 2006


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/win32csr/conio.c?rev=23220&r1=23219&r2=23220&view=diff
==============================================================================
--- 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 */




More information about the Ros-diffs mailing list