--- 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): """