From b121ceef216adf0b95e78e681fb4fc97de961519 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 24 Sep 2014 06:41:51 +0200 Subject: [PATCH] Use object registry for last focused tab. --- qutebrowser/browser/commands.py | 9 +++++---- qutebrowser/widgets/tabbedbrowser.py | 12 ++++++------ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index 4af4cfef2..d8f64f5f5 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -38,7 +38,7 @@ from qutebrowser.commands import userscripts, cmdexc, cmdutils from qutebrowser.config import config from qutebrowser.browser import hints, quickmarks, webelem from qutebrowser.utils import (message, editor, usertypes, log, qtutils, - urlutils) + urlutils, utils) class CommandDispatcher: @@ -52,7 +52,6 @@ class CommandDispatcher: cmdutils.register() decorators are run, currentWidget() will return None. Attributes: - _tabs: The TabbedBrowser object. _editor: The ExternalEditor object. """ @@ -143,9 +142,11 @@ class CommandDispatcher: def _tab_focus_last(self): """Select the tab which was last focused.""" - if self._tabs.last_focused is None: + try: + tab = utils.get_object('last-focused-tab') + except KeyError: raise cmdexc.CommandError("No last focused tab!") - idx = self._tabs.indexOf(self._tabs.last_focused) + idx = self._tabs.indexOf(tab) if idx == -1: raise cmdexc.CommandError("Last focused tab vanished!") self._tabs.setCurrentIndex(idx) diff --git a/qutebrowser/widgets/tabbedbrowser.py b/qutebrowser/widgets/tabbedbrowser.py index eae530e2b..82a5f5d51 100644 --- a/qutebrowser/widgets/tabbedbrowser.py +++ b/qutebrowser/widgets/tabbedbrowser.py @@ -54,7 +54,6 @@ class TabbedBrowser(tabwidget.TabWidget): tabbar -> new-tab-position set to 'left'. _tab_insert_idx_right: Same as above, for 'right'. url_stack: Stack of URLs of closed tabs. - last_focused: The tab which was focused last. Signals: cur_progress: Progress of the current tab changed (loadProgress). @@ -111,7 +110,6 @@ class TabbedBrowser(tabwidget.TabWidget): self._filter = signalfilter.SignalFilter(self) dispatcher = commands.CommandDispatcher(self) utils.register_object('command-dispatcher', dispatcher) - self.last_focused = None self._now_focused = None # FIXME adjust this to font size self.setIconSize(QSize(12, 12)) @@ -263,8 +261,8 @@ class TabbedBrowser(tabwidget.TabWidget): tab)) if tab is self._now_focused: self._now_focused = None - if tab is self.last_focused: - self.last_focused = None + if tab is utils.get_object('last-focused-tab', None): + utils.delete_object('last-focused-tab') if not tab.cur_url.isEmpty(): qtutils.ensure_valid(tab.cur_url) self.url_stack.append(tab.cur_url) @@ -522,11 +520,13 @@ class TabbedBrowser(tabwidget.TabWidget): @pyqtSlot(int) def on_current_changed(self, idx): - """Set last_focused and leave hinting mode when focus changed.""" + """Set last-focused-tab and leave hinting mode when focus changed.""" tab = self.widget(idx) tab.setFocus() modeman.maybe_leave(usertypes.KeyMode.hint, 'tab changed') - self.last_focused = self._now_focused + if self._now_focused is not None: + utils.register_object('last-focused-tab', self._now_focused, + update=True) self._now_focused = tab self.current_tab_changed.emit(tab) self.title_changed.emit('{} - qutebrowser'.format(self.tabText(idx)))