summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>1998-05-28 14:22:48 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>1998-05-28 14:22:48 (GMT)
commit41e825a8f408c034493a59a12fe4ab42bb96e78b (patch)
tree1efd241735ff3c5dcda812e2b2be7c97b27e32c6
parent848250c15b7436a0e8b869730e3a2fdd070fc030 (diff)
downloadcpython-41e825a8f408c034493a59a12fe4ab42bb96e78b.zip
cpython-41e825a8f408c034493a59a12fe4ab42bb96e78b.tar.gz
cpython-41e825a8f408c034493a59a12fe4ab42bb96e78b.tar.bz2
For ControlWindow there is a new method do_rawcontrolhit(), which gets
control before TrackControl is called. The default implementation calls TrackControl and then do_controlhit(). For ScrolledWindow, do_rawcontrol passes a tracker function to TrackControl if the mouse is in one of the arrows or grey areas, and the tracker handles scrolling. For the thumb part nothing has changed.
-rw-r--r--Mac/Lib/FrameWork.py50
1 files changed, 36 insertions, 14 deletions
diff --git a/Mac/Lib/FrameWork.py b/Mac/Lib/FrameWork.py
index 69378b5..647d9e4 100644
--- a/Mac/Lib/FrameWork.py
+++ b/Mac/Lib/FrameWork.py
@@ -803,16 +803,19 @@ class ControlsWindow(Window):
(what, message, when, where, modifiers) = event
SetPort(window) # XXXX Needed?
local = GlobalToLocal(where)
- ctltype, control = FindControl(local, window)
- if ctltype and control:
- pcode = control.TrackControl(local)
- if pcode:
- self.do_controlhit(window, control, pcode, event)
+ pcode, control = FindControl(local, window)
+ if pcode and control:
+ self.do_rawcontrolhit(window, control, pcode, local, event)
else:
if DEBUG: print "FindControl(%s, %s) -> (%s, %s)" % \
- (local, window, ctltype, control)
+ (local, window, pcode, control)
self.do_contentclick(local, modifiers, event)
+ def do_rawcontrolhit(self, window, control, pcode, local, event):
+ pcode = control.TrackControl(local)
+ if pcode:
+ self.do_controlhit(window, control, pcode, event)
+
class ScrolledWindow(ControlsWindow):
def __init__(self, parent):
self.barx = self.bary = None
@@ -878,16 +881,37 @@ class ScrolledWindow(ControlsWindow):
ValidRect((r - SCROLLBARWIDTH + 1, t, r, b - SCROLLBARWIDTH + 2)) # jvr
InvalRect((r - SCROLLBARWIDTH + 1, b - SCROLLBARWIDTH + 1, r, b)) # jvr, growicon
- def do_controlhit(self, window, control, pcode, event):
+
+ def do_rawcontrolhit(self, window, control, pcode, local, event):
if control == self.barx:
- bar = self.barx
which = 'x'
elif control == self.bary:
- bar = self.bary
which = 'y'
else:
return 0
- value = None
+ if pcode in (inUpButton, inDownButton, inPageUp, inPageDown):
+ # We do the work for the buttons and grey area in the tracker
+ dummy = control.TrackControl(local, self.do_controltrack)
+ else:
+ # but the thumb is handled here
+ pcode = control.TrackControl(local)
+ if pcode == inThumb:
+ value = control.GetControlValue()
+ print 'setbars', which, value #DBG
+ self.scrollbar_callback(which, 'set', value)
+ self.updatescrollbars()
+ else:
+ print 'funny part', pcode #DBG
+ return 1
+
+ def do_controltrack(self, control, pcode):
+ if control == self.barx:
+ which = 'x'
+ elif control == self.bary:
+ which = 'y'
+ else:
+ return
+
if pcode == inUpButton:
what = '-'
elif pcode == inDownButton:
@@ -897,11 +921,9 @@ class ScrolledWindow(ControlsWindow):
elif pcode == inPageDown:
what = '++'
else:
- what = 'set'
- value = bar.GetControlValue()
- self.scrollbar_callback(which, what, value)
+ return
+ self.scrollbar_callback(which, what, None)
self.updatescrollbars()
- return 1
def updatescrollbars(self):
SetPort(self.wid)