@@ -446,14 +446,8 @@ int Driver::MainLoop() {
446446 m_debugger.SetUseExternalEditor (m_option_data.m_use_external_editor );
447447 m_debugger.SetShowInlineDiagnostics (true );
448448
449- struct winsize window_size;
450- if ((isatty (STDIN_FILENO) != 0 ) &&
451- ::ioctl (STDIN_FILENO, TIOCGWINSZ, &window_size) == 0) {
452- if (window_size.ws_col > 0 )
453- m_debugger.SetTerminalWidth (window_size.ws_col );
454- if (window_size.ws_row > 0 )
455- m_debugger.SetTerminalHeight (window_size.ws_row );
456- }
449+ // Set the terminal dimensions.
450+ UpdateWindowSize ();
457451
458452 SBCommandInterpreter sb_interpreter = m_debugger.GetCommandInterpreter ();
459453
@@ -629,21 +623,24 @@ int Driver::MainLoop() {
629623 return sb_interpreter.GetQuitStatus ();
630624}
631625
632- void Driver::ResizeWindow (unsigned short col, unsigned short row) {
633- GetDebugger ().SetTerminalWidth (col);
634- GetDebugger ().SetTerminalHeight (row);
635- }
636-
637- void sigwinch_handler (int signo) {
626+ void Driver::UpdateWindowSize () {
638627 struct winsize window_size;
639628 if ((isatty (STDIN_FILENO) != 0 ) &&
640629 ::ioctl (STDIN_FILENO, TIOCGWINSZ, &window_size) == 0) {
641- if ((window_size.ws_col > 0 ) && g_driver != nullptr ) {
642- g_driver->ResizeWindow (window_size.ws_col , window_size.ws_row );
643- }
630+ if (window_size.ws_col > 0 )
631+ m_debugger.SetTerminalWidth (window_size.ws_col );
632+ #ifndef _WIN32
633+ if (window_size.ws_row > 0 )
634+ m_debugger.SetTerminalHeight (window_size.ws_row );
635+ #endif
644636 }
645637}
646638
639+ void sigwinch_handler (int signo) {
640+ if (g_driver != nullptr )
641+ g_driver->UpdateWindowSize ();
642+ }
643+
647644void sigint_handler (int signo) {
648645#ifdef _WIN32 // Restore handler as it is not persistent on Windows
649646 signal (SIGINT, sigint_handler);
0 commit comments