Fix for autoscroll bug:

This commit is contained in:
Greg Wiatroski 2007-03-20 22:59:43 +00:00
parent fc20e548d9
commit ab72021e6e

View File

@ -109,10 +109,11 @@ class DirectScrolledList(DirectFrame):
self.initialiseoptions(DirectScrolledList)
self.recordMaxHeight()
#if len(self["items"]) > 0:
# self.scrollTo(0)
self.scrollTo(0)
# test
base.sl = self
def setForceHeight(self):
assert self.notify.debugStateCall(self)
self.forceHeight = self["forceHeight"]
@ -157,7 +158,7 @@ class DirectScrolledList(DirectFrame):
def scrollBy(self, delta):
assert self.notify.debugStateCall(self)
# print "scrollBy[", delta,"]"
#print "scrollBy[", delta,"]"
return self.scrollTo(self.index + delta)
def getItemIndexForItemID(self, itemID):
@ -169,13 +170,13 @@ class DirectScrolledList(DirectFrame):
return 0
if(type(self["items"][0])!=types.InstanceType):
print "warning: getItemIndexForItemID: cant find itemID for non-class list items!"
self.notify.warning("getItemIndexForItemID: cant find itemID for non-class list items!")
return 0
for i in range(len(self["items"])):
if(self["items"][i].itemID == itemID):
return i
print "warning: getItemIndexForItemID: item not found!"
self.notify.warning("getItemIndexForItemID: item not found!")
return 0
def scrollToItemID(self, itemID, centered=0):
@ -185,7 +186,7 @@ class DirectScrolledList(DirectFrame):
def scrollTo(self, index, centered=0):
""" scrolls list so selected index is at top, or centered in box"""
assert self.notify.debugStateCall(self)
# print "scrollTo[", index,"] called, len(self[items])=", len(self["items"])," self[numItemsVisible]=", self["numItemsVisible"]
#print "scrollTo[", index,"] called, len(self[items])=", len(self["items"])," self[numItemsVisible]=", self["numItemsVisible"]
try:
self["numItemsVisible"]
except:
@ -211,16 +212,21 @@ class DirectScrolledList(DirectFrame):
else:
if (self.index <= 0):
self.index = 0
self.__buttonUp(0)
self.decButton['state'] = DGG.DISABLED
self.incButton['state'] = DGG.NORMAL
ret = 0
elif (self.index >= (numItemsTotal - numItemsVisible)):
self.index = numItemsTotal - numItemsVisible
# print "at list end, ", len(self["items"])," ", self["numItemsVisible"]
self.__buttonUp(0)
self.incButton['state'] = DGG.DISABLED
self.decButton['state'] = DGG.NORMAL
ret = 0
else:
# deal with an edge condition - make sure any tasks are removed from the disabled arrows.
if (self.incButton['state'] == DGG.DISABLED) or (self.decButton['state'] == DGG.DISABLED):
self.__buttonUp(0)
self.incButton['state'] = DGG.NORMAL
self.decButton['state'] = DGG.NORMAL
ret = 1
@ -270,7 +276,7 @@ class DirectScrolledList(DirectFrame):
# If the item is a 'str', then it has not been created
# Therefore, use the the function given to make it or
# just make it a frame
print "Making " + str(item)
#print "Making " + str(item)
if item.__class__.__name__ == 'str':
if self['itemMakeFunction']:
# If there is a function to create the item
@ -307,7 +313,6 @@ class DirectScrolledList(DirectFrame):
self.scrollBy(task.delta)
taskMgr.add(task, self.taskName("scroll"))
def __decButtonDown(self, event):
assert self.notify.debugStateCall(self)
task = Task(self.__scrollByTask)
@ -316,11 +321,11 @@ class DirectScrolledList(DirectFrame):
task.delta = -1
self.scrollBy(task.delta)
taskMgr.add(task, self.taskName("scroll"))
def __buttonUp(self, event):
assert self.notify.debugStateCall(self)
taskMgr.remove(self.taskName("scroll"))
def addItem(self, item, refresh=1):
"""
Add this string and extraArg to the list