--- a/eric6/UI/Previewers/PreviewerHTML.py Sat Aug 31 12:58:11 2019 +0200 +++ b/eric6/UI/Previewers/PreviewerHTML.py Sun Sep 01 17:43:03 2019 +0200 @@ -53,22 +53,14 @@ from PyQt5.QtWebEngineWidgets import QWebEngineView self.previewView = QWebEngineView(self) self.previewView.page().linkHovered.connect(self.__showLink) - self.__usesWebKit = False except ImportError: - try: - from PyQt5.QtWebKitWidgets import QWebPage, QWebView - self.previewView = QWebView(self) - self.previewView.page().setLinkDelegationPolicy( - QWebPage.DelegateAllLinks) - self.__usesWebKit = True - except ImportError: - self.__previewAvailable = False - self.titleLabel.setText(self.tr( - "<b>HTML Preview is not available!<br/>" - "Install QtWebEngine or QtWebKit.</b>")) - self.titleLabel.setAlignment(Qt.AlignHCenter) - self.__layout.addStretch() - return + self.__previewAvailable = False + self.titleLabel.setText(self.tr( + "<b>HTML Preview is not available!<br/>" + "Install QtWebEngine.</b>")) + self.titleLabel.setAlignment(Qt.AlignHCenter) + self.__layout.addStretch() + return sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) @@ -94,9 +86,6 @@ self.jsCheckBox.clicked[bool].connect(self.on_jsCheckBox_clicked) self.ssiCheckBox.clicked[bool].connect(self.on_ssiCheckBox_clicked) self.previewView.titleChanged.connect(self.on_previewView_titleChanged) - if self.__usesWebKit: - self.previewView.linkClicked.connect( - self.on_previewView_linkClicked) self.jsCheckBox.setChecked( Preferences.getUI("ShowFilePreviewJS")) @@ -234,14 +223,10 @@ self.__previewedPath = Utilities.normcasepath( Utilities.fromNativeSeparators(filePath)) self.__saveScrollBarPositions() - if self.__usesWebKit: - self.previewView.page().mainFrame().contentsSizeChanged.connect( - self.__restoreScrollBarPositions) - else: - self.previewView.page().loadFinished.connect( - self.__restoreScrollBarPositions) - if not filePath: - filePath = "/" + self.previewView.page().loadFinished.connect( + self.__restoreScrollBarPositions) + if not filePath: + filePath = "/" if rootPath: baseUrl = QUrl.fromLocalFile(rootPath + "/index.html") else: @@ -266,84 +251,39 @@ """ Private method to save scroll bar positions for a previewed editor. """ - if self.__usesWebKit: - frame = self.previewView.page().mainFrame() - if frame.contentsSize() == QSize(0, 0): - return # no valid data, nothing to save - - pos = frame.scrollPosition() - self.__scrollBarPositions[self.__previewedPath] = pos - self.__hScrollBarAtEnd[self.__previewedPath] = \ - frame.scrollBarMaximum(Qt.Horizontal) == pos.x() - self.__vScrollBarAtEnd[self.__previewedPath] = \ - frame.scrollBarMaximum(Qt.Vertical) == pos.y() - else: - from PyQt5.QtCore import QPoint - try: - pos = self.previewView.scrollPosition() - except AttributeError: - pos = self.__execJavaScript( - "(function() {" - "var res = {" - " x: 0," - " y: 0," - "};" - "res.x = window.scrollX;" - "res.y = window.scrollY;" - "return res;" - "})()" - ) - if pos is not None: - pos = QPoint(pos["x"], pos["y"]) - else: - pos = QPoint(0, 0) - self.__scrollBarPositions[self.__previewedPath] = pos - self.__hScrollBarAtEnd[self.__previewedPath] = False - self.__vScrollBarAtEnd[self.__previewedPath] = False + from PyQt5.QtCore import QPoint + try: + pos = self.previewView.scrollPosition() + except AttributeError: + pos = self.__execJavaScript( + "(function() {" + "var res = {" + " x: 0," + " y: 0," + "};" + "res.x = window.scrollX;" + "res.y = window.scrollY;" + "return res;" + "})()" + ) + if pos is not None: + pos = QPoint(pos["x"], pos["y"]) + else: + pos = QPoint(0, 0) + self.__scrollBarPositions[self.__previewedPath] = pos + self.__hScrollBarAtEnd[self.__previewedPath] = False + self.__vScrollBarAtEnd[self.__previewedPath] = False def __restoreScrollBarPositions(self): """ Private method to restore scroll bar positions for a previewed editor. """ - if self.__usesWebKit: - try: - self.previewView.page().mainFrame().contentsSizeChanged.\ - disconnect(self.__restoreScrollBarPositions) - except TypeError: - # not connected, simply ignore it - pass - - if self.__previewedPath not in self.__scrollBarPositions: - return - - frame = self.previewView.page().mainFrame() - frame.setScrollPosition( - self.__scrollBarPositions[self.__previewedPath]) - - if self.__hScrollBarAtEnd[self.__previewedPath]: - frame.setScrollBarValue( - Qt.Horizontal, frame.scrollBarMaximum(Qt.Horizontal)) - - if self.__vScrollBarAtEnd[self.__previewedPath]: - frame.setScrollBarValue( - Qt.Vertical, frame.scrollBarMaximum(Qt.Vertical)) - else: - if self.__previewedPath not in self.__scrollBarPositions: - return - - pos = self.__scrollBarPositions[self.__previewedPath] - self.previewView.page().runJavaScript( - "window.scrollTo({0}, {1});".format(pos.x(), pos.y())) - - @pyqtSlot(QUrl) - def on_previewView_linkClicked(self, url): - """ - Private slot handling the clicking of a link. + if self.__previewedPath not in self.__scrollBarPositions: + return - @param url URL of the clicked link - @type QUrl - """ - e5App().getObject("UserInterface").launchHelpViewer(url) + pos = self.__scrollBarPositions[self.__previewedPath] + self.previewView.page().runJavaScript( + "window.scrollTo({0}, {1});".format(pos.x(), pos.y())) def __execJavaScript(self, script): """