Better support for ESCAPE when used with allow arrows

This commit is contained in:
mysticbbs 2012-09-24 02:37:40 -04:00
parent 3894f706ca
commit 39284514c1
1 changed files with 39 additions and 37 deletions

View File

@ -120,28 +120,29 @@ Uses
Constructor TBBSIO.Create (Var Owner: Pointer); Constructor TBBSIO.Create (Var Owner: Pointer);
Begin Begin
Core := Owner; Core := Owner;
FmtString := False; FmtString := False;
FmtLen := 0; FmtLen := 0;
FmtType := 0; FmtType := 0;
InMacro := False; InMacro := False;
InMacroPos := 0; InMacroPos := 0;
InMacroStr := ''; InMacroStr := '';
AllowPause := False; AllowPause := False;
AllowMCI := True; AllowMCI := True;
LocalInput := False; LocalInput := False;
AllowArrow := False; AllowArrow := False;
IsArrow := False; IsArrow := False;
UseInField := True; UseInField := True;
UseInLimit := False; UseInLimit := False;
UseInSize := False; UseInSize := False;
InLimit := 0; InLimit := 0;
InSize := 0; InSize := 0;
NoFile := False; NoFile := False;
Graphics := 1; Graphics := 1;
PausePtr := 1; PausePtr := 1;
LastMCIValue := ''; LastMCIValue := '';
InputPos := 0; InputPos := 0;
GetKeyCallBack := NIL;
FillChar(OutBuffer, SizeOf(OutBuffer), 0); FillChar(OutBuffer, SizeOf(OutBuffer), 0);
@ -1188,7 +1189,7 @@ Begin
Handles[0] := Input.ConIn; Handles[0] := Input.ConIn;
If Not TBBSCore(Core).LocalMode Then Begin If Not TBBSCore(Core).LocalMode Then Begin
If TBBSCore(Core).Client.DataWaiting Then If TBBSCore(Core).Client.FInBufPos < TBBSCore(Core).Client.FInBufEnd Then
InType := 2 InType := 2
Else Begin Else Begin
Handles[1] := SocketEvent; Handles[1] := SocketEvent;
@ -1252,20 +1253,21 @@ Begin
#19 : Result := #75; { left } #19 : Result := #75; { left }
#24 : Result := #80; { down } #24 : Result := #80; { down }
#27 : Begin #27 : Begin
If Not TBBSCore(Core).Client.DataWaiting Then WaitMS(25); If Not TBBSCore(Core).Client.DataWaiting Then WaitMS(50);
If Not TBBSCore(Core).Client.DataWaiting Then WaitMS(25);
If TBBSCore(Core).Client.DataWaiting Then Begin If TBBSCore(Core).Client.PeekChar(0) = '[' Then Begin
If TBBSCore(Core).Client.ReadChar = '[' Then TBBSCore(Core).Client.ReadChar;
Case TBBSCore(Core).Client.ReadChar of
'A' : Result := #72; { ansi up } Case TBBSCore(Core).Client.ReadChar of
'B' : Result := #80; { ansi down } 'A' : Result := #72; { ansi up }
'C' : Result := #77; { ansi right } 'B' : Result := #80; { ansi down }
'D' : Result := #75; { ansi left } 'C' : Result := #77; { ansi right }
'H' : Result := #71; { ansi home } 'D' : Result := #75; { ansi left }
'K' : Result := #79; { ansi end } 'H' : Result := #71; { ansi home }
'V' : Result := #73; { ansi pageup } 'K' : Result := #79; { ansi end }
'U' : Result := #81; { ansi pgdown } 'V' : Result := #73; { ansi pageup }
End; 'U' : Result := #81; { ansi pgdown }
End;
End Else End Else
IsArrow := False; IsArrow := False;
End; End;