From 33a21904a702191cebf0e81b4deba2dfa10a406c Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Mon, 12 Aug 2019 22:47:42 +0900 Subject: [PATCH] Cygwin: console: Add workaround for windows xterm compatible mode bug. - The horizontal tab positions are broken after resizing console window. This seems to be a bug of xterm compatible mode of windows console. This workaround fixes this problem. --- winsup/cygwin/fhandler_console.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc index df28c7f93..b46a4d513 100644 --- a/winsup/cygwin/fhandler_console.cc +++ b/winsup/cygwin/fhandler_console.cc @@ -327,6 +327,25 @@ fhandler_console::send_winch_maybe () { con.scroll_region.Top = 0; con.scroll_region.Bottom = -1; + if (wincap.has_con_24bit_colors ()) + { + /* Workaround for a bug of windows xterm compatible mode. */ + /* The horizontal tab positions are broken after resize. */ + DWORD dwLen; + CONSOLE_SCREEN_BUFFER_INFO sbi; + GetConsoleScreenBufferInfo (get_output_handle (), &sbi); + /* Clear all horizontal tabs */ + WriteConsole (get_output_handle (), "\033[3g", 4, &dwLen, 0); + /* Set horizontal tabs */ + for (int col=8; colkill_pgrp (SIGWINCH); return true; }