This commit is contained in:
Will McGugan
2021-07-10 21:27:49 +01:00
parent eb3432dee2
commit 7e8b495d66
2 changed files with 14 additions and 9 deletions

View File

View File

@@ -244,10 +244,11 @@ class GridLayout(Layout):
if repeat: if repeat:
tracks = cycle(tracks) tracks = cycle(tracks)
total = 0 total = 0
edge_count = len(edges)
for index, track in enumerate(tracks): for index, track in enumerate(tracks):
yield total, total + track - gap if total + track < size else total + track yield total, total + track - gap if total + track < size else total + track
total += track total += track
if total >= size and index >= len(edges): if total >= size and index >= edge_count:
break break
def resolve_tracks( def resolve_tracks(
@@ -261,15 +262,19 @@ class GridLayout(Layout):
max_size = 0 max_size = 0
tracks: dict[str, tuple[int, int]] = {} tracks: dict[str, tuple[int, int]] = {}
counts = defaultdict(int) counts = defaultdict(int)
for index, (name, (start, end)) in enumerate(spans): if repeat:
max_size = max(max_size, end) for index, (name, (start, end)) in enumerate(spans):
counts[name] += 1 max_size = max(max_size, end)
count = counts[name] counts[name] += 1
tracks[f"{name}-start"] = (index, start) count = counts[name]
tracks[f"{name}-end"] = (index, end)
if repeat:
tracks[f"{name}-{count}-start"] = (index, start) tracks[f"{name}-{count}-start"] = (index, start)
tracks[f"{name}-{count}-end"] = (index, end) tracks[f"{name}-{count}-end"] = (index, end)
else:
for index, (name, (start, end)) in enumerate(spans):
max_size = max(max_size, end)
tracks[f"{name}-start"] = (index, start)
tracks[f"{name}-end"] = (index, end)
return names, tracks, len(spans), max_size return names, tracks, len(spans), max_size
container = Dimensions( container = Dimensions(
@@ -330,7 +335,7 @@ class GridLayout(Layout):
for slot in product(range(column_count), range(row_count)) for slot in product(range(column_count), range(row_count))
if slot in free_slots if slot in free_slots
), ),
key=itemgetter(1, 0), key=itemgetter(1, 0), # TODO: other orders
) )
for widget, (col, row) in zip(auto_widgets, grid_slots): for widget, (col, row) in zip(auto_widgets, grid_slots):