WebBrowser/WebBrowserWindow.py

changeset 6287
9a193ff6d24a
parent 6223
53eda93de07c
child 6296
db9b3a419845
diff -r 2c8a751d6137 -r 9a193ff6d24a WebBrowser/WebBrowserWindow.py
--- a/WebBrowser/WebBrowserWindow.py	Sun May 13 12:55:08 2018 +0200
+++ b/WebBrowser/WebBrowserWindow.py	Sun May 13 12:57:00 2018 +0200
@@ -409,8 +409,11 @@
             if not Preferences.getWebBrowser("StatusBarVisible"):
                 self.statusBar().hide()
             
-            QDesktopServices.setUrlHandler("http", self.__linkActivated)
-            QDesktopServices.setUrlHandler("https", self.__linkActivated)
+            if not self.__fromEric and len(WebBrowserWindow.BrowserWindows):
+                QDesktopServices.setUrlHandler(
+                    "http", WebBrowserWindow.BrowserWindows[0].urlHandler)
+                QDesktopServices.setUrlHandler(
+                    "https", WebBrowserWindow.BrowserWindows[0].urlHandler)
             
             # setup connections
             self.__activating = False
@@ -2851,9 +2854,22 @@
             Preferences.setGeometry("WebBrowserGeometry", QByteArray())
         
         try:
+            browserIndex = WebBrowserWindow.BrowserWindows.index(self)
+            if not self.__fromEric and len(WebBrowserWindow.BrowserWindows):
+                if browserIndex == 0:
+                    if len(WebBrowserWindow.BrowserWindows) > 1:
+                        # first window will be deleted
+                        QDesktopServices.setUrlHandler(
+                            "http",
+                            WebBrowserWindow.BrowserWindows[1].urlHandler)
+                        QDesktopServices.setUrlHandler(
+                            "https",
+                            WebBrowserWindow.BrowserWindows[1].urlHandler)
+                    else:
+                        QDesktopServices.unsetUrlHandler("http")
+                        QDesktopServices.unsetUrlHandler("https")
             if self.__fromEric or len(WebBrowserWindow.BrowserWindows) > 0:
-                del WebBrowserWindow.BrowserWindows[
-                    WebBrowserWindow.BrowserWindows.index(self)]
+                del WebBrowserWindow.BrowserWindows[browserIndex]
         except ValueError:
             pass
         
@@ -3394,11 +3410,22 @@
         WebIconProvider.instance().showWebIconDialog()
         
     @pyqtSlot(QUrl)
+    def urlHandler(self, url):
+        """
+        Private slot used as desktop URL handler.
+        
+        @param url URL to be handled
+        @type QUrl
+        """
+        self.__linkActivated(url)
+    
+    @pyqtSlot(QUrl)
     def __linkActivated(self, url):
         """
         Private slot to handle the selection of a link.
         
-        @param url URL to be shown (QUrl)
+        @param url URL to be shown
+        @type QUrl
         """
         if not self.__activating:
             self.__activating = True

eric ide

mercurial