mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
added support for live feedback in scrollbars
This commit is contained in:
parent
cae6da632a
commit
31a4c22cee
1 changed files with 11 additions and 27 deletions
|
@ -295,8 +295,11 @@ class Scrollbar(ControlWidget):
|
||||||
|
|
||||||
"""Standard scrollbar."""
|
"""Standard scrollbar."""
|
||||||
|
|
||||||
def __init__(self, possize, callback = None, value = 0, min = 0, max = 0):
|
def __init__(self, possize, callback=None, value=0, min=0, max=0, livefeedback=1):
|
||||||
procID = Controls.scrollBarProc
|
if livefeedback:
|
||||||
|
procID = Controls.kControlScrollBarLiveProc
|
||||||
|
else:
|
||||||
|
procID = Controls.scrollBarProc
|
||||||
ControlWidget.__init__(self, possize, "", procID, callback, value, min, max)
|
ControlWidget.__init__(self, possize, "", procID, callback, value, min, max)
|
||||||
|
|
||||||
# interface
|
# interface
|
||||||
|
@ -373,34 +376,15 @@ class Scrollbar(ControlWidget):
|
||||||
def click(self, point, modifiers):
|
def click(self, point, modifiers):
|
||||||
if not self._enabled:
|
if not self._enabled:
|
||||||
return
|
return
|
||||||
# custom TrackControl. A mousedown in a scrollbar arrow or page area should
|
def hitter(ctl, part, self=self):
|
||||||
# generate _control hits as long as the mouse is a) down, b) still in the same part
|
|
||||||
part = self._control.TestControl(point)
|
|
||||||
if Controls.inUpButton <= part <= Controls.inPageDown:
|
|
||||||
self._control.HiliteControl(part)
|
|
||||||
self._hit(part)
|
|
||||||
oldpart = part
|
|
||||||
# slight delay before scrolling at top speed...
|
|
||||||
now = Evt.TickCount()
|
|
||||||
while Evt.StillDown():
|
|
||||||
if (Evt.TickCount() - now) > 18: # 0.3 seconds
|
|
||||||
break
|
|
||||||
while Evt.StillDown():
|
|
||||||
part = self._control.TestControl(point)
|
|
||||||
if part == oldpart:
|
|
||||||
self._control.HiliteControl(part)
|
|
||||||
self._hit(part)
|
|
||||||
else:
|
|
||||||
self._control.HiliteControl(0)
|
|
||||||
self.SetPort()
|
|
||||||
point = Evt.GetMouse()
|
|
||||||
self._control.HiliteControl(0)
|
|
||||||
elif part == Controls.inThumb:
|
|
||||||
part = self._control.TrackControl(point)
|
|
||||||
if part:
|
if part:
|
||||||
self._hit(part)
|
self._hit(part)
|
||||||
|
part = self._control.TrackControl(point, hitter)
|
||||||
|
if part:
|
||||||
|
self._hit(part)
|
||||||
|
|
||||||
def _hit(self, part):
|
def _hit(self, part):
|
||||||
|
value = None
|
||||||
if part == Controls.inThumb:
|
if part == Controls.inThumb:
|
||||||
try:
|
try:
|
||||||
value = self._control.GetControl32BitValue()
|
value = self._control.GetControl32BitValue()
|
||||||
|
@ -416,7 +400,7 @@ class Scrollbar(ControlWidget):
|
||||||
value = "++"
|
value = "++"
|
||||||
elif part == Controls.inPageDown:
|
elif part == Controls.inPageDown:
|
||||||
value = "--"
|
value = "--"
|
||||||
if self._callback:
|
if value is not None and self._callback:
|
||||||
Wbase.CallbackCall(self._callback, 1, value)
|
Wbase.CallbackCall(self._callback, 1, value)
|
||||||
|
|
||||||
def draw(self, visRgn = None):
|
def draw(self, visRgn = None):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue