@@ -446,14 +446,8 @@ int Driver::MainLoop() {
446
446
m_debugger.SetUseExternalEditor (m_option_data.m_use_external_editor );
447
447
m_debugger.SetShowInlineDiagnostics (true );
448
448
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 ();
457
451
458
452
SBCommandInterpreter sb_interpreter = m_debugger.GetCommandInterpreter ();
459
453
@@ -629,21 +623,24 @@ int Driver::MainLoop() {
629
623
return sb_interpreter.GetQuitStatus ();
630
624
}
631
625
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 () {
638
627
struct winsize window_size;
639
628
if ((isatty (STDIN_FILENO) != 0 ) &&
640
629
::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
644
636
}
645
637
}
646
638
639
+ void sigwinch_handler (int signo) {
640
+ if (g_driver != nullptr )
641
+ g_driver->UpdateWindowSize ();
642
+ }
643
+
647
644
void sigint_handler (int signo) {
648
645
#ifdef _WIN32 // Restore handler as it is not persistent on Windows
649
646
signal (SIGINT, sigint_handler);
0 commit comments