summaryrefslogtreecommitdiffstats
path: root/src/script
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-04-15 15:50:15 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-04-15 15:50:15 (GMT)
commitd03c27040c08827eddbb086f70a50f8b908f97cc (patch)
treeb95e1f0da0af171ebc0ace99919a9a3251738a4c /src/script
parent07f724cd5abd0548fb32ed3469bde113daf028c4 (diff)
parentafb54fe253ded94152575b23539552aa8f4ad384 (diff)
downloadQt-d03c27040c08827eddbb086f70a50f8b908f97cc.zip
Qt-d03c27040c08827eddbb086f70a50f8b908f97cc.tar.gz
Qt-d03c27040c08827eddbb086f70a50f8b908f97cc.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (31 commits) Speed up qsTr() by caching the translation context Crash while printing from the portedcanvas example on Mac Cocoa. qdoc: Fixed .qdocconf files for assistant. Disable debug-only framework builds on Mac. Compile (with -no-pch) Add missing QT_NO_BEARERMANAGEMENT ifdefs. Introduce a qconfig feature for Bearer Management Fix MOBILITY-404 Remove holes in bearer management data structures. Don't link bearer plugins against QtGui unnecessarily. Added missing newline after warning message when using -L with qml Doc: updating scripts Fixed a crash on embedded due to uninitialized pointer. Fix a race where QThread::exit() is "lost" when called after start() qdoc: Removed all <table> attributes in favor of using css. Autotest failure: dialogModality test fails on cocoa (macgui) Force the bic test to compile in 32-bit mode on Mac Revert "Doc: Updating design files." Remove statically allocated pixmaps through the post routine qdoc: Checked for empty title. ...
Diffstat (limited to 'src/script')
-rw-r--r--src/script/api/qscriptengine.cpp14
-rw-r--r--src/script/api/qscriptengine_p.h7
2 files changed, 19 insertions, 2 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 58c8d83..f732907 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -792,6 +792,7 @@ JSC::JSValue JSC_HOST_CALL functionQsTr(JSC::ExecState *exec, JSC::JSObject*, JS
if ((args.size() > 2) && !args.at(2).isNumber())
return JSC::throwError(exec, JSC::GeneralError, "qsTranslate(): third argument (n) must be a number");
#ifndef QT_NO_QOBJECT
+ QScriptEnginePrivate *engine = scriptEngineFromExec(exec);
JSC::UString context;
// The first non-empty source URL in the call stack determines the translation context.
{
@@ -799,7 +800,7 @@ JSC::JSValue JSC_HOST_CALL functionQsTr(JSC::ExecState *exec, JSC::JSObject*, JS
while (frame) {
if (frame->codeBlock() && frame->codeBlock()->source()
&& !frame->codeBlock()->source()->url().isEmpty()) {
- context = QFileInfo(frame->codeBlock()->source()->url()).baseName();
+ context = engine->translationContextFromUrl(frame->codeBlock()->source()->url());
break;
}
frame = frame->callerFrame()->removeHostCallFrameFlag();
@@ -921,6 +922,8 @@ QScriptEnginePrivate::QScriptEnginePrivate()
activeAgent = 0;
agentLineNumber = -1;
processEventsInterval = -1;
+ cachedTranslationUrl = JSC::UString();
+ cachedTranslationContext = JSC::UString();
JSC::setCurrentIdentifierTable(oldTable);
}
@@ -3307,6 +3310,15 @@ bool QScriptEnginePrivate::hasDemarshalFunction(int type) const
return info && (info->demarshal != 0);
}
+JSC::UString QScriptEnginePrivate::translationContextFromUrl(const JSC::UString &url)
+{
+ if (url != cachedTranslationUrl) {
+ cachedTranslationContext = QFileInfo(url).baseName();
+ cachedTranslationUrl = url;
+ }
+ return cachedTranslationContext;
+}
+
/*!
\internal
*/
diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h
index 5c2007f..fd47208 100644
--- a/src/script/api/qscriptengine_p.h
+++ b/src/script/api/qscriptengine_p.h
@@ -63,6 +63,7 @@
#include "RegExpObject.h"
#include "SourceProvider.h"
#include "Structure.h"
+#include "UString.h"
#include "JSGlobalObject.h"
#include "JSValue.h"
@@ -73,7 +74,6 @@ namespace JSC
typedef ExecState CallFrame;
class JSCell;
class JSGlobalObject;
- class UString;
}
@@ -298,6 +298,8 @@ public:
static inline QScriptDeclarativeClass *declarativeClass(JSC::JSValue);
static inline QScriptDeclarativeClass::Object *declarativeObject(JSC::JSValue);
+ JSC::UString translationContextFromUrl(const JSC::UString &);
+
#ifndef QT_NO_QOBJECT
JSC::JSValue newQObject(QObject *object,
QScriptEngine::ValueOwnership ownership = QScriptEngine::QtOwnership,
@@ -367,6 +369,9 @@ public:
QScriptValue abortResult;
bool inEval;
+ JSC::UString cachedTranslationUrl;
+ JSC::UString cachedTranslationContext;
+
QSet<QString> importedExtensions;
QSet<QString> extensionsBeingImported;