Use object registry for last focused tab.

This commit is contained in:
Florian Bruhin 2014-09-24 06:41:51 +02:00
parent 6090bf418d
commit b121ceef21
2 changed files with 11 additions and 10 deletions

View File

@ -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)

View File

@ -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)))