summaryrefslogtreecommitdiff
path: root/src/frontend/display/bthtmlreaddisplay.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/display/bthtmlreaddisplay.cpp')
-rw-r--r--src/frontend/display/bthtmlreaddisplay.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/frontend/display/bthtmlreaddisplay.cpp b/src/frontend/display/bthtmlreaddisplay.cpp
index 2d95c38..d7ee33f 100644
--- a/src/frontend/display/bthtmlreaddisplay.cpp
+++ b/src/frontend/display/bthtmlreaddisplay.cpp
@@ -12,7 +12,6 @@
#include <QSharedPointer>
#include <QMenu>
#include <QString>
-#include "backend/config/cbtconfig.h"
#include "backend/keys/cswordkey.h"
#include "backend/managers/referencemanager.h"
#include "frontend/cdragdrop.h"
@@ -55,7 +54,7 @@ void BtHtmlReadDisplay::initJavascript() {
namespace DU = util::directory;
// read bthtml.js javascript file once
- if (javascript.size() == 0) {
+ if (javascript.isEmpty()) {
QString jsFile = DU::getJavascriptDir().canonicalPath() + "/bthtml.js";
QFile file(jsFile);
if (file.open(QFile::ReadOnly)) {
@@ -75,6 +74,16 @@ void BtHtmlReadDisplay::initJavascript() {
// When the QWebFrame is cleared, this function is called to install the
// javascript object (BtHtmlJsObject class) into the Javascript model
void BtHtmlReadDisplay::loadJSObject() {
+ // Starting with Qt 4.7.4 with QtWebKit 2.2 stronger security checking occurs.
+ // The BtHtmlJsObject that is associated with a given load of a page is rejected
+ // as causing a cross site security problem when a new page is loaded. Deleting
+ // the object and creating it new for each page loaded allows the object to access
+ // javascript variables without this security issue.
+ if (m_jsObject != 0)
+ delete m_jsObject;
+ m_jsObject = new BtHtmlJsObject(this);
+ m_jsObject->setObjectName("btHtmlJsObject");
+
mainFrame()->addToJavaScriptWindowObject(m_jsObject->objectName(), m_jsObject);
}
@@ -248,7 +257,7 @@ void BtHtmlReadDisplay::slotGoToAnchor(const QString& anchor) {
// Save the Lemma (Strongs number) attribute
void BtHtmlReadDisplay::setLemma(const QString& lemma) {
- m_nodeInfo[ CDisplay::Lemma ] = lemma;
+ m_nodeInfo = lemma;
}
// Open the Find text dialog
@@ -263,7 +272,7 @@ void BtHtmlReadDisplay::slotLoadFinished(bool) {
}
// For debugging javascript - set breakpoint in this function to catch javascript error messages
-#if DEBUG_JS
+#ifdef DEBUG_JS
void BtHtmlReadDisplay::javaScriptConsoleMessage (const QString& message, int lineNumber, const QString& sourceID ) {
}
#endif