Merge branch 'lastvisible' of https://github.com/haasn/qutebrowser into haasn-lastvisible

This commit is contained in:
Florian Bruhin 2016-08-10 17:39:33 +02:00
commit 7213850238
4 changed files with 31 additions and 1 deletions

View File

@ -350,6 +350,9 @@ def on_focus_changed(_old, new):
window = new.window()
if isinstance(window, mainwindow.MainWindow):
objreg.register('last-focused-main-window', window, update=True)
# A focused window must also be visible, and in this case we should
# consider it as the most recently looked-at window
objreg.register('last-visible-main-window', window, update=True)
def open_desktopservices_url(url):

View File

@ -233,7 +233,9 @@ def data(readonly=False):
('last-opened', "Open new tabs in the last opened "
"window."),
('last-focused', "Open new tabs in the most recently "
"focused window.")
"focused window."),
('last-visible', "Open new tabs in the most recently "
"visible window.")
)), 'last-focused'),
"Which window to choose when opening links as new tabs."),

View File

@ -74,6 +74,8 @@ def get_window(via_ipc, force_window=False, force_tab=False,
window = objreg.last_focused_window()
elif win_mode == 'last-opened':
window = objreg.last_window()
elif win_mode == 'last-visible':
window = objreg.last_visible_window()
except objreg.NoWindow:
# There is no window left, so we open a new one
window = MainWindow()
@ -458,8 +460,23 @@ class MainWindow(QWidget):
self._downloadview.updateGeometry()
self.tabbed_browser.tabBar().refresh()
def showEvent(self, e):
"""Extend showEvent to register us as the last-visible-main-window.
Args:
e: The QShowEvent
"""
super().showEvent(e)
objreg.register('last-visible-main-window', self, update=True)
def _do_close(self):
"""Helper function for closeEvent."""
last_visible = objreg.get('last-visible-main-window')
if self is last_visible:
try:
objreg.delete('last-visible-main-window')
except KeyError:
pass
objreg.get('session-manager').save_last_window_session()
self._save_geometry()
log.destroy.debug("Closing window {}".format(self.win_id))

View File

@ -285,6 +285,14 @@ def dump_objects():
return lines
def last_visible_window():
"""Get the last visible window, or the last focused window if none."""
try:
return get('last-visible-main-window')
except KeyError:
return last_focused_window()
def last_focused_window():
"""Get the last focused window, or the last window if none."""
try: