private void processInputEvent(INPUT_RECORD inputRecord) { if (inputRecord.EventType == EventType.WINDOW_BUFFER_SIZE_EVENT) { if (usingLinux) { // Reinitializing ncurses to deal with new dimensions // http://stackoverflow.com/questions/13707137/ncurses-resizing-glitch NCurses.endwin(); // Needs to be called after an endwin() so ncurses will initialize // itself with the new terminal dimensions. NCurses.refresh(); NCurses.clear(); } COORD dwSize = inputRecord.WindowBufferSizeEvent.dwSize; // Invoke default handler if no custom handlers attached and // userCanvasSize and userRootElementRect are not defined if (TerminalSizeChanged == null && userCanvasSize.IsEmpty && userRootElementRect.IsEmpty) { OnTerminalSizeChangedDefault(this, new TerminalSizeChangedEventArgs(dwSize.X, dwSize.Y)); } else if (TerminalSizeChanged != null) { TerminalSizeChanged.Invoke(this, new TerminalSizeChangedEventArgs(dwSize.X, dwSize.Y)); } // Refresh whole display renderer.FinallyApplyChangesToCanvas(true); return; } eventManager.ParseInputEvent(inputRecord, mainControl); }