1 parent b066ee0 commit f861681Copy full SHA for f861681
3 files changed
libs/pyTermTk/TermTk/TTkAbstract/abstractscrollarea.py
@@ -106,7 +106,7 @@ def resizeEvent(self, w: int, h: int) -> None:
106
@pyTTkSlot()
107
def _viewportChanged(self) -> None:
108
''' Internal slot to handle viewport changes and update scroll bar ranges and visibility '''
109
- if not self._viewport or not self.isVisible(): return
+ if self._processing or not self._viewport or not self.isVisible(): return
110
w,h = self.size()
111
fw, fh = self._viewport.viewFullAreaSize()
112
dw, dh = self._viewport.viewDisplayedSize()
@@ -126,21 +126,19 @@ def _viewportChanged(self) -> None:
126
self._horizontalScrollBar.setValue(ox)
127
128
if self._verticalScrollBarPolicy == TTkK.ScrollBarAsNeeded:
129
- if h<=4 or w<=1 or vrange<=0:
+ if w<=self._verticalScrollBar.minimumWidth() or vrange<=0:
130
self._verticalScrollBar.hide()
131
- elif dh>self._verticalScrollBar.minimumHeight()+1:
132
- # we need enough space to display the bar to avoid endless loop
+ elif dh>=self._verticalScrollBar.minimumHeight():
133
self._verticalScrollBar.show()
134
elif self._verticalScrollBarPolicy == TTkK.ScrollBarAlwaysOn:
135
136
else:
137
138
139
if self._horizontalScrollBarPolicy == TTkK.ScrollBarAsNeeded:
140
- if w<=4 or h<=1 or hrange<=0:
+ if h<=self._horizontalScrollBar.minimumHeight() or hrange<=0:
141
self._horizontalScrollBar.hide()
142
- elif dw>self._horizontalScrollBar.minimumWidth()+1:
143
+ elif dw>=self._horizontalScrollBar.minimumWidth():
144
self._horizontalScrollBar.show()
145
elif self._horizontalScrollBarPolicy == TTkK.ScrollBarAlwaysOn:
146
libs/pyTermTk/TermTk/TTkCore/canvas.py
@@ -390,16 +390,15 @@ def drawScroll(self, pos, size, slider, orientation, color=TTkColor.RST):
390
self._set(y,x+i, TTkCfg.theme.hscroll[1], color)
391
for i in range(f,t): # Slider
392
self._set(y,x+i, TTkCfg.theme.hscroll[2], color)
393
- self._set(y,x, TTkCfg.theme.hscroll[0], color) # Left Arrow
394
self._set(y,x+size-1, TTkCfg.theme.hscroll[3], color) # Right Arrow
+ self._set(y,x, TTkCfg.theme.hscroll[0], color) # Left Arrow
395
396
for i in range(y+1,y+size-1): # V line
397
self._set(y+i,x, TTkCfg.theme.vscroll[1], color)
398
399
self._set(y+i,x, TTkCfg.theme.vscroll[2], color)
400
- self._set(y,x, TTkCfg.theme.vscroll[0], color) # Up Arrow
401
self._set(y+size-1,x, TTkCfg.theme.vscroll[3], color) # Down Arrow
402
- pass
+ self._set(y,x, TTkCfg.theme.vscroll[0], color) # Up Arrow
403
404
def drawTabMenuButton(
405
self, pos, size, text, slim=False,
libs/pyTermTk/TermTk/TTkWidgets/scrollbar.py
@@ -84,12 +84,7 @@ def __init__(self, *,
84
85
TTkWidget.__init__(self, **kwargs)
86
87
- if self._orientation == TTkK.VERTICAL:
88
- self.setMaximumWidth(1)
89
- self.setMinimumSize(1,3)
90
- else:
91
- self.setMaximumHeight(1)
92
- self.setMinimumSize(3,1)
+ self.setMinimumSize(1,1)
93
self.setFocusPolicy(TTkK.ClickFocus)
94
95
def orientation(self):
@@ -181,7 +176,7 @@ def mouseDragEvent(self, evt:TTkMouseEvent) -> bool:
181
176
182
177
size2 = size-2
183
178
asciiStep = self._screenScroller[1] - self._screenScroller[0]
184
- asciiDrawingSize = size2 - asciiStep
179
+ asciiDrawingSize = max(1, size2 - asciiStep)
185
180
186
a = aa * (self._maximum - self._minimum) // asciiDrawingSize
187
0 commit comments