Skip confirm-quit checks when crashing.

Fixes #853.
This commit is contained in:
Florian Bruhin 2015-08-06 21:08:20 +02:00
parent 9c6782be1d
commit 61df5fcd7a
2 changed files with 20 additions and 4 deletions

View File

@ -35,6 +35,7 @@ from qutebrowser.mainwindow.statusbar import bar
from qutebrowser.completion import completionwidget from qutebrowser.completion import completionwidget
from qutebrowser.keyinput import modeman from qutebrowser.keyinput import modeman
from qutebrowser.browser import hints, downloads, downloadview, commands from qutebrowser.browser import hints, downloads, downloadview, commands
from qutebrowser.misc import crashsignal
win_id_gen = itertools.count(0) win_id_gen = itertools.count(0)
@ -392,8 +393,18 @@ class MainWindow(QWidget):
self._downloadview.updateGeometry() self._downloadview.updateGeometry()
self.tabbed_browser.tabBar().refresh() self.tabbed_browser.tabBar().refresh()
def _do_close(self):
"""Helper function for closeEvent."""
objreg.get('session-manager').save_last_window_session()
self._save_geometry()
log.destroy.debug("Closing window {}".format(self.win_id))
self.tabbed_browser.shutdown()
def closeEvent(self, e): def closeEvent(self, e):
"""Override closeEvent to display a confirmation if needed.""" """Override closeEvent to display a confirmation if needed."""
if crashsignal.is_crashing:
e.accept()
return
confirm_quit = config.get('ui', 'confirm-quit') confirm_quit = config.get('ui', 'confirm-quit')
tab_count = self.tabbed_browser.count() tab_count = self.tabbed_browser.count()
download_manager = objreg.get('download-manager', scope='window', download_manager = objreg.get('download-manager', scope='window',
@ -425,7 +436,4 @@ class MainWindow(QWidget):
e.ignore() e.ignore()
return return
e.accept() e.accept()
objreg.get('session-manager').save_last_window_session() self._do_close()
self._save_geometry()
log.destroy.debug("Closing window {}".format(self.win_id))
self.tabbed_browser.shutdown()

View File

@ -42,6 +42,10 @@ ExceptionInfo = collections.namedtuple('ExceptionInfo',
'pages, cmd_history, objects') 'pages, cmd_history, objects')
# Used by mainwindow.py to skip confirm questions on crashes
is_crashing = False
class CrashHandler(QObject): class CrashHandler(QObject):
"""Handler for crashes, reports and exceptions. """Handler for crashes, reports and exceptions.
@ -236,6 +240,10 @@ class CrashHandler(QObject):
self._quitter.on_last_window_closed) self._quitter.on_last_window_closed)
except TypeError: except TypeError:
log.destroy.exception("Error while preventing shutdown") log.destroy.exception("Error while preventing shutdown")
global is_crashing
is_crashing = True
self._app.closeAllWindows() self._app.closeAllWindows()
if self._args.no_err_windows: if self._args.no_err_windows:
crashdialog.dump_exception_info(exc, info.pages, info.cmd_history, crashdialog.dump_exception_info(exc, info.pages, info.cmd_history,