mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 17:35:34 -04:00
Fix for autoscroll bug:
This commit is contained in:
parent
fc20e548d9
commit
ab72021e6e
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user