summaryrefslogtreecommitdiffstats
path: root/Mac
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 /Mac
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.
Diffstat (limited to 'Mac')
-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)