diff --git a/TermTk/TTkWidgets/TTkTerminal/terminal_screen.py b/TermTk/TTkWidgets/TTkTerminal/terminal_screen.py index a777b80c..daf75621 100644 --- a/TermTk/TTkWidgets/TTkTerminal/terminal_screen.py +++ b/TermTk/TTkWidgets/TTkTerminal/terminal_screen.py @@ -81,6 +81,10 @@ class _TTkTerminalScreen(_TTkTerminalScreen_CSI, _TTkTerminalScreen_C1): return self._terminalCursor def resize(self, w, h): + # I normalize the size to the default terminal + # to avoid negative or zerosized term + w = max(80,w) + h = max(24,h) ow, oh = self._w, self._h # st,sb = self._scrollingRegion # if oh <= h: # Terminal height decreasing @@ -94,13 +98,13 @@ class _TTkTerminalScreen(_TTkTerminalScreen_CSI, _TTkTerminalScreen_C1): newCanvas = TTkCanvas(width=w, height=h) s = (0,0,w,h) newCanvas.paintCanvas(self._canvas,s,s,s) + self._canvas = newCanvas self._canvasNewLine += [True]*h self._canvasLineSize += [0]*h self._canvasNewLine = self._canvasNewLine[:h] self._canvasLineSize = self._canvasLineSize[:h] - self._canvas = newCanvas x,y = self._terminalCursor self._terminalCursor = (max(0,min(x,w-1)),max(0,min(y,h-1))) @@ -109,6 +113,7 @@ class _TTkTerminalScreen(_TTkTerminalScreen_CSI, _TTkTerminalScreen_C1): w,h = self._w, self._h st,sb = self._scrollingRegion self._last = txt[-1] if txt else None + # TTkLog.error(f"P: {x=} {y=} {w=} {h=} {len(txt)=}") for bi, tout in enumerate(txt.split('\a')): # grab the bells if bi: diff --git a/TermTk/TTkWidgets/TTkTerminal/terminal_screen_CSI.py b/TermTk/TTkWidgets/TTkTerminal/terminal_screen_CSI.py index 41137366..77c683e7 100644 --- a/TermTk/TTkWidgets/TTkTerminal/terminal_screen_CSI.py +++ b/TermTk/TTkWidgets/TTkTerminal/terminal_screen_CSI.py @@ -473,7 +473,8 @@ class _TTkTerminalScreen_CSI(): # CSI Ps d Line Position Absolute [row] (default = [1,column]) (VPA). def _CSI_d_VPA(self, ps, _): x,y = self._terminalCursor - self._terminalCursor = (x,ps-1) + w,h = self._w, self._h + self._terminalCursor = (x,max(0,min(h-1,ps-1))) # CSI Ps e Line Position Relative [rows] (default = [row+1,column]) # (VPR). diff --git a/TermTk/TTkWidgets/TTkTerminal/terminalview.py b/TermTk/TTkWidgets/TTkTerminal/terminalview.py index da55898d..ba43ce14 100644 --- a/TermTk/TTkWidgets/TTkTerminal/terminalview.py +++ b/TermTk/TTkWidgets/TTkTerminal/terminalview.py @@ -159,8 +159,6 @@ class TTkTerminalView(TTkAbstractScrollView, _TTkTerminal_CSI_DEC): def _resizeScreen(self): w,h = self.size() self._screen_current.resize(w,h) - - def resizeEvent(self, w: int, h: int): if self._fd: # s = struct.pack('HHHH', 0, 0, 0, 0) # t = fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, s) @@ -169,6 +167,8 @@ class TTkTerminalView(TTkAbstractScrollView, _TTkTerminal_CSI_DEC): t = fcntl.ioctl(self._fd, termios.TIOCSWINSZ, s) # termios.tcsetwinsize(self._fd,(h,w)) + def resizeEvent(self, w: int, h: int): + if self._resize_pipe: os.write(self._resize_pipe[1], b'resize') diff --git a/tests/timeit/20.thread.01.muitex.py b/tests/timeit/20.thread.01.mutex.py similarity index 94% rename from tests/timeit/20.thread.01.muitex.py rename to tests/timeit/20.thread.01.mutex.py index b451339b..3b528865 100755 --- a/tests/timeit/20.thread.01.muitex.py +++ b/tests/timeit/20.thread.01.mutex.py @@ -35,7 +35,8 @@ def test1(): ret = 1 mutex.acquire() for x in test: - ret = max(ret,x*x) + # ret = max(ret,x*x) + ret += x # max(ret,x*x) mutex.release() return ret @@ -43,7 +44,8 @@ def test2(): ret = 1 for x in test: mutex.acquire() - ret = max(ret,x*x) + # ret = max(ret,x*x) + ret += x # max(ret,x*x) mutex.release() return ret