diff --git a/qutebrowser/config/configdata.py b/qutebrowser/config/configdata.py index a933f2ea5..3766a8966 100644 --- a/qutebrowser/config/configdata.py +++ b/qutebrowser/config/configdata.py @@ -188,6 +188,10 @@ DATA = OrderedDict([ ('last_close', SettingValue(types.LastClose(), "ignore"), "Behaviour when the last tab is closed."), + + ('wrap', + SettingValue(types.Bool(), "true"), + "Whether to wrap when changing tabs."), )), ('webkit', sect.KeyValue( diff --git a/qutebrowser/widgets/tabbedbrowser.py b/qutebrowser/widgets/tabbedbrowser.py index 137f2d985..afb81e2ff 100644 --- a/qutebrowser/widgets/tabbedbrowser.py +++ b/qutebrowser/widgets/tabbedbrowser.py @@ -278,12 +278,13 @@ class TabbedBrowser(TabWidget): Args: count: How many tabs to switch back. """ - idx = self.currentIndex() - if idx - count >= 0: - self.setCurrentIndex(idx - count) + newidx = self.currentIndex() - count + if newidx >= 0: + self.setCurrentIndex(newidx) + elif config.get('tabbar', 'wrap'): + self.setCurrentIndex(newidx % self.count()) else: - # FIXME display message or wrap - pass + message.info("First tab") @cmdutils.register(instance='mainwindow.tabs', name='tabnext') def switch_next(self, count=1): @@ -294,12 +295,13 @@ class TabbedBrowser(TabWidget): Args: count: How many tabs to switch forward. """ - idx = self.currentIndex() - if idx + count < self.count(): - self.setCurrentIndex(idx + count) + newidx = self.currentIndex() + count + if newidx < self.count(): + self.setCurrentIndex(newidx) + elif config.get('tabbar', 'wrap'): + self.setCurrentIndex(newidx % self.count()) else: - # FIXME display message or wrap - pass + message.info("Last tab") @cmdutils.register(instance='mainwindow.tabs', nargs=(0, 1)) def paste(self, sel=False, tab=False):