summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--poezio/core/tabs.py8
-rw-r--r--test/test_tabs.py11
2 files changed, 15 insertions, 4 deletions
diff --git a/poezio/core/tabs.py b/poezio/core/tabs.py
index bcf6dd41..3ced7a7e 100644
--- a/poezio/core/tabs.py
+++ b/poezio/core/tabs.py
@@ -67,10 +67,10 @@ class Tabs:
def __iter__(self):
return iter(self._tabs)
- def __getitem__(self, index: Union[int, str]):
- if isinstance(index, int):
- return self._tabs[index]
- return self.by_name(index)
+ def __getitem__(self, index: Union[int, str, slice]):
+ if isinstance(index, str):
+ return self.by_name(index)
+ return self._tabs[index]
def first(self) -> tabs.Tab:
"""Return the Roster tab"""
diff --git a/test/test_tabs.py b/test/test_tabs.py
index aab4f0d0..0a6930d4 100644
--- a/test/test_tabs.py
+++ b/test/test_tabs.py
@@ -172,3 +172,14 @@ def test_set_current():
tabs.set_current_tab(dummy2)
assert tabs.current_tab is dummy2
+def test_slice():
+ DummyTab.reset()
+ tabs = Tabs(h)
+ dummy = DummyTab()
+ dummy2 = DummyTab()
+ dummy3 = DummyTab()
+ tabs.append(dummy)
+ tabs.append(dummy2)
+ tabs.append(dummy3)
+
+ assert tabs[1:2][0] is dummy2