eric6/WebBrowser/WebBrowserTabWidget.py

changeset 7578
13b2c2167c93
parent 7533
88261c96484b
child 7759
51aa6c6b66f7
diff -r 6eaa43d3786e -r 13b2c2167c93 eric6/WebBrowser/WebBrowserTabWidget.py
--- a/eric6/WebBrowser/WebBrowserTabWidget.py	Tue May 05 18:17:20 2020 +0200
+++ b/eric6/WebBrowser/WebBrowserTabWidget.py	Tue May 05 18:18:27 2020 +0200
@@ -428,8 +428,8 @@
         browser.backwardAvailable.connect(
             self.__mainWindow.setBackwardAvailable)
         browser.forwardAvailable.connect(self.__mainWindow.setForwardAvailable)
-        browser.loadStarted.connect(
-            lambda: self.__loadStarted(browser))
+        browser.loadProgress.connect(
+            lambda progress: self.__loadProgress(progress, browser))
         browser.loadFinished.connect(
             lambda ok: self.__loadFinished(ok, browser))
         browser.faviconChanged.connect(
@@ -874,25 +874,6 @@
         for urlbar in self.__stackedUrlBar.urlBars():
             urlbar.preferencesChanged()
     
-    def __loadStarted(self, browser):
-        """
-        Private method to handle the loadStarted signal.
-        
-        @param browser reference to the web browser
-        @type WebBrowserView
-        """
-        index = self.indexOf(browser)
-        anim = self.animationLabel(index, "loadingAnimation", 40)
-        if not anim:
-            self.setTabIcon(index, UI.PixmapCache.getIcon("loading"))
-        else:
-            self.setTabIcon(index, QIcon())
-        self.setTabText(index, self.tr("Loading..."))
-        self.setTabToolTip(index, self.tr("Loading..."))
-        self.showMessage.emit(self.tr("Loading..."))
-        
-        self.__mainWindow.setLoadingActions(True)
-    
     def __loadFinished(self, ok, browser):
         """
         Private method to handle the loadFinished signal.
@@ -902,18 +883,45 @@
         @param browser reference to the web browser
         @type WebBrowserView
         """
-        import WebBrowser.WebBrowserWindow
-        index = self.indexOf(browser)
-        self.resetAnimation(index)
-        self.setTabIcon(
-            index, WebBrowser.WebBrowserWindow.WebBrowserWindow.icon(
-                browser.url()))
         if ok:
             self.showMessage.emit(self.tr("Finished loading"))
         else:
             self.showMessage.emit(self.tr("Failed to load"))
+    
+    def __loadProgress(self, progress, browser):
+        """
+        Private method to handle the loadProgress signal.
         
-        self.__mainWindow.setLoadingActions(False)
+        Note: This works around wegengine not sending a loadFinished
+        signal for navigation on the same page.
+        
+        @param progress load progress in percent
+        @type int
+        @param browser reference to the web browser
+        @type WebBrowserView
+        """
+        index = self.indexOf(browser)
+        if progress == 0:
+            # page loading has started
+            anim = self.animationLabel(index, "loadingAnimation", 40)
+            if not anim:
+                self.setTabIcon(index, UI.PixmapCache.getIcon("loading"))
+            else:
+                self.setTabIcon(index, QIcon())
+            self.setTabText(index, self.tr("Loading..."))
+            self.setTabToolTip(index, self.tr("Loading..."))
+            self.showMessage.emit(self.tr("Loading..."))
+            
+            self.__mainWindow.setLoadingActions(True)
+        elif progress == 100:
+            import WebBrowser.WebBrowserWindow
+            self.resetAnimation(index)
+            self.setTabIcon(
+                index, WebBrowser.WebBrowserWindow.WebBrowserWindow.icon(
+                    browser.url()))
+            self.showMessage.emit(self.tr("Finished loading"))
+            
+            self.__mainWindow.setLoadingActions(False)
     
     def __iconChanged(self, browser):
         """

eric ide

mercurial