Merge branch 'pr/2782'

This commit is contained in:
Florian Bruhin 2017-07-07 18:38:29 +02:00
commit f80fd2a27c
3 changed files with 17 additions and 5 deletions

View File

@ -38,7 +38,7 @@ from qutebrowser.browser import (urlmarks, browsertab, inspector, navigate,
webelem, downloads) webelem, downloads)
from qutebrowser.keyinput import modeman from qutebrowser.keyinput import modeman
from qutebrowser.utils import (message, usertypes, log, qtutils, urlutils, from qutebrowser.utils import (message, usertypes, log, qtutils, urlutils,
objreg, utils, typing) objreg, utils, typing, debug)
from qutebrowser.utils.usertypes import KeyMode from qutebrowser.utils.usertypes import KeyMode
from qutebrowser.misc import editor, guiprocess from qutebrowser.misc import editor, guiprocess
from qutebrowser.completion.models import instances, sortfilter from qutebrowser.completion.models import instances, sortfilter
@ -2169,6 +2169,10 @@ class CommandDispatcher:
window = self._tabbed_browser.window() window = self._tabbed_browser.window()
if window.isFullScreen(): if window.isFullScreen():
window.showNormal() window.setWindowState(
window.state_before_fullscreen & ~Qt.WindowFullScreen)
else: else:
window.state_before_fullscreen = window.windowState()
window.showFullScreen() window.showFullScreen()
log.misc.debug('state before fullscreen: {}'.format(
debug.qflags_key(Qt, window.state_before_fullscreen)))

View File

@ -615,6 +615,7 @@ class WebEngineTab(browsertab.AbstractTab):
def shutdown(self): def shutdown(self):
self.shutting_down.emit() self.shutting_down.emit()
self.action.exit_fullscreen()
if qtutils.version_check('5.8', exact=True): if qtutils.version_check('5.8', exact=True):
# WORKAROUND for # WORKAROUND for
# https://bugreports.qt.io/browse/QTBUG-58563 # https://bugreports.qt.io/browse/QTBUG-58563

View File

@ -30,7 +30,8 @@ from PyQt5.QtWidgets import QWidget, QVBoxLayout, QApplication, QSizePolicy
from qutebrowser.commands import runners, cmdutils from qutebrowser.commands import runners, cmdutils
from qutebrowser.config import config from qutebrowser.config import config
from qutebrowser.utils import message, log, usertypes, qtutils, objreg, utils from qutebrowser.utils import (message, log, usertypes, qtutils, objreg, utils,
debug)
from qutebrowser.mainwindow import tabbedbrowser, messageview, prompt from qutebrowser.mainwindow import tabbedbrowser, messageview, prompt
from qutebrowser.mainwindow.statusbar import bar from qutebrowser.mainwindow.statusbar import bar
from qutebrowser.completion import completionwidget, completer from qutebrowser.completion import completionwidget, completer
@ -123,6 +124,7 @@ class MainWindow(QWidget):
Attributes: Attributes:
status: The StatusBar widget. status: The StatusBar widget.
tabbed_browser: The TabbedBrowser widget. tabbed_browser: The TabbedBrowser widget.
state_before_fullscreen: window state before activation of fullscreen.
_downloadview: The DownloadView widget. _downloadview: The DownloadView widget.
_vbox: The main QVBoxLayout. _vbox: The main QVBoxLayout.
_commandrunner: The main CommandRunner instance. _commandrunner: The main CommandRunner instance.
@ -217,6 +219,8 @@ class MainWindow(QWidget):
objreg.get("app").new_window.emit(self) objreg.get("app").new_window.emit(self)
self.state_before_fullscreen = self.windowState()
def _init_geometry(self, geometry): def _init_geometry(self, geometry):
"""Initialize the window geometry or load it from disk.""" """Initialize the window geometry or load it from disk."""
if geometry is not None: if geometry is not None:
@ -483,9 +487,12 @@ class MainWindow(QWidget):
@pyqtSlot(bool) @pyqtSlot(bool)
def _on_fullscreen_requested(self, on): def _on_fullscreen_requested(self, on):
if on: if on:
self.state_before_fullscreen = self.windowState()
self.showFullScreen() self.showFullScreen()
else: elif self.isFullScreen():
self.showNormal() self.setWindowState(self.state_before_fullscreen)
log.misc.debug('on: {}, state before fullscreen: {}'.format(
on, debug.qflags_key(Qt, self.state_before_fullscreen)))
@cmdutils.register(instance='main-window', scope='window') @cmdutils.register(instance='main-window', scope='window')
@pyqtSlot() @pyqtSlot()