diff options
-rw-r--r-- | poezio/core/core.py | 2 | ||||
-rw-r--r-- | poezio/core/tabs.py | 23 |
2 files changed, 14 insertions, 11 deletions
diff --git a/poezio/core/core.py b/poezio/core/core.py index 814f7813..114bea7d 100644 --- a/poezio/core/core.py +++ b/poezio/core/core.py @@ -1109,7 +1109,7 @@ class Core(object): for state in states: for tab in tab_refs[state]: - if (tab.nb < self.tabs.current_tab_intex and + if (tab.nb < self.tabs.current_tab_index and tab_refs[state][-1].nb > self.tabs.current_tab_index): continue self.command.win(str(tab.nb)) diff --git a/poezio/core/tabs.py b/poezio/core/tabs.py index 18f0ce49..3adaf478 100644 --- a/poezio/core/tabs.py +++ b/poezio/core/tabs.py @@ -157,15 +157,11 @@ class Tabs: self._current_tab = self._tabs[0] def _inc_cursor(self): - self._current_index += 1 - if self._current_index >= len(self._tabs): - self._current_index = 0 + self._current_index = (self._current_index + 1) % len(self._tabs) self._current_tab = self._tabs[self._current_index] def _dec_cursor(self): - self._current_index -= 1 - if self._current_index < 0: - self._current_index = len(self._tabs) - 1 + self._current_index = (self._current_index - 1) % len(self._tabs) self._current_tab = self._tabs[self._current_index] def _store_previous(self): @@ -212,18 +208,24 @@ class Tabs: self._tab_types[type(tab)].remove(tab) del self._tab_names[tab.name] - self._collect_trailing_gaptabs() - self._update_numbers() - if is_current: - self._restore_previous_tab() + + if gap: + self._collect_trailing_gaptabs() + else: + self._update_numbers() + if tab is self._previous_tab: self._previous_tab = None + if is_current: + self._restore_previous_tab() self._validate_current_index() def _restore_previous_tab(self): if self._previous_tab: if not self.set_current_tab(self._previous_tab): self.set_current_index(0) + else: + self.set_current_index(0) def _validate_current_index(self): if not 0 <= self._current_index < len( @@ -240,6 +242,7 @@ class Tabs: def _update_numbers(self): for i, tab in enumerate(self._tabs): tab.nb = i + self._current_index = self._current_tab.nb # Moving tabs around # |