WebBrowser/WebBrowserView.py

changeset 5194
4750c83cc718
parent 5039
200f12184a43
child 5195
a282431c01fc
diff -r 04ba3ea482fe -r 4750c83cc718 WebBrowser/WebBrowserView.py
--- a/WebBrowser/WebBrowserView.py	Sat Oct 01 15:12:23 2016 +0200
+++ b/WebBrowser/WebBrowserView.py	Mon Oct 03 19:02:45 2016 +0200
@@ -14,8 +14,10 @@
 except NameError:
     pass
 
+import os
+
 from PyQt5.QtCore import pyqtSignal, QUrl, QFileInfo, Qt, QTimer, QEvent, \
-    QPoint, QDateTime
+    QPoint, QDateTime, qVersion
 from PyQt5.QtGui import QDesktopServices, QClipboard, QIcon, \
     QContextMenuEvent, QPixmap
 from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication
@@ -34,6 +36,7 @@
 
 import Preferences
 import UI.PixmapCache
+import Utilities
 
 
 class WebBrowserView(QWebEngineView):
@@ -164,9 +167,14 @@
             self.__mw.newTab(name)
             return
         
-        if not name.scheme():
-            name.setUrl(Preferences.getWebBrowser("DefaultScheme") +
-                        name.toString())
+        if not name.scheme() and not os.path.exists(name.toString()):
+            name.setScheme(Preferences.getWebBrowser("DefaultScheme"))
+        else:
+            if Utilities.isWindowsPlatform():
+                name.setUrl("file:///" + Utilities.fromNativeSeparators(
+                    name.toString()))
+            else:
+                name.setUrl("file://" + name.toString())
         
         if len(name.scheme()) == 1 or \
            name.scheme() == "file":
@@ -184,10 +192,7 @@
                     .format(name.toLocalFile()))
                 return
 
-            if name.toLocalFile().endswith(".pdf") or \
-               name.toLocalFile().endswith(".PDF") or \
-               name.toLocalFile().endswith(".chm") or \
-               name.toLocalFile().endswith(".CHM"):
+            if name.toLocalFile().lower().endswith((".pdf", ".chm")):
                 started = QDesktopServices.openUrl(name)
                 if not started:
                     E5MessageBox.critical(
@@ -210,10 +215,7 @@
                     .format(name.toString()))
             return
         else:
-            if name.toString().endswith(".pdf") or \
-               name.toString().endswith(".PDF") or \
-               name.toString().endswith(".chm") or \
-               name.toString().endswith(".CHM"):
+            if name.toString().lower().endswith((".pdf", ".chm")):
                 started = QDesktopServices.openUrl(name)
                 if not started:
                     E5MessageBox.critical(
@@ -317,7 +319,12 @@
         """
         Public slot to clear the current selection.
         """
-        self.triggerPageAction(QWebEnginePage.Unselect)
+        if qVersion() >= "5.7.0":
+            self.triggerPageAction(QWebEnginePage.Unselect)
+        else:
+            self.page().runJavaScript(
+                "window.getSelection().empty()",
+                WebBrowserPage.SafeJsWorld)
     
     def isForwardAvailable(self):
         """

eric ide

mercurial