Browse Source

Return null instead if empty and fix a bug that was returning the terminator as input.

BDisp 8 months ago
parent
commit
bdcc0ff6d4

+ 2 - 2
Terminal.Gui/ConsoleDrivers/AnsiEscapeSequence/AnsiEscapeSequenceRequest.cs

@@ -126,8 +126,8 @@ public class AnsiEscapeSequenceRequest
     /// </summary>
     public string? ExpectedResponseValue { get; init; }
 
-    internal void RaiseResponseFromInput (AnsiEscapeSequenceRequest ansiRequest, string response) { ResponseFromInput?.Invoke (ansiRequest, response); }
+    internal void RaiseResponseFromInput (AnsiEscapeSequenceRequest ansiRequest, string? response) { ResponseFromInput?.Invoke (ansiRequest, response); }
 
     // QUESTION: What is this for? Please provide a descriptive comment.
-    internal event EventHandler<string>? ResponseFromInput;
+    internal event EventHandler<string?>? ResponseFromInput;
 }

+ 1 - 1
Terminal.Gui/ConsoleDrivers/CursesDriver/UnixMainLoop.cs

@@ -248,7 +248,7 @@ internal class UnixMainLoop : IMainLoopDriver
                                 {
                                     EscSeqRequests.Statuses.TryDequeue (out _);
 
-                                    seqReqStatus.AnsiRequest.RaiseResponseFromInput (seqReqStatus.AnsiRequest, string.Empty);
+                                    seqReqStatus.AnsiRequest.RaiseResponseFromInput (seqReqStatus.AnsiRequest, null);
                                 }
                             }
 

+ 1 - 1
Terminal.Gui/ConsoleDrivers/NetDriver/NetEvents.cs

@@ -94,7 +94,7 @@ internal class NetEvents : IDisposable
                         {
                             EscSeqRequests.Statuses.TryDequeue (out _);
 
-                            seqReqStatus.AnsiRequest.RaiseResponseFromInput (seqReqStatus.AnsiRequest, string.Empty);
+                            seqReqStatus.AnsiRequest.RaiseResponseFromInput (seqReqStatus.AnsiRequest, null);
                         }
                     }
 

+ 5 - 1
Terminal.Gui/ConsoleDrivers/WindowsDriver/WindowsConsole.cs

@@ -978,6 +978,8 @@ internal class WindowsConsole
                     {
                         seqReqStatus.AnsiRequest.Response = ansiSequence.ToString ();
                         seqReqStatus.AnsiRequest.RaiseResponseFromInput (seqReqStatus.AnsiRequest, seqReqStatus.AnsiRequest.Response);
+                        // Clear the terminator for not be enqueued
+                        inputRecord = default (InputRecord);
                     }
 
                     _retries = 0;
@@ -992,7 +994,9 @@ internal class WindowsConsole
                             {
                                 _mainLoop.EscSeqRequests.Statuses.TryDequeue (out _);
 
-                                seqReqStatus.AnsiRequest.RaiseResponseFromInput (seqReqStatus.AnsiRequest, string.Empty);
+                                seqReqStatus.AnsiRequest.RaiseResponseFromInput (seqReqStatus.AnsiRequest, null);
+                                // Clear the terminator for not be enqueued
+                                inputRecord = default (InputRecord);
                             }
                         }