self.lines = []
self.index_by_line = []
pos = 0
+ last_itemindex = None
+ curr_itemtop = 0
for thing, itemindex in self.iter_text_indexed():
params = {}
if (self.mode == 'select' and itemindex == self.select_target and
hasattr(thing, 'can_highlight_as_target')):
params['target'] = True
- oldlen = len(self.lines)
+ if itemindex != last_itemindex:
+ curr_itemtop = len(self.lines)
+ last_itemindex = itemindex
for line in thing.render(width, **params):
for s in line.split(width):
self.lines.append(s)
self.index_by_line.append(itemindex)
if itemindex == self.itempos:
- itemheight = len(self.lines) - oldlen
+ itemheight = len(self.lines) - curr_itemtop
pos = len(self.lines) - min(pos_within_item, itemheight)
self.width = width