Skip to content

Commit a95c37b

Browse files
committed
auto generate tab ids
1 parent 74a2c90 commit a95c37b

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/textual/widgets/_tabbed_content.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ def __init__(
332332
self.titles = [self.render_str(title) for title in titles]
333333
self._tab_content: list[Widget] = []
334334
self._initial = initial
335+
self._tab_counter = 0
335336
super().__init__(name=name, id=id, classes=classes, disabled=disabled)
336337

337338
@property
@@ -357,6 +358,15 @@ def _set_id(content: TabPane, new_id: int) -> TabPane:
357358
content.id = f"tab-{new_id}"
358359
return content
359360

361+
def _generate_tab_id(self) -> int:
362+
"""Auto generate a new tab id.
363+
364+
Returns:
365+
An auto-incrementing integer.
366+
"""
367+
self._tab_counter += 1
368+
return self._tab_counter
369+
360370
def compose(self) -> ComposeResult:
361371
"""Compose the tabbed content."""
362372

@@ -368,7 +378,7 @@ def compose(self) -> ComposeResult:
368378
if isinstance(content, TabPane)
369379
else TabPane(title or self.render_str(f"Tab {index}"), content)
370380
),
371-
index,
381+
self._generate_tab_id(),
372382
)
373383
for index, (title, content) in enumerate(
374384
zip_longest(self.titles, self._tab_content), 1
@@ -424,7 +434,7 @@ def add_pane(
424434
if isinstance(after, TabPane):
425435
after = after.id
426436
tabs = self.get_child_by_type(ContentTabs)
427-
pane = self._set_id(pane, tabs.tab_count + 1)
437+
pane = self._set_id(pane, self._generate_tab_id())
428438
assert pane.id is not None
429439
pane.display = False
430440
return AwaitComplete(

0 commit comments

Comments
 (0)