Skip to content

Commit d8cfb6b

Browse files
committed
Remove tabs_to_be_shown_in_tab_bar_as_sequence
It was a dangerous API as it kinda implied the returned tabs were a copy but they werent when no filter was present. Take the small perf hit of always making a copy for safety.
1 parent 543e113 commit d8cfb6b

File tree

1 file changed

+6
-14
lines changed

1 file changed

+6
-14
lines changed

kitty/tabs.py

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,17 +1166,8 @@ def tabs_to_be_shown_in_tab_bar(self) -> Iterable[Tab]:
11661166
return (t for t in self if t is at or t in m)
11671167
return self.tabs
11681168

1169-
@property
1170-
def tabs_to_be_shown_in_tab_bar_as_sequence(self) -> Sequence[Tab]:
1171-
f = get_options().tab_bar_filter
1172-
if f:
1173-
at = self.active_tab
1174-
m = set(self.filtered_tabs(f))
1175-
return tuple(t for t in self if t is at or t in m)
1176-
return self.tabs
1177-
11781169
def next_tab(self, delta: int = 1) -> None:
1179-
if (tabs := self.tabs_to_be_shown_in_tab_bar_as_sequence) is self.tabs:
1170+
if (len(tabs := tuple(self.tabs_to_be_shown_in_tab_bar))) == len(self.tabs):
11801171
if (num := len(tabs)) > 1:
11811172
self.set_active_tab_idx((self.active_tab_idx + num + delta) % num)
11821173
else:
@@ -1200,7 +1191,7 @@ def toggle_tab(self, match_expression: str) -> None:
12001191
break
12011192

12021193
def tab_at_location(self, loc: str) -> Tab | None:
1203-
tabs = self.tabs_to_be_shown_in_tab_bar_as_sequence
1194+
tabs = tuple(self.tabs_to_be_shown_in_tab_bar)
12041195
if loc == 'prev':
12051196
if self.active_tab_history:
12061197
return self.tab_for_id(self.active_tab_history[-1])
@@ -1211,7 +1202,7 @@ def tab_at_location(self, loc: str) -> Tab | None:
12111202
return None
12121203

12131204
def goto_tab(self, tab_num: int) -> None:
1214-
tabs = self.tabs_to_be_shown_in_tab_bar_as_sequence
1205+
tabs = tuple(self.tabs_to_be_shown_in_tab_bar)
12151206
if tab_num >= len(tabs):
12161207
tab_num = max(0, len(tabs) - 1)
12171208
if tab_num >= 0:
@@ -1304,7 +1295,7 @@ def tab_for_id(self, tab_id: int) -> Tab | None:
13041295
return None
13051296

13061297
def move_tab(self, delta: int = 1) -> None:
1307-
tabs = self.tabs_to_be_shown_in_tab_bar_as_sequence
1298+
tabs = tuple(self.tabs_to_be_shown_in_tab_bar)
13081299
if len(tabs) > 1:
13091300
idx = self.active_tab_idx
13101301
new_active_tab = tabs[(idx + len(tabs) + delta) % len(tabs)]
@@ -1362,7 +1353,7 @@ def new_tab(
13621353

13631354
def remove(self, removed_tab: Tab) -> None:
13641355
active_tab_before_removal = self.active_tab
1365-
tabs = self.tabs_to_be_shown_in_tab_bar_as_sequence
1356+
tabs = tuple(self.tabs_to_be_shown_in_tab_bar)
13661357
self._remove_tab(removed_tab)
13671358
while True:
13681359
try:
@@ -1388,6 +1379,7 @@ def remove_from_end_of_active_history(tab: Tab) -> None:
13881379
tab_id = self.active_tab_history.pop()
13891380
next_active_tab = self.tab_for_id(tab_id)
13901381
case 'left':
1382+
print(2222222222, tabs.index(active_tab_before_removal))
13911383
next_active_tab = tabs[(tabs.index(active_tab_before_removal) - 1 + len(tabs)) % len(tabs)]
13921384
remove_from_end_of_active_history(next_active_tab)
13931385
case 'right':

0 commit comments

Comments
 (0)