WebBrowser/WebBrowserWindow.py

branch
QtWebEngine
changeset 4884
6983af705a7f
parent 4880
561f2bd9cfb9
child 4886
b56735d36159
--- a/WebBrowser/WebBrowserWindow.py	Sat Mar 19 20:07:34 2016 +0100
+++ b/WebBrowser/WebBrowserWindow.py	Sun Mar 20 14:09:05 2016 +0100
@@ -18,7 +18,7 @@
 import sys
 
 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, \
-    QUrl, QThread, QTextCodec, QProcess
+    QUrl, QThread, QTextCodec, QProcess, QEvent
 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics, \
     QIcon
 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QDockWidget, \
@@ -153,6 +153,9 @@
             self.webProfile(private)
             self.networkManager()
             
+            self.__htmlFullScreen = False
+            self.__windowStates = 0
+            
             from .SearchWidget import SearchWidget
             from .QtHelp.HelpTocWidget import HelpTocWidget
             from .QtHelp.HelpIndexWidget import HelpIndexWidget
@@ -520,6 +523,9 @@
         settings.setAttribute(
             QWebEngineSettings.ErrorPageEnabled,
             Preferences.getWebBrowser("ErrorPageEnabled"))
+        settings.setAttribute(
+            QWebEngineSettings.FullScreenSupportEnabled,
+            Preferences.getWebBrowser("FullScreenSupportEnabled"))
     
     def __initActions(self):
         """
@@ -793,8 +799,7 @@
             UI.PixmapCache.getIcon("back.png"),
             self.tr('&Backward'),
             QKeySequence(self.tr("Alt+Left", "Go|Backward")),
-            QKeySequence(self.tr("Backspace", "Go|Backward")),
-            self, 'webbrowser_go_backward')
+            0, self, 'webbrowser_go_backward')
         self.backAct.setStatusTip(self.tr('Move one screen backward'))
         self.backAct.setWhatsThis(self.tr(
             """<b>Backward</b>"""
@@ -810,8 +815,7 @@
             UI.PixmapCache.getIcon("forward.png"),
             self.tr('&Forward'),
             QKeySequence(self.tr("Alt+Right", "Go|Forward")),
-            QKeySequence(self.tr("Shift+Backspace", "Go|Forward")),
-            self, 'webbrowser_go_foreward')
+            0, self, 'webbrowser_go_foreward')
         self.forwardAct.setStatusTip(self.tr(
             'Move one screen forward'))
         self.forwardAct.setWhatsThis(self.tr(
@@ -2577,7 +2581,7 @@
         Preferences.setWebBrowser("WebBrowserState", state)
 
         if Preferences.getWebBrowser("SaveGeometry"):
-            if not self.__isFullScreen():
+            if not self.isFullScreen():
                 Preferences.setGeometry("WebBrowserGeometry",
                                         self.saveGeometry())
         else:
@@ -2662,28 +2666,33 @@
         """
         Private slot called to toggle fullscreen mode.
         """
-        if self.__isFullScreen():
+        if self.__htmlFullScreen:
+            self.currentBrowser().triggerPageAction(
+                QWebEnginePage.ExitFullScreen)
+            return
+        
+        if self.isFullScreen():
             # switch back to normal
-            self.setWindowState(self.windowState() & ~Qt.WindowFullScreen)
+            self.showNormal()
             self.menuBar().show()
             self.fullScreenAct.setIcon(
                 UI.PixmapCache.getIcon("windowFullscreen.png"))
             self.fullScreenAct.setIconText(self.tr('Full Screen'))
         else:
             # switch to full screen
-            self.setWindowState(self.windowState() | Qt.WindowFullScreen)
+            self.showFullScreen()
             self.menuBar().hide()
             self.fullScreenAct.setIcon(
                 UI.PixmapCache.getIcon("windowRestore.png"))
             self.fullScreenAct.setIconText(self.tr('Restore Window'))
     
-    def __isFullScreen(self):
-        """
-        Private method to determine, if the window is in full screen mode.
-        
-        @return flag indicating full screen mode (boolean)
-        """
-        return self.windowState() & Qt.WindowFullScreen
+    def enterHtmlFullScreen(self):
+        """
+        Public method to switch to full screen initiated by the
+        HTML page.
+        """
+        self.showFullScreen()
+        self.__htmlFullScreen = True
     
     def __copy(self):
         """
@@ -3961,6 +3970,28 @@
         
         super(WebBrowserWindow, self).keyPressEvent(evt)
     
+    def event(self, evt):
+        """
+        Public method handling events.
+        
+        @param evt reference to the event
+        @type QEvent
+        @return flag indicating a handled event
+        @rtype bool
+        """
+        if evt.type() == QEvent.WindowStateChange:
+            if not bool(evt.oldState() & Qt.WindowFullScreen) and \
+               bool(self.windowState() & Qt.WindowFullScreen):
+                # enter full screen mode
+                self.__windowStates = evt.oldState()
+            elif bool(evt.oldState() & Qt.WindowFullScreen) and \
+                 not bool(self.windowState() & Qt.WindowFullScreen):
+                # leave full screen mode
+                self.setWindowState(self.__windowStates)
+                self.__htmlFullScreen = False
+        
+        return super(WebBrowserWindow, self).event(evt)
+    
     ###########################################################################
     ## Interface to VirusTotal below                                         ##
     ###########################################################################

eric ide

mercurial