mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -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.initialiseoptions(DirectScrolledList)
|
||||||
self.recordMaxHeight()
|
self.recordMaxHeight()
|
||||||
#if len(self["items"]) > 0:
|
|
||||||
# self.scrollTo(0)
|
|
||||||
self.scrollTo(0)
|
self.scrollTo(0)
|
||||||
|
|
||||||
|
# test
|
||||||
|
base.sl = self
|
||||||
|
|
||||||
def setForceHeight(self):
|
def setForceHeight(self):
|
||||||
assert self.notify.debugStateCall(self)
|
assert self.notify.debugStateCall(self)
|
||||||
self.forceHeight = self["forceHeight"]
|
self.forceHeight = self["forceHeight"]
|
||||||
@ -157,7 +158,7 @@ class DirectScrolledList(DirectFrame):
|
|||||||
|
|
||||||
def scrollBy(self, delta):
|
def scrollBy(self, delta):
|
||||||
assert self.notify.debugStateCall(self)
|
assert self.notify.debugStateCall(self)
|
||||||
# print "scrollBy[", delta,"]"
|
#print "scrollBy[", delta,"]"
|
||||||
return self.scrollTo(self.index + delta)
|
return self.scrollTo(self.index + delta)
|
||||||
|
|
||||||
def getItemIndexForItemID(self, itemID):
|
def getItemIndexForItemID(self, itemID):
|
||||||
@ -169,13 +170,13 @@ class DirectScrolledList(DirectFrame):
|
|||||||
return 0
|
return 0
|
||||||
|
|
||||||
if(type(self["items"][0])!=types.InstanceType):
|
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
|
return 0
|
||||||
|
|
||||||
for i in range(len(self["items"])):
|
for i in range(len(self["items"])):
|
||||||
if(self["items"][i].itemID == itemID):
|
if(self["items"][i].itemID == itemID):
|
||||||
return i
|
return i
|
||||||
print "warning: getItemIndexForItemID: item not found!"
|
self.notify.warning("getItemIndexForItemID: item not found!")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def scrollToItemID(self, itemID, centered=0):
|
def scrollToItemID(self, itemID, centered=0):
|
||||||
@ -185,7 +186,7 @@ class DirectScrolledList(DirectFrame):
|
|||||||
def scrollTo(self, index, centered=0):
|
def scrollTo(self, index, centered=0):
|
||||||
""" scrolls list so selected index is at top, or centered in box"""
|
""" scrolls list so selected index is at top, or centered in box"""
|
||||||
assert self.notify.debugStateCall(self)
|
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:
|
try:
|
||||||
self["numItemsVisible"]
|
self["numItemsVisible"]
|
||||||
except:
|
except:
|
||||||
@ -211,16 +212,21 @@ class DirectScrolledList(DirectFrame):
|
|||||||
else:
|
else:
|
||||||
if (self.index <= 0):
|
if (self.index <= 0):
|
||||||
self.index = 0
|
self.index = 0
|
||||||
|
self.__buttonUp(0)
|
||||||
self.decButton['state'] = DGG.DISABLED
|
self.decButton['state'] = DGG.DISABLED
|
||||||
self.incButton['state'] = DGG.NORMAL
|
self.incButton['state'] = DGG.NORMAL
|
||||||
ret = 0
|
ret = 0
|
||||||
elif (self.index >= (numItemsTotal - numItemsVisible)):
|
elif (self.index >= (numItemsTotal - numItemsVisible)):
|
||||||
self.index = numItemsTotal - numItemsVisible
|
self.index = numItemsTotal - numItemsVisible
|
||||||
# print "at list end, ", len(self["items"])," ", self["numItemsVisible"]
|
# print "at list end, ", len(self["items"])," ", self["numItemsVisible"]
|
||||||
|
self.__buttonUp(0)
|
||||||
self.incButton['state'] = DGG.DISABLED
|
self.incButton['state'] = DGG.DISABLED
|
||||||
self.decButton['state'] = DGG.NORMAL
|
self.decButton['state'] = DGG.NORMAL
|
||||||
ret = 0
|
ret = 0
|
||||||
else:
|
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.incButton['state'] = DGG.NORMAL
|
||||||
self.decButton['state'] = DGG.NORMAL
|
self.decButton['state'] = DGG.NORMAL
|
||||||
ret = 1
|
ret = 1
|
||||||
@ -270,7 +276,7 @@ class DirectScrolledList(DirectFrame):
|
|||||||
# If the item is a 'str', then it has not been created
|
# If the item is a 'str', then it has not been created
|
||||||
# Therefore, use the the function given to make it or
|
# Therefore, use the the function given to make it or
|
||||||
# just make it a frame
|
# just make it a frame
|
||||||
print "Making " + str(item)
|
#print "Making " + str(item)
|
||||||
if item.__class__.__name__ == 'str':
|
if item.__class__.__name__ == 'str':
|
||||||
if self['itemMakeFunction']:
|
if self['itemMakeFunction']:
|
||||||
# If there is a function to create the item
|
# If there is a function to create the item
|
||||||
@ -307,7 +313,6 @@ class DirectScrolledList(DirectFrame):
|
|||||||
self.scrollBy(task.delta)
|
self.scrollBy(task.delta)
|
||||||
taskMgr.add(task, self.taskName("scroll"))
|
taskMgr.add(task, self.taskName("scroll"))
|
||||||
|
|
||||||
|
|
||||||
def __decButtonDown(self, event):
|
def __decButtonDown(self, event):
|
||||||
assert self.notify.debugStateCall(self)
|
assert self.notify.debugStateCall(self)
|
||||||
task = Task(self.__scrollByTask)
|
task = Task(self.__scrollByTask)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user