diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 0a4c2dfc7..494ba840c 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -615,6 +615,7 @@ class WebEngineTab(browsertab.AbstractTab): def shutdown(self): self.shutting_down.emit() + self.action.exit_fullscreen() if qtutils.version_check('5.8', exact=True): # WORKAROUND for # https://bugreports.qt.io/browse/QTBUG-58563 diff --git a/qutebrowser/mainwindow/mainwindow.py b/qutebrowser/mainwindow/mainwindow.py index 067b536bf..5ea212b18 100644 --- a/qutebrowser/mainwindow/mainwindow.py +++ b/qutebrowser/mainwindow/mainwindow.py @@ -128,6 +128,8 @@ class MainWindow(QWidget): _commandrunner: The main CommandRunner instance. _overlays: Widgets shown as overlay for the current webpage. _private: Whether the window is in private browsing mode. + _restore_fullscreen: Whether to restore the fullscreen after leaving + a video fullscreen. """ def __init__(self, *, private, geometry=None, parent=None): @@ -217,6 +219,8 @@ class MainWindow(QWidget): objreg.get("app").new_window.emit(self) + self._restore_fullscreen = False + def _init_geometry(self, geometry): """Initialize the window geometry or load it from disk.""" if geometry is not None: @@ -483,9 +487,14 @@ class MainWindow(QWidget): @pyqtSlot(bool) def _on_fullscreen_requested(self, on): if on: + self._restore_fullscreen = self.isFullScreen() self.showFullScreen() - else: + elif not self._restore_fullscreen: self.showNormal() + else: + self._restore_fullscreen = self.isFullScreen() + log.misc.debug('on: {}, restore fullscreen: {}' + .format(on, self._restore_fullscreen)) @cmdutils.register(instance='main-window', scope='window') @pyqtSlot()