mirror of https://gitlab.com/ita1024/waf.git
ansiterm fix: use FillConsoleOutputCharacterW instead of FillConsoleOutputCharacterA
This commit is contained in:
parent
303c6113fa
commit
d897666aa7
|
@ -3,7 +3,7 @@ try:
|
|||
if not (sys.stderr.isatty() and sys.stdout.isatty()):
|
||||
raise ValueError('not a tty')
|
||||
|
||||
from ctypes import Structure, windll, c_short, c_ushort, c_ulong, c_int, byref, POINTER, c_long, c_char
|
||||
from ctypes import Structure, windll, c_short, c_ushort, c_ulong, c_int, byref, POINTER, c_long, c_wchar
|
||||
|
||||
class COORD(Structure):
|
||||
_fields_ = [("X", c_short), ("Y", c_short)]
|
||||
|
@ -23,8 +23,8 @@ try:
|
|||
windll.kernel32.GetConsoleScreenBufferInfo.restype = c_long
|
||||
windll.kernel32.SetConsoleTextAttribute.argtypes = [c_ulong, c_ushort]
|
||||
windll.kernel32.SetConsoleTextAttribute.restype = c_long
|
||||
windll.kernel32.FillConsoleOutputCharacterA.argtypes = [c_ulong, c_char, c_ulong, POINTER(COORD), POINTER(c_ulong)]
|
||||
windll.kernel32.FillConsoleOutputCharacterA.restype = c_long
|
||||
windll.kernel32.FillConsoleOutputCharacterW.argtypes = [c_ulong, c_wchar, c_ulong, POINTER(COORD), POINTER(c_ulong)]
|
||||
windll.kernel32.FillConsoleOutputCharacterW.restype = c_long
|
||||
windll.kernel32.FillConsoleOutputAttribute.argtypes = [c_ulong, c_ushort, c_ulong, POINTER(COORD), POINTER(c_ulong) ]
|
||||
windll.kernel32.FillConsoleOutputAttribute.restype = c_long
|
||||
windll.kernel32.SetConsoleCursorPosition.argtypes = [c_ulong, POINTER(COORD) ]
|
||||
|
@ -87,7 +87,7 @@ else:
|
|||
line_start = sbinfo.CursorPosition
|
||||
line_length = sbinfo.Size.X - sbinfo.CursorPosition.X
|
||||
chars_written = c_ulong()
|
||||
windll.kernel32.FillConsoleOutputCharacterA(self.hconsole, c_char(' '), line_length, line_start, byref(chars_written))
|
||||
windll.kernel32.FillConsoleOutputCharacterW(self.hconsole, c_wchar(' '), line_length, line_start, byref(chars_written))
|
||||
windll.kernel32.FillConsoleOutputAttribute(self.hconsole, sbinfo.Attributes, line_length, line_start, byref(chars_written))
|
||||
|
||||
def clear_screen(self, param):
|
||||
|
@ -104,7 +104,7 @@ else:
|
|||
clear_start = sbinfo.CursorPosition
|
||||
clear_length = ((sbinfo.Size.X - sbinfo.CursorPosition.X) + sbinfo.Size.X * (sbinfo.Size.Y - sbinfo.CursorPosition.Y))
|
||||
chars_written = c_ulong()
|
||||
windll.kernel32.FillConsoleOutputCharacterA(self.hconsole, c_char(' '), clear_length, clear_start, byref(chars_written))
|
||||
windll.kernel32.FillConsoleOutputCharacterW(self.hconsole, c_wchar(' '), clear_length, clear_start, byref(chars_written))
|
||||
windll.kernel32.FillConsoleOutputAttribute(self.hconsole, sbinfo.Attributes, clear_length, clear_start, byref(chars_written))
|
||||
|
||||
def push_cursor(self, param):
|
||||
|
|
Loading…
Reference in New Issue