From: Just van Rossum Date: Mon, 31 Dec 2001 08:56:52 +0000 (+0000) Subject: added support for live feedback in scrollbars X-Git-Tag: v2.3c1~6923 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=31a4c22cee35c94f74a643953c03a408f13e26f5;p=python added support for live feedback in scrollbars --- diff --git a/Mac/Tools/IDE/Wcontrols.py b/Mac/Tools/IDE/Wcontrols.py index 71d734c931..ab6ae966e2 100644 --- a/Mac/Tools/IDE/Wcontrols.py +++ b/Mac/Tools/IDE/Wcontrols.py @@ -295,8 +295,11 @@ class Scrollbar(ControlWidget): """Standard scrollbar.""" - def __init__(self, possize, callback = None, value = 0, min = 0, max = 0): - procID = Controls.scrollBarProc + def __init__(self, possize, callback=None, value=0, min=0, max=0, livefeedback=1): + if livefeedback: + procID = Controls.kControlScrollBarLiveProc + else: + procID = Controls.scrollBarProc ControlWidget.__init__(self, possize, "", procID, callback, value, min, max) # interface @@ -373,34 +376,15 @@ class Scrollbar(ControlWidget): def click(self, point, modifiers): if not self._enabled: return - # custom TrackControl. A mousedown in a scrollbar arrow or page area should - # 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) + def hitter(ctl, part, self=self): if part: self._hit(part) + part = self._control.TrackControl(point, hitter) + if part: + self._hit(part) def _hit(self, part): + value = None if part == Controls.inThumb: try: value = self._control.GetControl32BitValue() @@ -416,7 +400,7 @@ class Scrollbar(ControlWidget): value = "++" elif part == Controls.inPageDown: value = "--" - if self._callback: + if value is not None and self._callback: Wbase.CallbackCall(self._callback, 1, value) def draw(self, visRgn = None):