Helpviewer/HelpBrowserWV.py

changeset 1953
26aa6fd94dc2
parent 1952
af4103f0e93f
child 1960
d8c45fe8a1b9
--- a/Helpviewer/HelpBrowserWV.py	Tue Jul 17 18:52:23 2012 +0200
+++ b/Helpviewer/HelpBrowserWV.py	Sun Jul 22 15:32:52 2012 +0200
@@ -9,7 +9,8 @@
 """
 
 from PyQt4.QtCore import pyqtSlot, pyqtSignal, QObject, QT_TRANSLATE_NOOP, QUrl, \
-    QBuffer, QIODevice, QFileInfo, Qt, QTimer, QEvent, QRect, QFile, QPoint
+    QBuffer, QIODevice, QFileInfo, Qt, QTimer, QEvent, QRect, QFile, QPoint, \
+    QByteArray
 from PyQt4.QtGui import qApp, QDesktopServices, QStyle, QMenu, QApplication, \
     QInputDialog, QLineEdit, QClipboard, QMouseEvent, QLabel, QToolTip, QColor, \
     QPalette, QFrame, QPrinter, QPrintDialog, QDialog
@@ -191,7 +192,9 @@
         @return flag indicating acceptance (boolean)
         """
         self.__lastRequest = request
-        self.__lastRequestType = type_
+        if self.__lastRequest.url() != request.url() or \
+           type_ != QWebPage.NavigationTypeOther:
+            self.__lastRequestType = type_
         
         scheme = request.url().scheme()
         if scheme == "mailto":
@@ -220,7 +223,10 @@
         """
         try:
             request.setAttribute(QNetworkRequest.User + 100, self)
-            request.setAttribute(QNetworkRequest.User + 101, self.__lastRequestType)
+            if self.__lastRequest.url() == request.url():
+                request.setAttribute(QNetworkRequest.User + 101, self.__lastRequestType)
+                if self.__lastRequestType == QWebPage.NavigationTypeLinkClicked:
+                    request.setRawHeader("X-Eric5-UserLoadAction", QByteArray("1"))
         except TypeError:
             pass
     
@@ -607,6 +613,7 @@
         self.__clickedFrame = None
         
         self.mw.personalInformationManager().connectPage(self.page())
+        self.mw.greaseMonkeyManager().connectPage(self.page())
         
         self.grabGesture(Qt.PinchGesture)
     
@@ -678,15 +685,20 @@
         if self.url().toString() == "eric:home":
             self.reload()
     
-    def setSource(self, name):
+    def setSource(self, name, requestData=None):
         """
         Public method used to set the source to be displayed.
         
         @param name filename to be shown (QUrl)
+        @param requestData tuple containing the request data (QNetworkRequest,
+            QNetworkAccessManager.Operation, QByteArray)
         """
-        if name is None or not name.isValid():
+        if (name is None or not name.isValid()) and requestData is None:
             return
         
+        if name is None and requestData is not None:
+            name = requestData[0].url()
+        
         if self.ctrlPressed:
             # open in a new window
             self.mw.newTab(name)
@@ -747,7 +759,10 @@
                         """ for file <b>{0}</b>.</p>""").format(name.path()))
                 return
         
-        self.load(name)
+        if requestData is not None:
+            self.load(*requestData)
+        else:
+            self.load(name)
 
     def source(self):
         """

eric ide

mercurial