changeset 18241:450f50d3eb18 stable

GUI: Use WriteConsoleInput for sending terminal newline (Bug #41123) * libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp (QConsolePrivate::sendConsoleText): Use WriteConsoleInput instead of SendMessage to send newline to console.
author John Donoghue <john.donoghue@ieee.org>
date Tue, 07 Jan 2014 10:57:09 -0500
parents f26d527c1a71
children 36057e2411f8
files libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp
diffstat 1 files changed, 16 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp	Tue Jan 07 16:01:44 2014 -0500
+++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp	Tue Jan 07 10:57:09 2014 -0500
@@ -1184,14 +1184,22 @@
         {
           if (c == L'\r' && i < (len - 1) && s.at (i+1) == L'\n')
             i++;
-          if (nEvents)
-            {
-              WriteConsoleInput (hStdIn, events, nEvents, &written);
-              nEvents = 0;
-              ZeroMemory (events, sizeof (events));
-            }
-          PostMessage (m_consoleWindow, WM_KEYDOWN, VK_RETURN, 0x001C0001);
-          PostMessage (m_consoleWindow, WM_KEYDOWN, VK_RETURN, 0xC01C0001);
+
+          // add new line
+          events[nEvents].EventType                        = KEY_EVENT;
+          events[nEvents].Event.KeyEvent.bKeyDown          = TRUE;
+          events[nEvents].Event.KeyEvent.wRepeatCount      = 1;
+          events[nEvents].Event.KeyEvent.wVirtualKeyCode   =
+            VK_RETURN;
+          events[nEvents].Event.KeyEvent.wVirtualScanCode  = 0;
+          events[nEvents].Event.KeyEvent.uChar.UnicodeChar = c.unicode ();
+          events[nEvents].Event.KeyEvent.dwControlKeyState = 0;
+          nEvents++;
+ 
+          WriteConsoleInput (hStdIn, events, nEvents, &written);
+          nEvents = 0;
+          ZeroMemory (events, sizeof (events));
+ 
         }
       else
         {