summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2010-06-24 04:21:58 (GMT)
committerMartin Jones <martin.jones@nokia.com>2010-06-24 04:21:58 (GMT)
commit736067120b466248cbfc3180a533dc416953c5e0 (patch)
tree8d169e62a1011bdb8fe3b05a6c3629b2a78e3048
parent9d6ccfea89ae99b747f70ece71185868f189d0f9 (diff)
parent5d64484bf0b37427133c163ad9b160e767dc1bcd (diff)
downloadQt-736067120b466248cbfc3180a533dc416953c5e0.zip
Qt-736067120b466248cbfc3180a533dc416953c5e0.tar.gz
Qt-736067120b466248cbfc3180a533dc416953c5e0.tar.bz2
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7
-rwxr-xr-xconfigure6
-rw-r--r--demos/qtdemo/qtdemo.pro2
-rw-r--r--doc/src/platforms/compiler-notes.qdoc4
-rw-r--r--mkspecs/features/sis_targets.prf6
-rw-r--r--qmake/project.cpp17
-rw-r--r--qmake/project.h6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/declarative/declarative.pro1
-rw-r--r--src/gui/dialogs/qfiledialog_mac.mm18
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm2
-rw-r--r--src/gui/kernel/qdnd_mac.mm4
-rw-r--r--src/gui/text/qfontengine_mac.mm24
-rw-r--r--src/imports/folderlistmodel/folderlistmodel.pro1
-rw-r--r--src/imports/gestures/gestures.pro1
-rw-r--r--src/imports/particles/particles.pro1
-rw-r--r--tests/benchmarks/declarative/script/data/block.qml6
-rw-r--r--tests/benchmarks/declarative/script/data/global.js45
-rw-r--r--tests/benchmarks/declarative/script/data/global_prop.qml54
-rw-r--r--tests/benchmarks/declarative/script/tst_script.cpp56
-rw-r--r--tools/assistant/tools/assistant/bookmarkdialog.cpp3
-rw-r--r--tools/assistant/tools/assistant/bookmarkmanager.cpp1
-rw-r--r--tools/assistant/tools/assistant/bookmarkmodel.cpp8
-rw-r--r--tools/assistant/tools/assistant/bookmarkmodel.h1
-rw-r--r--tools/configure/configureapp.cpp5
-rw-r--r--tools/linguist/lupdate/qdeclarative.cpp72
24 files changed, 291 insertions, 53 deletions
diff --git a/configure b/configure
index f61ac6c..5d97405 100755
--- a/configure
+++ b/configure
@@ -6937,6 +6937,12 @@ if [ "$CFG_GUI" = "no" ]; then
canBuildWebKit="no"
fi
+if [ "$CFG_SHARED" = "no" ]; then
+ echo
+ echo "WARNING: Using static linking will disable the WebKit module."
+ echo
+ canBuildWebKit="no"
+fi
CFG_CONCURRENT="yes"
if [ "$canBuildQtConcurrent" = "no" ]; then
diff --git a/demos/qtdemo/qtdemo.pro b/demos/qtdemo/qtdemo.pro
index 4d4177e..61ea376 100644
--- a/demos/qtdemo/qtdemo.pro
+++ b/demos/qtdemo/qtdemo.pro
@@ -1,4 +1,4 @@
-CONFIG += assistant help x11inc
+CONFIG += help x11inc
TARGET = qtdemo
DEMO_DESTDIR = $$QT_BUILD_TREE
isEmpty(DEMO_DESTDIR):DEMO_DESTDIR=../..
diff --git a/doc/src/platforms/compiler-notes.qdoc b/doc/src/platforms/compiler-notes.qdoc
index c365d88..7eb92e0 100644
--- a/doc/src/platforms/compiler-notes.qdoc
+++ b/doc/src/platforms/compiler-notes.qdoc
@@ -52,7 +52,7 @@
\table
\header \o Compiler \o{5,1} Features
- \header \o \o Concurrent \o XmlPatterns \o WebKit \o CLucene \o Phonon
+ \header \o \o Concurrent \o XmlPatterns \o WebKit(*) \o CLucene \o Phonon
\row \o g++ 3.3 \o \o \bold{X} \o \o \bold{X} \o \bold{X}
\row \o g++ 3.4 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
\row
@@ -67,6 +67,8 @@
\row \o MSVC 2005 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
\endtable
+ * WebKit is only supported as a dynamically built library. Static linkage is not supported.
+
\target GCC
\section1 GCC
diff --git a/mkspecs/features/sis_targets.prf b/mkspecs/features/sis_targets.prf
index 37b758b..4207e0b 100644
--- a/mkspecs/features/sis_targets.prf
+++ b/mkspecs/features/sis_targets.prf
@@ -170,6 +170,12 @@ equals(GENERATE_SIS_TARGETS, true) {
sis_target.commands =
sis_target.target = sis
QMAKE_EXTRA_TARGETS += sis_target
+
+ symbian-abld {
+ # Create dummy store_build target to avoid errors from .mk callbacks during build
+ store_build_target.target = store_build
+ QMAKE_EXTRA_TARGETS += store_build_target
+ }
}
QMAKE_DISTCLEAN += $${sis_destdir}$${TARGET}.sis
diff --git a/qmake/project.cpp b/qmake/project.cpp
index 9cf6a6f..cb02923 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -1406,16 +1406,6 @@ QMakeProject::read(uchar cmd)
return false;
}
- if(cmd & ReadPostFiles) { // parse post files
- const QStringList l = vars["QMAKE_POST_INCLUDE_FILES"];
- for(QStringList::ConstIterator it = l.begin(); it != l.end(); ++it) {
- if(read((*it), vars)) {
- if(vars["QMAKE_INTERNAL_INCLUDED_FILES"].indexOf((*it)) == -1)
- vars["QMAKE_INTERNAL_INCLUDED_FILES"].append((*it));
- }
- }
- }
-
if(cmd & ReadCmdLine) {
parser.file = "(internal)";
parser.from_file = false;
@@ -1720,7 +1710,6 @@ QMakeProject::doProjectInclude(QString file, uchar flags, QMap<QString, QStringL
fprintf(stderr, "Cannot find directory: %s\n", file.left(di).toLatin1().constData());
return IncludeFailure;
}
- file = file.right(file.length() - di - 1);
}
bool parsed = false;
parser_info pi = parser;
@@ -1740,9 +1729,9 @@ QMakeProject::doProjectInclude(QString file, uchar flags, QMap<QString, QStringL
if(proj.doProjectInclude("default_pre", IncludeFlagFeature, proj.variables()) == IncludeNoExist)
proj.doProjectInclude("default", IncludeFlagFeature, proj.variables());
#endif
- parsed = proj.read(file, proj.variables());
+ parsed = proj.read(file, proj.variables()); // parse just that file (fromfile, infile)
} else {
- parsed = proj.read(file);
+ parsed = proj.read(file); // parse all aux files (load/include into)
}
place = proj.variables();
} else {
@@ -2191,7 +2180,7 @@ QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list,
if(args.count() != 1) {
fprintf(stderr, "%s:%d prompt(question) requires one argument.\n",
parser.file.toLatin1().constData(), parser.line_no);
- } else if(projectFile() == "-") {
+ } else if(pfile == "-") {
fprintf(stderr, "%s:%d prompt(question) cannot be used when '-o -' is used.\n",
parser.file.toLatin1().constData(), parser.line_no);
} else {
diff --git a/qmake/project.h b/qmake/project.h
index fd8ced1..1d9ec04 100644
--- a/qmake/project.h
+++ b/qmake/project.h
@@ -118,7 +118,7 @@ public:
~QMakeProject();
enum { ReadCache=0x01, ReadConf=0x02, ReadCmdLine=0x04, ReadProFile=0x08,
- ReadPostFiles=0x10, ReadFeatures=0x20, ReadConfigs=0x40, ReadAll=0xFF };
+ ReadFeatures=0x20, ReadConfigs=0x40, ReadAll=0xFF };
inline bool parse(const QString &text) { return parse(text, vars); }
bool read(const QString &project, uchar cmd=ReadAll);
bool read(uchar cmd=ReadAll);
@@ -127,7 +127,6 @@ public:
QStringList userTestFunctions() { return testFunctions.keys(); }
QString projectFile();
- QString configFile();
inline QMakeProperty *properties() { return prop; }
bool doProjectTest(QString str, QMap<QString, QStringList> &place);
@@ -174,9 +173,6 @@ inline QString QMakeProject::projectFile()
return pfile;
}
-inline QString QMakeProject::configFile()
-{ return cfile; }
-
inline QStringList &QMakeProject::values(const QString &v)
{ return values(v, vars); }
diff --git a/src/3rdparty/webkit/WebKit/qt/declarative/declarative.pro b/src/3rdparty/webkit/WebKit/qt/declarative/declarative.pro
index 122d90a..1371e57 100644
--- a/src/3rdparty/webkit/WebKit/qt/declarative/declarative.pro
+++ b/src/3rdparty/webkit/WebKit/qt/declarative/declarative.pro
@@ -64,6 +64,7 @@ qmldir.files += $$PWD/qmldir
qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
symbian:{
+ TARGET.UID3 = 0x20021321
load(data_caging_paths)
include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/src/gui/dialogs/qfiledialog_mac.mm b/src/gui/dialogs/qfiledialog_mac.mm
index b07b1ea..f1afaa9 100644
--- a/src/gui/dialogs/qfiledialog_mac.mm
+++ b/src/gui/dialogs/qfiledialog_mac.mm
@@ -284,6 +284,15 @@ QT_USE_NAMESPACE
if ([filename length] == 0)
return NO;
+ // Always accept directories regardless of their names (unless it is a bundle):
+ BOOL isDir;
+ if ([[NSFileManager defaultManager] fileExistsAtPath:filename isDirectory:&isDir] && isDir) {
+ if ([mSavePanel treatsFilePackagesAsDirectories] == NO) {
+ if ([[NSWorkspace sharedWorkspace] isFilePackageAtPath:filename] == NO)
+ return YES;
+ }
+ }
+
QString qtFileName = QT_PREPEND_NAMESPACE(qt_mac_NSStringToQString)(filename);
QFileInfo info(qtFileName.normalized(QT_PREPEND_NAMESPACE(QString::NormalizationForm_C)));
QString path = info.absolutePath();
@@ -295,15 +304,6 @@ QT_USE_NAMESPACE
if (!mQDirFilterEntryList->contains(info.fileName()))
return NO;
- // Always accept directories regardless of their names (unless it is a bundle):
- BOOL isDir;
- if ([[NSFileManager defaultManager] fileExistsAtPath:filename isDirectory:&isDir] && isDir) {
- if ([mSavePanel treatsFilePackagesAsDirectories] == NO) {
- if ([[NSWorkspace sharedWorkspace] isFilePackageAtPath:filename] == NO)
- return YES;
- }
- }
-
// No filter means accept everything
if (mSelectedNameFilter->isEmpty())
return YES;
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index eec9699..5c90e2e 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -1587,6 +1587,8 @@ Qt::DropAction QDragManager::drag(QDrag *o)
}
}
}
+ o->setMimeData(0);
+ o->deleteLater();
return performedAction;
}
diff --git a/src/gui/kernel/qdnd_mac.mm b/src/gui/kernel/qdnd_mac.mm
index 189d535..844f5e3 100644
--- a/src/gui/kernel/qdnd_mac.mm
+++ b/src/gui/kernel/qdnd_mac.mm
@@ -675,6 +675,8 @@ Qt::DropAction QDragManager::drag(QDrag *o)
}
if (atleastOne){
DisposeDrag(dragRef);
+ o->setMimeData(0);
+ o->deleteLater();
return action;
}
}
@@ -682,6 +684,8 @@ Qt::DropAction QDragManager::drag(QDrag *o)
DragActions ret = kDragActionNothing;
GetDragDropAction(dragRef, &ret);
DisposeDrag(dragRef); //cleanup
+ o->setMimeData(0);
+ o->deleteLater();
return qt_mac_dnd_map_mac_default_action(ret);
}
DisposeDrag(dragRef); //cleanup
diff --git a/src/gui/text/qfontengine_mac.mm b/src/gui/text/qfontengine_mac.mm
index 7ceed61..deaad57 100644
--- a/src/gui/text/qfontengine_mac.mm
+++ b/src/gui/text/qfontengine_mac.mm
@@ -348,7 +348,29 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay
bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs,
int *nglyphs, QTextEngine::ShaperFlags flags) const
{
- return stringToCMap(str, len, glyphs, nglyphs, flags, 0, 0);
+ *nglyphs = len;
+ QVarLengthArray<CGGlyph> cgGlyphs(len);
+ CTFontGetGlyphsForCharacters(ctfont, (const UniChar*)str, cgGlyphs.data(), len);
+
+ for (int i = 0; i < len; ++i)
+ glyphs->glyphs[i] = cgGlyphs[i];
+
+ if (flags & QTextEngine::GlyphIndicesOnly)
+ return true;
+
+ QVarLengthArray<CGSize> advances(len);
+ CTFontGetAdvancesForGlyphs(ctfont, kCTFontHorizontalOrientation, cgGlyphs.data(), advances.data(), len);
+
+ for (int i = 0; i < len; ++i) {
+ glyphs->advances_x[i] = QFixed::fromReal(advances[i].width);
+ glyphs->advances_y[i] = QFixed::fromReal(advances[i].height);
+ if (fontDef.styleStrategy & QFont::ForceIntegerMetrics) {
+ glyphs->advances_x[i] = glyphs->advances_x[i].round();
+ glyphs->advances_y[i] = glyphs->advances_y[i].round();
+ }
+ }
+
+ return true;
}
void QCoreTextFontEngineMulti::recalcAdvances(int , QGlyphLayout *, QTextEngine::ShaperFlags) const
diff --git a/src/imports/folderlistmodel/folderlistmodel.pro b/src/imports/folderlistmodel/folderlistmodel.pro
index dced319..49a6baa 100644
--- a/src/imports/folderlistmodel/folderlistmodel.pro
+++ b/src/imports/folderlistmodel/folderlistmodel.pro
@@ -14,6 +14,7 @@ qmldir.files += $$PWD/qmldir
qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
symbian:{
+ TARGET.UID3 = 0x20021320
include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
importFiles.sources = qmlfolderlistmodelplugin.dll qmldir
diff --git a/src/imports/gestures/gestures.pro b/src/imports/gestures/gestures.pro
index d6dc758..265bbca 100644
--- a/src/imports/gestures/gestures.pro
+++ b/src/imports/gestures/gestures.pro
@@ -14,6 +14,7 @@ qmldir.files += $$PWD/qmldir
qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
symbian:{
+ TARGET.UID3 = 0x2002131F
include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
importFiles.sources = qmlgesturesplugin.dll qmldir
diff --git a/src/imports/particles/particles.pro b/src/imports/particles/particles.pro
index 95ec633..91c1b9f 100644
--- a/src/imports/particles/particles.pro
+++ b/src/imports/particles/particles.pro
@@ -18,6 +18,7 @@ qmldir.files += $$PWD/qmldir
qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
symbian:{
+ TARGET.UID3 = 0x2002131E
include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
importFiles.sources = qmlparticlesplugin.dll qmldir
diff --git a/tests/benchmarks/declarative/script/data/block.qml b/tests/benchmarks/declarative/script/data/block.qml
index 4e5006e..f7b2ab3 100644
--- a/tests/benchmarks/declarative/script/data/block.qml
+++ b/tests/benchmarks/declarative/script/data/block.qml
@@ -47,7 +47,7 @@ Rectangle {
function doSomethingDirect() {
theObject.prop1 = 0;
- for (var i = 0; i < 60; ++i)
+ for (var i = 0; i < 1000; ++i)
theObject.prop1 += theObject.prop2;
theObject.prop3 = theObject.prop1;
@@ -57,7 +57,7 @@ Rectangle {
theObject.prop1 = 0;
var incrementObj = theObject;
- for (var i = 0; i < 60; ++i)
+ for (var i = 0; i < 1000; ++i)
incrementObj.prop1 += incrementObj.prop2;
incrementObj.prop3 = incrementObj.prop1;
@@ -67,7 +67,7 @@ Rectangle {
theObject.prop1 = 0;
var increment = theObject.prop2;
- for (var i = 0; i < 60; ++i)
+ for (var i = 0; i < 1000; ++i)
theObject.prop1 += increment;
theObject.prop3 = theObject.prop1;
diff --git a/tests/benchmarks/declarative/script/data/global.js b/tests/benchmarks/declarative/script/data/global.js
new file mode 100644
index 0000000..02472d2
--- /dev/null
+++ b/tests/benchmarks/declarative/script/data/global.js
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+function doSomething() {
+ for (var i = 0; i < 10000; ++i)
+ Math.sin(90);
+}
diff --git a/tests/benchmarks/declarative/script/data/global_prop.qml b/tests/benchmarks/declarative/script/data/global_prop.qml
new file mode 100644
index 0000000..908cecf
--- /dev/null
+++ b/tests/benchmarks/declarative/script/data/global_prop.qml
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt 4.7
+import "global.js" as Program
+
+Rectangle {
+ width: 200; height: 200
+
+ signal triggered
+ onTriggered: Program.doSomething();
+
+ function doSomething() {
+ Program.doSomething();
+ }
+}
diff --git a/tests/benchmarks/declarative/script/tst_script.cpp b/tests/benchmarks/declarative/script/tst_script.cpp
index 99f294c..16052fa 100644
--- a/tests/benchmarks/declarative/script/tst_script.cpp
+++ b/tests/benchmarks/declarative/script/tst_script.cpp
@@ -92,7 +92,10 @@ private slots:
void block_data();
void block();
-private:
+
+ void global_property_js();
+ void global_property_qml();
+ void global_property_qml_js();
};
inline QUrl TEST_FILE(const QString &filename)
@@ -625,6 +628,57 @@ void tst_script::block()
delete rect;
}
+#define GLOBALPROPERTY_PROGRAM \
+ "(function() { " \
+ " for (var ii = 0; ii < 10000; ++ii) { " \
+ " Math.sin(90); " \
+ " } " \
+ "})"
+
+void tst_script::global_property_js()
+{
+ QScriptEngine engine;
+
+ QScriptValue prog = engine.evaluate(GLOBALPROPERTY_PROGRAM);
+ prog.call();
+
+ QBENCHMARK {
+ prog.call();
+ }
+}
+
+void tst_script::global_property_qml()
+{
+ QDeclarativeEngine qmlengine;
+
+ QScriptEngine *engine = QDeclarativeEnginePrivate::getScriptEngine(&qmlengine);
+ QScriptValue prog = engine->evaluate(GLOBALPROPERTY_PROGRAM);
+ prog.call();
+
+ QBENCHMARK {
+ prog.call();
+ }
+}
+
+void tst_script::global_property_qml_js()
+{
+ QDeclarativeEngine engine;
+ QDeclarativeComponent component(&engine, TEST_FILE("global_prop.qml"));
+ QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle *>(component.create());
+ QVERIFY(rect != 0);
+
+ int index = rect->metaObject()->indexOfMethod("triggered()");
+ QVERIFY(index != -1);
+ QMetaMethod method = rect->metaObject()->method(index);
+
+ QBENCHMARK {
+ method.invoke(rect, Qt::DirectConnection);
+ }
+
+ delete rect;
+}
+
+
QTEST_MAIN(tst_script)
#include "tst_script.moc"
diff --git a/tools/assistant/tools/assistant/bookmarkdialog.cpp b/tools/assistant/tools/assistant/bookmarkdialog.cpp
index 8b195c1..d9e9a53 100644
--- a/tools/assistant/tools/assistant/bookmarkdialog.cpp
+++ b/tools/assistant/tools/assistant/bookmarkdialog.cpp
@@ -160,8 +160,7 @@ void BookmarkDialog::accepted()
QModelIndex index = ui.treeView->currentIndex();
if (index.isValid()) {
index = bookmarkModel->addItem(bookmarkTreeModel->mapToSource(index));
- if (BookmarkItem *item = bookmarkModel->itemFromIndex(index))
- item->setData(DataVector() << m_title << m_url << false);
+ bookmarkModel->setData(index, DataVector() << m_title << m_url << false);
} else
rejected();
diff --git a/tools/assistant/tools/assistant/bookmarkmanager.cpp b/tools/assistant/tools/assistant/bookmarkmanager.cpp
index 4bc7027..23632b1 100644
--- a/tools/assistant/tools/assistant/bookmarkmanager.cpp
+++ b/tools/assistant/tools/assistant/bookmarkmanager.cpp
@@ -240,6 +240,7 @@ bool BookmarkManager::eventFilter(QObject *object, QEvent *event)
case Qt::Key_Delete: {
removeItem(bookmarkTreeView->currentIndex());
+ return true;
} break;
case Qt::Key_Up: { // needs event filter on widget
diff --git a/tools/assistant/tools/assistant/bookmarkmodel.cpp b/tools/assistant/tools/assistant/bookmarkmodel.cpp
index e446ff0..4c30b42 100644
--- a/tools/assistant/tools/assistant/bookmarkmodel.cpp
+++ b/tools/assistant/tools/assistant/bookmarkmodel.cpp
@@ -261,6 +261,14 @@ BookmarkModel::data(const QModelIndex &index, int role) const
return QVariant();
}
+void BookmarkModel::setData(const QModelIndex &index, const DataVector &data)
+{
+ if (BookmarkItem *item = itemFromIndex(index)) {
+ item->setData(data);
+ emit dataChanged(index, index);
+ }
+}
+
bool
BookmarkModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
diff --git a/tools/assistant/tools/assistant/bookmarkmodel.h b/tools/assistant/tools/assistant/bookmarkmodel.h
index 6469258..f74baea 100644
--- a/tools/assistant/tools/assistant/bookmarkmodel.h
+++ b/tools/assistant/tools/assistant/bookmarkmodel.h
@@ -79,6 +79,7 @@ public:
Qt::ItemFlags flags(const QModelIndex &index) const;
QVariant data(const QModelIndex &index, int role) const;
+ void setData(const QModelIndex &index, const QVector<QVariant> &data);
bool setData(const QModelIndex &index, const QVariant &value, int role);
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 2e2d8ba..c66eb53 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -2125,6 +2125,11 @@ bool Configure::checkAvailability(const QString &part)
available = true;
} else if (part == "WEBKIT") {
available = (dictionary.value("QMAKESPEC") == "win32-msvc2005") || (dictionary.value("QMAKESPEC") == "win32-msvc2008") || (dictionary.value("QMAKESPEC") == "win32-msvc2010") || (dictionary.value("QMAKESPEC") == "win32-g++");
+ if( dictionary[ "SHARED" ] == "no" ) {
+ cout << endl << "WARNING: Using static linking will disable the WebKit module." << endl
+ << endl;
+ available = false;
+ }
} else if (part == "AUDIO_BACKEND") {
available = true;
if (dictionary.contains("XQMAKESPEC") && dictionary["XQMAKESPEC"].startsWith("symbian")) {
diff --git a/tools/linguist/lupdate/qdeclarative.cpp b/tools/linguist/lupdate/qdeclarative.cpp
index 1b35c14..3eef2d7 100644
--- a/tools/linguist/lupdate/qdeclarative.cpp
+++ b/tools/linguist/lupdate/qdeclarative.cpp
@@ -87,17 +87,25 @@ protected:
virtual void endVisit(AST::CallExpression *node)
{
+ m_bSource.clear();
if (AST::IdentifierExpression *idExpr = AST::cast<AST::IdentifierExpression *>(node->base)) {
if (idExpr->name->asString() == QLatin1String("qsTr") ||
idExpr->name->asString() == QLatin1String("QT_TR_NOOP")) {
- if (node->arguments && AST::cast<AST::StringLiteral *>(node->arguments->expression)) {
- AST::StringLiteral *literal = AST::cast<AST::StringLiteral *>(node->arguments->expression);
- const QString source = literal->value->asString();
+ if (!node->arguments)
+ return;
+ AST::BinaryExpression *binary = AST::cast<AST::BinaryExpression *>(node->arguments->expression);
+ if (binary) {
+ if (!createString(binary))
+ m_bSource.clear();
+ }
+ AST::StringLiteral *literal = AST::cast<AST::StringLiteral *>(node->arguments->expression);
+ if (literal || !m_bSource.isEmpty()) {
+ const QString source = literal ? literal->value->asString() : m_bSource;
QString comment;
bool plural = false;
AST::ArgumentList *commentNode = node->arguments->next;
- if (commentNode) {
+ if (commentNode && AST::cast<AST::StringLiteral *>(commentNode->expression)) {
literal = AST::cast<AST::StringLiteral *>(commentNode->expression);
comment = literal->value->asString();
@@ -122,18 +130,25 @@ protected:
QString comment;
bool plural = false;
AST::ArgumentList *sourceNode = node->arguments->next;
- if (sourceNode) {
- literal = AST::cast<AST::StringLiteral *>(sourceNode->expression);
- source = literal->value->asString();
- AST::ArgumentList *commentNode = sourceNode->next;
- if (commentNode) {
- literal = AST::cast<AST::StringLiteral *>(commentNode->expression);
- comment = literal->value->asString();
-
- AST::ArgumentList *nNode = commentNode->next;
- if (nNode)
- plural = true;
- }
+ if (!sourceNode)
+ return;
+ literal = AST::cast<AST::StringLiteral *>(sourceNode->expression);
+ AST::BinaryExpression *binary = AST::cast<AST::BinaryExpression *>(sourceNode->expression);
+ if (binary) {
+ if (!createString(binary))
+ m_bSource.clear();
+ }
+ if (!literal && m_bSource.isEmpty())
+ return;
+ source = literal ? literal->value->asString() : m_bSource;
+ AST::ArgumentList *commentNode = sourceNode->next;
+ if (commentNode && AST::cast<AST::StringLiteral *>(commentNode->expression)) {
+ literal = AST::cast<AST::StringLiteral *>(commentNode->expression);
+ comment = literal->value->asString();
+
+ AST::ArgumentList *nNode = commentNode->next;
+ if (nNode)
+ plural = true;
}
TranslatorMessage msg(context, source,
@@ -148,9 +163,34 @@ protected:
}
private:
+ bool createString(AST::BinaryExpression *b) {
+ if (!b or b->op != 0)
+ return false;
+ AST::BinaryExpression *l = AST::cast<AST::BinaryExpression *>(b->left);
+ AST::BinaryExpression *r = AST::cast<AST::BinaryExpression *>(b->right);
+ AST::StringLiteral *ls = AST::cast<AST::StringLiteral *>(b->left);
+ AST::StringLiteral *rs = AST::cast<AST::StringLiteral *>(b->right);
+ if ((!l && !ls) || (!r && !rs))
+ return false;
+ if (l) {
+ if (!createString(l))
+ return false;
+ } else
+ m_bSource.prepend(ls->value->asString());
+
+ if (r) {
+ if (!createString(r))
+ return false;
+ } else
+ m_bSource.append(rs->value->asString());
+
+ return true;
+ }
+
Translator *m_translator;
QString m_fileName;
QString m_component;
+ QString m_bSource;
};
QString createErrorString(const QString &filename, const QString &code, Parser &parser)