summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Smith <martin.smith@nokia.com>2010-06-01 06:48:50 (GMT)
committerMartin Smith <martin.smith@nokia.com>2010-06-01 06:48:50 (GMT)
commit70ba57c4716749c99e302a4eda4695942d0b45fe (patch)
treea59cd703b68ed7e484232410c157cc63a33f232e
parent15f331834833e34c1faf437b6fe3d3ef58691651 (diff)
parent450508cf9a19473644de20e64bb1098050806182 (diff)
downloadQt-70ba57c4716749c99e302a4eda4695942d0b45fe.zip
Qt-70ba57c4716749c99e302a4eda4695942d0b45fe.tar.gz
Qt-70ba57c4716749c99e302a4eda4695942d0b45fe.tar.bz2
Merge branch '4.7' of git@scm.dev.nokia.troll.no:qt/oslo-staging-1 into 4.7
-rwxr-xr-xconfig.tests/unix/fvisibility.test2
-rw-r--r--dist/changes-4.7.06
-rw-r--r--doc/src/development/rcc.qdoc40
-rw-r--r--doc/src/examples/pixelator.qdoc6
-rw-r--r--examples/itemviews/fetchmore/filelistmodel.cpp2
-rw-r--r--src/3rdparty/webkit/.tag2
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog10
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.pro2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/DerivedSources.pro6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/ChangeLog21
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/docs.pri2
-rw-r--r--src/corelib/global/qfeatures.h10
-rw-r--r--src/corelib/global/qfeatures.txt2
-rw-r--r--src/corelib/global/qnamespace.h3
-rw-r--r--src/corelib/xml/qxmlstream.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext.cpp16
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit.cpp10
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput_p.h7
-rw-r--r--src/declarative/qml/qdeclarativecompiler.cpp4
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp4
-rw-r--r--src/declarative/qml/qdeclarativeengine_p.h3
-rw-r--r--src/declarative/qml/qdeclarativeinfo.h2
-rw-r--r--src/declarative/qml/qdeclarativeinstruction.cpp5
-rw-r--r--src/declarative/qml/qdeclarativestringconverters.cpp4
-rw-r--r--src/declarative/qml/qdeclarativestringconverters_p.h2
-rw-r--r--src/declarative/util/qdeclarativestate.cpp2
-rw-r--r--src/declarative/util/qdeclarativetransitionmanager.cpp2
-rw-r--r--src/gui/kernel/qdrag.cpp4
-rw-r--r--src/gui/painting/qpainter.cpp17
-rw-r--r--src/gui/text/qfontmetrics.cpp25
-rw-r--r--src/gui/text/qfontmetrics.h1
-rw-r--r--src/gui/text/qtextengine.cpp8
-rw-r--r--src/gui/text/qtextengine_p.h1
-rw-r--r--src/gui/text/qtextlayout.cpp3
-rw-r--r--src/imports/folderlistmodel/plugin.cpp2
-rw-r--r--src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp4
-rw-r--r--src/imports/folderlistmodel/qdeclarativefolderlistmodel.h4
-rw-r--r--src/plugins/bearer/symbian/symbianengine.cpp4
-rw-r--r--tests/auto/qfontmetrics/tst_qfontmetrics.cpp15
-rw-r--r--tests/auto/qtextlayout/tst_qtextlayout.cpp25
-rw-r--r--tools/assistant/tools/assistant/doc/images/assistant-assistant.pngbin105954 -> 205326 bytes
-rw-r--r--tools/porting/src/codemodel.h2
49 files changed, 259 insertions, 49 deletions
diff --git a/config.tests/unix/fvisibility.test b/config.tests/unix/fvisibility.test
index 5bc4b93..27c6841 100755
--- a/config.tests/unix/fvisibility.test
+++ b/config.tests/unix/fvisibility.test
@@ -1,4 +1,4 @@
-#!/bin/sh -x
+#!/bin/sh
FVISIBILITY_SUPPORT=no
COMPILER=$1
diff --git a/dist/changes-4.7.0 b/dist/changes-4.7.0
index e7b1e84..dbb3add 100644
--- a/dist/changes-4.7.0
+++ b/dist/changes-4.7.0
@@ -52,12 +52,16 @@ QtCore
- QMetaType
* Significantly improved performance of the type() function
+ * [QTBUG-8235] Support QEasingCurve as a built in metatype.
- QState
* [QTBUG-7741] Added a function to get the out-going transitions
- QXmlStreamReader
* [QTBUG-9196] fixed crash when parsing
- QTimer
* singleShot with 0 timeout will now avoid allocating objects
+ - QAbstractAnimation
+ * [QTBUG-10654] Avoids animation with loopCount == 0 to change state
+ to running and stopped.
QtGui
-----
@@ -95,6 +99,8 @@ QtGui
- QGraphicsTextItem
* [QTBUG-7333] Fixed keyboard shortcuts not being triggered when the
the item has focus and something else has the same shortcut sequence.
+ * [QTBUG-10574] Fixed crash when flag "QGraphicsItem::ItemIgnoresTransformations"
+ is set.
- QGraphicsView
* [QTBUG-7438] Fixed viewport cursor getting reset when releasing
diff --git a/doc/src/development/rcc.qdoc b/doc/src/development/rcc.qdoc
index 1541e11..999408b 100644
--- a/doc/src/development/rcc.qdoc
+++ b/doc/src/development/rcc.qdoc
@@ -60,28 +60,30 @@
\row \o \c{-o} \o \c{file} \o Write output to \c{file} rather than to stdout.
\row \o \c{-name} \o \c{name} \o Create an external initialization
- function with \c{name}.
-
- \row \o \c{-threshold} \o \c{level} \o Specifies a threshold \c{level} (in
- bytes) to use when deciding whether
- to compress a file. If the file is
- smaller than the threshold \c{level},
- it is not compressed. The default
- threshold level is 70 bytes.
-
+ function with \c{name}.
+
+ \row \o \c{-threshold} \o \c{level} \o Specifies a threshold \c{level} (as a
+ percentage) to use when deciding whether to compress
+ a file. If the reduction in the file size is greater than
+ the threshold \c{level}, it is compressed; otherwise,
+ the uncompressed data is stored instead. The default
+ threshold level is 70%, meaning that compressed files
+ which are 30% or less of their original size are
+ stored as compressed data.
+
\row \o \c{-compress} \o \c{level} \o Compress input files to the given
- compression \c{level}, which is an
- integer in the range 1 to 9. Level 1
- does the least compression but is
- fastest. Level 9 does the most
- compression but is slowest. To turn
- off compression, use \c{-no-compress}.
- The default value for \c{level} is -1,
- which means use zlib's default
- compression level.
+ compression \c{level}, which is an
+ integer in the range 1 to 9. Level 1
+ does the least compression but is
+ fastest. Level 9 does the most
+ compression but is slowest. To turn
+ off compression, use \c{-no-compress}.
+ The default value for \c{level} is -1,
+ which means use zlib's default
+ compression level.
\row \o \c{-root} \o \c{path} \o Prefix the resource access path with \c{path}.
- The default is no prefix.
+ The default is no prefix.
\row \o \c{-no-compress} \o \o Disable compression.
diff --git a/doc/src/examples/pixelator.qdoc b/doc/src/examples/pixelator.qdoc
index 09ae3e8..95099e1 100644
--- a/doc/src/examples/pixelator.qdoc
+++ b/doc/src/examples/pixelator.qdoc
@@ -80,8 +80,6 @@
functions to indicate the dimensions of the image and supply data to other
components.
- For convenience, the image to be used is passed in the constructor.
-
\section1 ImageModel Class Implementation
The constructor is trivial:
@@ -89,7 +87,7 @@
\snippet examples/itemviews/pixelator/imagemodel.cpp 0
The \c setImage() function sets the image that will be used by the model:
-
+
\snippet examples/itemviews/pixelator/imagemodel.cpp 1
The QAbstractItemModel::reset() call tells the view(s) that the model
@@ -233,7 +231,7 @@
This enables the items to be drawn without any gaps between them. Removing
the headers also prevents the user from adjusting the sizes of individual
rows and columns.
-
+
We also set the minimum section size to 1 on the headers. If we
didn't, the headers would default to a larger size, preventing
us from displaying really small items (which can be specified
diff --git a/examples/itemviews/fetchmore/filelistmodel.cpp b/examples/itemviews/fetchmore/filelistmodel.cpp
index 05ab45e..942150e 100644
--- a/examples/itemviews/fetchmore/filelistmodel.cpp
+++ b/examples/itemviews/fetchmore/filelistmodel.cpp
@@ -92,7 +92,7 @@ void FileListModel::fetchMore(const QModelIndex & /* index */)
int remainder = fileList.size() - fileCount;
int itemsToFetch = qMin(100, remainder);
- beginInsertRows(QModelIndex(), fileCount, fileCount+itemsToFetch);
+ beginInsertRows(QModelIndex(), fileCount, fileCount+itemsToFetch-1);
fileCount += itemsToFetch;
diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag
index 49b1cbe..8cb0e53 100644
--- a/src/3rdparty/webkit/.tag
+++ b/src/3rdparty/webkit/.tag
@@ -1 +1 @@
-c58dc2f491a824ac56e31c440fcf7fe16dab09c4
+f59a934694947496cedecc5256a71bff60c43c4c
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 1db0c55..fb78e36 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -4,4 +4,4 @@ This is a snapshot of the Qt port of WebKit from
and has the sha1 checksum
- 531b0d7cd2af830f0d17b83b6e4a489794481539
+ c58dc2f491a824ac56e31c440fcf7fe16dab09c4
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index daf10fa..ff7d214 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,13 @@
+2010-05-31 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Escape backslashes in the .pro files
+
+ qmake in Qt 4.7 warns about unescaped backspaces and deprecates them.
+
+ * WebCore.pro:
+
2010-05-28 Antti Koivisto <koivisto@iki.fi>
Reviewed by Kenneth Rohde Christiansen.
diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro
index 5def728..63e78a7 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.pro
+++ b/src/3rdparty/webkit/WebCore/WebCore.pro
@@ -159,7 +159,7 @@ defineTest(addExtraCompiler) {
for(file,input) {
base = $$basename(file)
- base ~= s/\..+//
+ base ~= s/\\..+//
newfile=$$replace(outputRule,\\$\\{QMAKE_FILE_BASE\\},$$base)
SOURCES += $$newfile
}
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/DerivedSources.pro b/src/3rdparty/webkit/WebKit/qt/Api/DerivedSources.pro
index 389fb5f..22d4c8d 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/DerivedSources.pro
+++ b/src/3rdparty/webkit/WebKit/qt/Api/DerivedSources.pro
@@ -28,7 +28,7 @@ qtheader_module.commands += echo $${QUOTE}$${LITERAL_HASH}define QT_QTWEBKIT_MOD
qtheader_module.commands += echo $${QUOTE}$${LITERAL_HASH}include $${ESCAPE}<QtNetwork/QtNetwork$${ESCAPE}>$${QUOTE} >> $${qtheader_module.target} &&
WEBKIT_CLASS_HEADERS = $${LITERAL_DOLLAR}$${LITERAL_DOLLAR}$${LITERAL_DOLLAR}$${LITERAL_DOLLAR}PWD/QtWebKit
-regex = ".*\sclass\sQWEBKIT_EXPORT\s(\w+)\s(.*)"
+regex = ".*\\sclass\\sQWEBKIT_EXPORT\\s(\\w+)\\s(.*)"
for(HEADER, WEBKIT_API_HEADERS) {
# 1. Append to QtWebKit header that includes all other header files
@@ -70,7 +70,7 @@ for(HEADER, WEBKIT_API_HEADERS) {
res = $$find(src, $$regex)
isEmpty(res):break()
- exp = $$replace(src, $$regex, "EXPORTED_CLASS = \1")
+ exp = $$replace(src, $$regex, "EXPORTED_CLASS = \\1")
eval($$exp)
CLASS_TARGET = "qtheader_$${EXPORTED_CLASS}"
@@ -87,7 +87,7 @@ for(HEADER, WEBKIT_API_HEADERS) {
# Qt's QRegExp does not support inline non-greedy matching,
# so we'll have to work around it by updating the haystack
- src = $$replace(src, $$regex, "\2")
+ src = $$replace(src, $$regex, "\\2")
src_words = $$join(src, $${LITERAL_WHITESPACE})
}
}
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
index a61ca2e..564c6fe 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
@@ -3620,7 +3620,7 @@ QString QWebPage::userAgentForUrl(const QUrl&) const
languageName = d->client->ownerWidget()->locale().name();
else
languageName = QLocale().name();
- languageName[2] = QLatin1Char('-');
+ languageName.replace(QLatin1Char('_'), QLatin1Char('-'));
// Application name/version
QString appName = QCoreApplication::applicationName();
diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog
index cc2d39a..b6cbf92 100644
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog
@@ -1,3 +1,24 @@
+2010-05-31 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Escape backslashes in the .pro files
+
+ qmake in Qt 4.7 warns about unescaped backspaces and deprecates them.
+
+ * Api/DerivedSources.pro:
+ * docs/docs.pri:
+
+2010-05-19 Denis Dzyubenko <denis.dzyubenko@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ When creating the UA, do not sassmue the language code is a
+ two-letter iso639-1 code.
+
+ * Api/qwebpage.cpp:
+ (QWebPage::userAgentForUrl):
+
2010-05-28 Antti Koivisto <koivisto@iki.fi>
Reviewed by Kenneth Rohde Christiansen.
diff --git a/src/3rdparty/webkit/WebKit/qt/docs/docs.pri b/src/3rdparty/webkit/WebKit/qt/docs/docs.pri
index 804817b..a56ddb4 100644
--- a/src/3rdparty/webkit/WebKit/qt/docs/docs.pri
+++ b/src/3rdparty/webkit/WebKit/qt/docs/docs.pri
@@ -3,7 +3,7 @@ include(../../../WebKit.pri)
unix {
QDOC = SRCDIR=$$PWD/../../.. OUTPUT_DIR=$$OUTPUT_DIR $$(QTDIR)/bin/qdoc3
} else {
- QDOC = $$(QTDIR)\bin\qdoc3.exe
+ QDOC = $$(QTDIR)\\bin\\qdoc3.exe
}
unix {
diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h
index c66047a..a333153 100644
--- a/src/corelib/global/qfeatures.h
+++ b/src/corelib/global/qfeatures.h
@@ -335,11 +335,6 @@
#define QT_NO_DATESTRING
#endif
-// QtDBus module
-#if !defined(QT_NO_DBUS) && (defined(QT_NO_PROPERTIES))
-#define QT_NO_DBUS
-#endif
-
// QDial
#if !defined(QT_NO_DIAL) && (defined(QT_NO_SLIDER))
#define QT_NO_DIAL
@@ -515,6 +510,11 @@
#define QT_NO_CONTEXTMENU
#endif
+// QtDBus module
+#if !defined(QT_NO_DBUS) && (defined(QT_NO_PROPERTIES) || defined(QT_NO_DOM))
+#define QT_NO_DBUS
+#endif
+
// File Transfer Protocol
#if !defined(QT_NO_FTP) && (defined(QT_NO_URLINFO) || defined(QT_NO_TEXTDATE))
#define QT_NO_FTP
diff --git a/src/corelib/global/qfeatures.txt b/src/corelib/global/qfeatures.txt
index ed173b1..3e6af24 100644
--- a/src/corelib/global/qfeatures.txt
+++ b/src/corelib/global/qfeatures.txt
@@ -1373,7 +1373,7 @@ SeeAlso: ???
Feature: DBUS
Description: Provides classes for D-Bus.
Section: D-Bus
-Requires: PROPERTIES
+Requires: PROPERTIES DOM
Name: QtDBus module
SeeAlso: ???
diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h
index 08674d2..52a24de 100644
--- a/src/corelib/global/qnamespace.h
+++ b/src/corelib/global/qnamespace.h
@@ -236,7 +236,8 @@ public:
TextJustificationForced = 0x10000,
TextForceLeftToRight = 0x20000,
TextForceRightToLeft = 0x40000,
- TextLongestVariant = 0x80000
+ TextLongestVariant = 0x80000,
+ TextBypassShaping = 0x100000
#if defined(QT3_SUPPORT) && !defined(Q_MOC_RUN)
,SingleLine = TextSingleLine,
diff --git a/src/corelib/xml/qxmlstream.cpp b/src/corelib/xml/qxmlstream.cpp
index ae12007..853f311 100644
--- a/src/corelib/xml/qxmlstream.cpp
+++ b/src/corelib/xml/qxmlstream.cpp
@@ -560,7 +560,7 @@ void QXmlStreamReader::clear()
chunk of XML can be added with addData(), if the XML is being read
from a QByteArray, or by waiting for more data to arrive if the
XML is being read from a QIODevice. Either way, atEnd() will
- return false once more adata is available.
+ return false once more data is available.
\sa hasError(), error(), device(), QIODevice::atEnd()
*/
diff --git a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
index 32a6321..a05e426 100644
--- a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
@@ -263,7 +263,9 @@ void QDeclarativeAnimatedImage::movieRequestFinished()
d->_movie = new QMovie(d->reply);
if (!d->_movie->isValid()){
+#ifndef QT_NO_DEBUG_STREAM
qmlInfo(this) << "Error Reading Animated Image File " << d->url;
+#endif
delete d->_movie;
d->_movie = 0;
return;
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp
index 7bd08ce..134bd6d 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp
@@ -3131,6 +3131,7 @@ bool QDeclarativeItem::event(QEvent *ev)
return QGraphicsObject::event(ev);
}
+#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug debug, QDeclarativeItem *item)
{
if (!item) {
@@ -3144,6 +3145,7 @@ QDebug operator<<(QDebug debug, QDeclarativeItem *item)
<< ", z =" << item->zValue() << ')';
return debug;
}
+#endif
qint64 QDeclarativeItemPrivate::consistentTime = -1;
void QDeclarativeItemPrivate::setConsistentTime(qint64 t)
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.h b/src/declarative/graphicsitems/qdeclarativeitem.h
index 29fd241..77e316b 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.h
+++ b/src/declarative/graphicsitems/qdeclarativeitem.h
@@ -209,7 +209,9 @@ T qobject_cast(QGraphicsItem *item)
return qobject_cast<T>(o);
}
+#ifndef QT_NO_DEBUG_STREAM
QDebug Q_DECLARATIVE_EXPORT operator<<(QDebug debug, QDeclarativeItem *item);
+#endif
QT_END_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
index 151a9e9..0be8dac 100644
--- a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
@@ -112,9 +112,11 @@ void QDeclarativeItemModule::defineModule()
qmlRegisterType<QDeclarativePathPercent>("Qt",4,7,"PathPercent");
qmlRegisterType<QDeclarativePathQuad>("Qt",4,7,"PathQuad");
qmlRegisterType<QDeclarativePathView>("Qt",4,7,"PathView");
+#ifndef QT_NO_VALIDATOR
qmlRegisterType<QIntValidator>("Qt",4,7,"IntValidator");
qmlRegisterType<QDoubleValidator>("Qt",4,7,"DoubleValidator");
qmlRegisterType<QRegExpValidator>("Qt",4,7,"RegExpValidator");
+#endif
qmlRegisterType<QDeclarativeRectangle>("Qt",4,7,"Rectangle");
qmlRegisterType<QDeclarativeRepeater>("Qt",4,7,"Repeater");
qmlRegisterType<QGraphicsRotation>("Qt",4,7,"Rotation");
@@ -138,7 +140,9 @@ void QDeclarativeItemModule::defineModule()
qmlRegisterType<QDeclarativePathElement>();
qmlRegisterType<QDeclarativeCurve>();
qmlRegisterType<QDeclarativeScaleGrid>();
+#ifndef QT_NO_VALIDATOR
qmlRegisterType<QValidator>();
+#endif
qmlRegisterType<QDeclarativeVisualModel>();
#ifndef QT_NO_ACTION
qmlRegisterType<QAction>();
diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp
index 2c1eb67..55cef8b 100644
--- a/src/declarative/graphicsitems/qdeclarativetext.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetext.cpp
@@ -318,7 +318,11 @@ void QDeclarativeText::setText(const QString &n)
if (d->richText) {
if (isComponentComplete()) {
d->ensureDoc();
+#ifndef QT_NO_TEXTHTMLPARSER
d->doc->setHtml(n);
+#else
+ d->doc->setPlainText(n);
+#endif
}
}
@@ -605,7 +609,11 @@ void QDeclarativeText::setTextFormat(TextFormat format)
} else if (!wasRich && d->richText) {
if (isComponentComplete()) {
d->ensureDoc();
+#ifndef QT_NO_TEXTHTMLPARSER
d->doc->setHtml(d->text);
+#else
+ d->doc->setPlainText(d->text);
+#endif
}
d->updateLayout();
d->markImgDirty();
@@ -991,7 +999,11 @@ void QDeclarativeText::reloadWithResources()
Q_D(QDeclarativeText);
if (!d->richText)
return;
+#ifndef QT_NO_TEXTHTMLPARSER
d->doc->setHtml(d->text);
+#else
+ d->doc->setPlainText(d->text);
+#endif
d->updateLayout();
d->markImgDirty();
}
@@ -1121,7 +1133,11 @@ void QDeclarativeText::componentComplete()
if (d->dirty) {
if (d->richText) {
d->ensureDoc();
+#ifndef QT_NO_TEXTHTMLPARSER
d->doc->setHtml(d->text);
+#else
+ d->doc->setPlainText(d->text);
+#endif
}
d->updateLayout();
d->dirty = false;
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
index f8876f2..15cdb05 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
@@ -127,9 +127,11 @@ QString QDeclarativeTextEdit::text() const
{
Q_D(const QDeclarativeTextEdit);
+#ifndef QT_NO_TEXTHTMLPARSER
if (d->richText)
return d->document->toHtml();
else
+#endif
return d->document->toPlainText();
}
@@ -260,7 +262,11 @@ void QDeclarativeTextEdit::setText(const QString &text)
d->text = text;
d->richText = d->format == RichText || (d->format == AutoText && Qt::mightBeRichText(text));
if (d->richText) {
+#ifndef QT_NO_TEXTHTMLPARSER
d->control->setHtml(text);
+#else
+ d->control->setPlainText(text);
+#endif
} else {
d->control->setPlainText(text);
}
@@ -325,7 +331,11 @@ void QDeclarativeTextEdit::setTextFormat(TextFormat format)
d->control->setPlainText(d->text);
updateSize();
} else if (!wasRich && d->richText) {
+#ifndef QT_NO_TEXTHTMLPARSER
d->control->setHtml(d->text);
+#else
+ d->control->setPlainText(d->text);
+#endif
updateSize();
}
d->format = format;
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
index 9a6a070..ea958ef 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
@@ -648,6 +648,7 @@ void QDeclarativeTextInput::setAutoScroll(bool b)
\sa acceptableInput, inputMask
*/
+#ifndef QT_NO_VALIDATOR
QValidator* QDeclarativeTextInput::validator() const
{
Q_D(const QDeclarativeTextInput);
@@ -669,6 +670,7 @@ void QDeclarativeTextInput::setValidator(QValidator* v)
emit validatorChanged();
}
+#endif // QT_NO_VALIDATOR
/*!
\qmlproperty string TextInput::inputMask
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p.h
index 6bb94c2..9d58f13 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextinput_p.h
@@ -79,7 +79,9 @@ class Q_DECLARATIVE_EXPORT QDeclarativeTextInput : public QDeclarativePaintedIte
Q_PROPERTY(QString selectedText READ selectedText NOTIFY selectedTextChanged)
Q_PROPERTY(int maximumLength READ maxLength WRITE setMaxLength NOTIFY maximumLengthChanged)
+#ifndef QT_NO_VALIDATOR
Q_PROPERTY(QValidator* validator READ validator WRITE setValidator NOTIFY validatorChanged)
+#endif
Q_PROPERTY(QString inputMask READ inputMask WRITE setInputMask NOTIFY inputMaskChanged)
Q_PROPERTY(Qt::InputMethodHints inputMethodHints READ inputMethodHints WRITE setInputMethodHints)
@@ -156,9 +158,10 @@ public:
int maxLength() const;
void setMaxLength(int ml);
+#ifndef QT_NO_VALIDATOR
QValidator * validator() const;
void setValidator(QValidator* v);
-
+#endif
QString inputMask() const;
void setInputMask(const QString &im);
@@ -248,10 +251,12 @@ private:
QT_END_NAMESPACE
QML_DECLARE_TYPE(QDeclarativeTextInput)
+#ifndef QT_NO_VALIDATOR
QML_DECLARE_TYPE(QValidator)
QML_DECLARE_TYPE(QIntValidator)
QML_DECLARE_TYPE(QDoubleValidator)
QML_DECLARE_TYPE(QRegExpValidator)
+#endif
QT_END_HEADER
diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp
index d27aced..80a1093 100644
--- a/src/declarative/qml/qdeclarativecompiler.cpp
+++ b/src/declarative/qml/qdeclarativecompiler.cpp
@@ -240,6 +240,7 @@ bool QDeclarativeCompiler::testLiteralAssignment(const QMetaProperty &prop,
if (!ok) COMPILE_EXCEPTION(v, tr("Invalid property assignment: color expected"));
}
break;
+#ifndef QT_NO_TEXTDATE
case QVariant::Date:
{
bool ok;
@@ -261,6 +262,7 @@ bool QDeclarativeCompiler::testLiteralAssignment(const QMetaProperty &prop,
if (!ok) COMPILE_EXCEPTION(v, tr("Invalid property assignment: datetime expected"));
}
break;
+#endif // QT_NO_TEXTDATE
case QVariant::Point:
case QVariant::PointF:
{
@@ -414,6 +416,7 @@ void QDeclarativeCompiler::genLiteralAssignment(const QMetaProperty &prop,
instr.storeColor.value = c.rgba();
}
break;
+#ifndef QT_NO_TEXTDATE
case QVariant::Date:
{
QDate d = QDeclarativeStringConverters::dateFromString(string);
@@ -447,6 +450,7 @@ void QDeclarativeCompiler::genLiteralAssignment(const QMetaProperty &prop,
instr.storeDateTime.valueIndex = index;
}
break;
+#endif // QT_NO_TEXTDATE
case QVariant::Point:
case QVariant::PointF:
{
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index 8679e76..2f2ee08 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -284,10 +284,12 @@ QDeclarativeScriptEngine::QDeclarativeScriptEngine(QDeclarativeEnginePrivate *pr
qtObject.setProperty(QLatin1String("tint"), newFunction(QDeclarativeEnginePrivate::tint, 2));
}
+#ifndef QT_NO_TEXTDATE
//date/time formatting
qtObject.setProperty(QLatin1String("formatDate"),newFunction(QDeclarativeEnginePrivate::formatDate, 2));
qtObject.setProperty(QLatin1String("formatTime"),newFunction(QDeclarativeEnginePrivate::formatTime, 2));
qtObject.setProperty(QLatin1String("formatDateTime"),newFunction(QDeclarativeEnginePrivate::formatDateTime, 2));
+#endif
//misc methods
qtObject.setProperty(QLatin1String("openUrlExternally"),newFunction(QDeclarativeEnginePrivate::desktopOpenUrl, 1));
@@ -1219,6 +1221,7 @@ QScriptValue QDeclarativeEnginePrivate::vector3d(QScriptContext *ctxt, QScriptEn
\qmlmethod string Qt::formatDate(datetime date, variant format)
Returns the string representation of \c date, formatted according to \c format.
*/
+#ifndef QT_NO_TEXTDATE
QScriptValue QDeclarativeEnginePrivate::formatDate(QScriptContext*ctxt, QScriptEngine*engine)
{
int argCount = ctxt->argumentCount();
@@ -1356,6 +1359,7 @@ QScriptValue QDeclarativeEnginePrivate::formatDateTime(QScriptContext*ctxt, QScr
}
return engine->newVariant(qVariantFromValue(date.toString(enumFormat)));
}
+#endif // QT_NO_TEXTDATE
/*!
\qmlmethod color Qt::rgba(real red, real green, real blue, real alpha)
diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h
index 804476c..3269e98 100644
--- a/src/declarative/qml/qdeclarativeengine_p.h
+++ b/src/declarative/qml/qdeclarativeengine_p.h
@@ -302,10 +302,11 @@ public:
static QScriptValue consoleLog(QScriptContext*, QScriptEngine*);
static QScriptValue quit(QScriptContext*, QScriptEngine*);
+#ifndef QT_NO_TEXTDATE
static QScriptValue formatDate(QScriptContext*, QScriptEngine*);
static QScriptValue formatTime(QScriptContext*, QScriptEngine*);
static QScriptValue formatDateTime(QScriptContext*, QScriptEngine*);
-
+#endif
static QScriptEngine *getScriptEngine(QDeclarativeEngine *e) { return &e->d_func()->scriptEngine; }
static QDeclarativeEngine *getEngine(QScriptEngine *e) { return static_cast<QDeclarativeScriptEngine*>(e)->p->q_func(); }
static QDeclarativeEnginePrivate *get(QDeclarativeEngine *e) { return e->d_func(); }
diff --git a/src/declarative/qml/qdeclarativeinfo.h b/src/declarative/qml/qdeclarativeinfo.h
index 2ac28f4..b41abd8 100644
--- a/src/declarative/qml/qdeclarativeinfo.h
+++ b/src/declarative/qml/qdeclarativeinfo.h
@@ -81,7 +81,9 @@ public:
inline QDeclarativeInfo &operator<<(const void * t) { QDebug::operator<<(t); return *this; }
inline QDeclarativeInfo &operator<<(QTextStreamFunction f) { QDebug::operator<<(f); return *this; }
inline QDeclarativeInfo &operator<<(QTextStreamManipulator m) { QDebug::operator<<(m); return *this; }
+#ifndef QT_NO_DEBUG_STREAM
inline QDeclarativeInfo &operator<<(const QUrl &t) { static_cast<QDebug &>(*this) << t; return *this; }
+#endif
private:
friend Q_DECLARATIVE_EXPORT QDeclarativeInfo qmlInfo(const QObject *me);
diff --git a/src/declarative/qml/qdeclarativeinstruction.cpp b/src/declarative/qml/qdeclarativeinstruction.cpp
index b86d082..0f7b09d 100644
--- a/src/declarative/qml/qdeclarativeinstruction.cpp
+++ b/src/declarative/qml/qdeclarativeinstruction.cpp
@@ -49,6 +49,10 @@ QT_BEGIN_NAMESPACE
void QDeclarativeCompiledData::dump(QDeclarativeInstruction *instr, int idx)
{
+#ifdef QT_NO_DEBUG_STREAM
+ Q_UNUSED(instr)
+ Q_UNUSED(idx)
+#else
QByteArray lineNumber = QByteArray::number(instr->line);
if (instr->line == (unsigned short)-1)
lineNumber = "NA";
@@ -217,6 +221,7 @@ void QDeclarativeCompiledData::dump(QDeclarativeInstruction *instr, int idx)
qWarning().nospace() << idx << "\t\t" << line << "\t" << "XXX UNKOWN INSTRUCTION" << "\t" << instr->type;
break;
}
+#endif // QT_NO_DEBUG_STREAM
}
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativestringconverters.cpp b/src/declarative/qml/qdeclarativestringconverters.cpp
index bbcc00b..8bd2cf1 100644
--- a/src/declarative/qml/qdeclarativestringconverters.cpp
+++ b/src/declarative/qml/qdeclarativestringconverters.cpp
@@ -106,12 +106,14 @@ QVariant QDeclarativeStringConverters::variantFromString(const QString &s, int p
return QVariant(uint(qRound(s.toDouble(ok))));
case QMetaType::QColor:
return QVariant::fromValue(colorFromString(s, ok));
+#ifndef QT_NO_TEXTDATE
case QMetaType::QDate:
return QVariant::fromValue(dateFromString(s, ok));
case QMetaType::QTime:
return QVariant::fromValue(timeFromString(s, ok));
case QMetaType::QDateTime:
return QVariant::fromValue(dateTimeFromString(s, ok));
+#endif // QT_NO_TEXTDATE
case QMetaType::QPointF:
return QVariant::fromValue(pointFFromString(s, ok));
case QMetaType::QPoint:
@@ -150,6 +152,7 @@ QColor QDeclarativeStringConverters::colorFromString(const QString &s, bool *ok)
}
}
+#ifndef QT_NO_TEXTDATE
QDate QDeclarativeStringConverters::dateFromString(const QString &s, bool *ok)
{
QDate d = QDate::fromString(s, Qt::ISODate);
@@ -170,6 +173,7 @@ QDateTime QDeclarativeStringConverters::dateTimeFromString(const QString &s, boo
if (ok) *ok = d.isValid();
return d;
}
+#endif // QT_NO_TEXTDATE
//expects input of "x,y"
QPointF QDeclarativeStringConverters::pointFFromString(const QString &s, bool *ok)
diff --git a/src/declarative/qml/qdeclarativestringconverters_p.h b/src/declarative/qml/qdeclarativestringconverters_p.h
index 97f72fc..842d1b3 100644
--- a/src/declarative/qml/qdeclarativestringconverters_p.h
+++ b/src/declarative/qml/qdeclarativestringconverters_p.h
@@ -73,9 +73,11 @@ namespace QDeclarativeStringConverters
QVariant Q_DECLARATIVE_EXPORT variantFromString(const QString &, int preferredType, bool *ok = 0);
QColor Q_DECLARATIVE_EXPORT colorFromString(const QString &, bool *ok = 0);
+#ifndef QT_NO_TEXTDATE
QDate Q_DECLARATIVE_EXPORT dateFromString(const QString &, bool *ok = 0);
QTime Q_DECLARATIVE_EXPORT timeFromString(const QString &, bool *ok = 0);
QDateTime Q_DECLARATIVE_EXPORT dateTimeFromString(const QString &, bool *ok = 0);
+#endif
QPointF Q_DECLARATIVE_EXPORT pointFFromString(const QString &, bool *ok = 0);
QSizeF Q_DECLARATIVE_EXPORT sizeFFromString(const QString &, bool *ok = 0);
QRectF Q_DECLARATIVE_EXPORT rectFFromString(const QString &, bool *ok = 0);
diff --git a/src/declarative/util/qdeclarativestate.cpp b/src/declarative/util/qdeclarativestate.cpp
index b5f7900..dc2b2cc 100644
--- a/src/declarative/util/qdeclarativestate.cpp
+++ b/src/declarative/util/qdeclarativestate.cpp
@@ -486,6 +486,7 @@ void QDeclarativeState::apply(QDeclarativeStateGroup *group, QDeclarativeTransit
// All the local reverts now become part of the ongoing revertList
d->revertList << additionalReverts;
+#ifndef QT_NO_DEBUG_STREAM
// Output for debugging
if (stateChangeDebug()) {
foreach(const QDeclarativeAction &action, applyList) {
@@ -497,6 +498,7 @@ void QDeclarativeState::apply(QDeclarativeStateGroup *group, QDeclarativeTransit
<< "To:" << action.toValue;
}
}
+#endif
d->transitionManager.transition(applyList, trans);
}
diff --git a/src/declarative/util/qdeclarativetransitionmanager.cpp b/src/declarative/util/qdeclarativetransitionmanager.cpp
index 368d484..9f198e4 100644
--- a/src/declarative/util/qdeclarativetransitionmanager.cpp
+++ b/src/declarative/util/qdeclarativetransitionmanager.cpp
@@ -233,6 +233,7 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
action.property.write(action.toValue);
}
}
+#ifndef QT_NO_DEBUG_STREAM
if (stateChangeDebug()) {
foreach(const QDeclarativeAction &action, applyList) {
if (action.event)
@@ -243,6 +244,7 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
<< "To:" << action.toValue;
}
}
+#endif
if (!transition)
d->applyBindings();
}
diff --git a/src/gui/kernel/qdrag.cpp b/src/gui/kernel/qdrag.cpp
index b57615c..77f8fc0 100644
--- a/src/gui/kernel/qdrag.cpp
+++ b/src/gui/kernel/qdrag.cpp
@@ -253,7 +253,9 @@ Qt::DropAction QDrag::exec(Qt::DropActions supportedActions)
can take some time, but this function does not block the event
loop. Other events are still delivered to the application while
the operation is performed. On Windows, the Qt event loop is
- blocked while during the operation.
+ blocked during the operation. However, QDrag::exec() on
+ Windows causes processEvents() to be called frequently to keep the GUI responsive.
+ If any loops or operations are called while a drag operation is active, it will block the drag operation.
*/
Qt::DropAction QDrag::exec(Qt::DropActions supportedActions, Qt::DropAction defaultDropAction)
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 657229a..54e0aa3 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -5937,6 +5937,23 @@ void QPainter::drawText(const QPointF &p, const QString &str, int tf, int justif
if (!d->engine || str.isEmpty() || pen().style() == Qt::NoPen)
return;
+ if (tf & Qt::TextBypassShaping) {
+ // Skip harfbuzz complex shaping, shape using glyph advances only
+ int len = str.length();
+ int numGlyphs = len;
+ QVarLengthGlyphLayoutArray glyphs(len);
+ QFontEngine *fontEngine = d->state->font.d->engineForScript(QUnicodeTables::Common);
+ if (!fontEngine->stringToCMap(str.data(), len, &glyphs, &numGlyphs, 0)) {
+ glyphs.resize(numGlyphs);
+ if (!fontEngine->stringToCMap(str.data(), len, &glyphs, &numGlyphs, 0))
+ Q_ASSERT_X(false, Q_FUNC_INFO, "stringToCMap shouldn't fail twice");
+ }
+
+ QTextItemInt gf(glyphs, &d->state->font, fontEngine);
+ drawTextItem(p, gf);
+ return;
+ }
+
QStackTextEngine engine(str, d->state->font);
engine.option.setTextDirection(d->state->layoutDirection);
if (tf & (Qt::TextForceLeftToRight|Qt::TextForceRightToLeft)) {
diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp
index 5163c94..d02e841 100644
--- a/src/gui/text/qfontmetrics.cpp
+++ b/src/gui/text/qfontmetrics.cpp
@@ -526,6 +526,14 @@ int QFontMetrics::rightBearing(QChar ch) const
*/
int QFontMetrics::width(const QString &text, int len) const
{
+ return width(text, len, 0);
+}
+
+/*!
+ \internal
+*/
+int QFontMetrics::width(const QString &text, int len, int flags) const
+{
int pos = text.indexOf(QLatin1Char('\x9c'));
if (pos != -1) {
len = (len < 0) ? pos : qMin(pos, len);
@@ -535,6 +543,23 @@ int QFontMetrics::width(const QString &text, int len) const
if (len == 0)
return 0;
+ if (flags & Qt::TextBypassShaping) {
+ // Skip harfbuzz complex shaping, only use advances
+ int numGlyphs = len;
+ QVarLengthGlyphLayoutArray glyphs(numGlyphs);
+ QFontEngine *engine = d->engineForScript(QUnicodeTables::Common);
+ if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, 0)) {
+ glyphs.resize(numGlyphs);
+ if (!engine->stringToCMap(text.data(), len, &glyphs, &numGlyphs, 0))
+ Q_ASSERT_X(false, Q_FUNC_INFO, "stringToCMap shouldn't fail twice");
+ }
+
+ QFixed width;
+ for (int i = 0; i < numGlyphs; ++i)
+ width += glyphs.advances_x[i];
+ return qRound(width);
+ }
+
QStackTextEngine layout(text, d.data());
layout.ignoreBidi = true;
return qRound(layout.width(0, len));
diff --git a/src/gui/text/qfontmetrics.h b/src/gui/text/qfontmetrics.h
index dca4b93..2518b54 100644
--- a/src/gui/text/qfontmetrics.h
+++ b/src/gui/text/qfontmetrics.h
@@ -89,6 +89,7 @@ public:
int leftBearing(QChar) const;
int rightBearing(QChar) const;
int width(const QString &, int len = -1) const;
+ int width(const QString &, int len, int flags) const;
int width(QChar) const;
int charWidth(const QString &str, int pos) const;
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index d34553f..3486264 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -885,7 +885,7 @@ void QTextEngine::shapeText(int item) const
QFixed letterSpacing = font.d->letterSpacing;
QFixed wordSpacing = font.d->wordSpacing;
- if (letterSpacingIsAbsolute)
+ if (letterSpacingIsAbsolute && letterSpacing.value())
letterSpacing *= font.d->dpi / qt_defaultDpiY();
if (letterSpacing != 0) {
@@ -2648,6 +2648,12 @@ QTextItemInt::QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFo
flags |= QTextItem::StrikeOut;
}
+QTextItemInt::QTextItemInt(const QGlyphLayout &g, QFont *font, QFontEngine *fe)
+ : flags(0), justified(false), underlineStyle(QTextCharFormat::NoUnderline),
+ num_chars(0), chars(0), logClusters(0), f(font), fontEngine(fe), glyphs(g)
+{
+}
+
QTextItemInt QTextItemInt::midItem(QFontEngine *fontEngine, int firstGlyphIndex, int numGlyphs) const
{
QTextItemInt ti = *this;
diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h
index d92148f..00b1392 100644
--- a/src/gui/text/qtextengine_p.h
+++ b/src/gui/text/qtextengine_p.h
@@ -311,6 +311,7 @@ public:
logClusters(0), f(0), fontEngine(0)
{}
QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFormat &format = QTextCharFormat());
+ QTextItemInt(const QGlyphLayout &g, QFont *font, QFontEngine *fe);
/// copy the structure items, adjusting the glyphs arrays to the right subarrays.
/// the width of the returned QTextItemInt is not adjusted, for speed reasons
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index ce7915d..3f67408 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -858,7 +858,8 @@ QRectF QTextLayout::boundingRect() const
const QScriptLine &si = d->lines[i];
xmin = qMin(xmin, si.x);
ymin = qMin(ymin, si.y);
- xmax = qMax(xmax, si.x+qMax(si.width, si.textWidth));
+ QFixed lineWidth = si.width < QFIXED_MAX ? qMax(si.width, si.textWidth) : si.textWidth;
+ xmax = qMax(xmax, si.x+lineWidth);
// ### shouldn't the ascent be used in ymin???
ymax = qMax(ymax, si.y+si.height());
}
diff --git a/src/imports/folderlistmodel/plugin.cpp b/src/imports/folderlistmodel/plugin.cpp
index 555df3c..1ec6106 100644
--- a/src/imports/folderlistmodel/plugin.cpp
+++ b/src/imports/folderlistmodel/plugin.cpp
@@ -53,7 +53,9 @@ public:
virtual void registerTypes(const char *uri)
{
Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.labs.folderlistmodel"));
+#ifndef QT_NO_DIRMODEL
qmlRegisterType<QDeclarativeFolderListModel>(uri,1,0,"FolderListModel");
+#endif
}
};
//![class decl]
diff --git a/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp b/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp
index fccb9d4..9cf81ca 100644
--- a/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp
+++ b/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp
@@ -45,6 +45,8 @@
#include <QDebug>
#include <qdeclarativecontext.h>
+#ifndef QT_NO_DIRMODEL
+
QT_BEGIN_NAMESPACE
class QDeclarativeFolderListModelPrivate
@@ -397,3 +399,5 @@ void QDeclarativeFolderListModel::setShowOnlyReadable(bool on)
//![code]
QT_END_NAMESPACE
+
+#endif // QT_NO_DIRMODEL
diff --git a/src/imports/folderlistmodel/qdeclarativefolderlistmodel.h b/src/imports/folderlistmodel/qdeclarativefolderlistmodel.h
index ea7d701..1bab5f84 100644
--- a/src/imports/folderlistmodel/qdeclarativefolderlistmodel.h
+++ b/src/imports/folderlistmodel/qdeclarativefolderlistmodel.h
@@ -47,6 +47,8 @@
#include <QUrl>
#include <QAbstractListModel>
+#ifndef QT_NO_DIRMODEL
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -152,4 +154,6 @@ QML_DECLARE_TYPE(QDeclarativeFolderListModel)
QT_END_HEADER
+#endif // QT_NO_DIRMODEL
+
#endif // QDECLARATIVEFOLDERLISTMODEL_H
diff --git a/src/plugins/bearer/symbian/symbianengine.cpp b/src/plugins/bearer/symbian/symbianengine.cpp
index 8c26cf0..ab1ba28 100644
--- a/src/plugins/bearer/symbian/symbianengine.cpp
+++ b/src/plugins/bearer/symbian/symbianengine.cpp
@@ -389,9 +389,9 @@ void SymbianEngine::updateConfigurationsL()
QNetworkConfigurationPrivatePointer ptr(cpPriv);
accessPointConfigurations.insert(ident, ptr);
- locker.unlock();
+ mutex.unlock();
emit configurationAdded(ptr);
- locker.relock();
+ mutex.lock();
} else {
delete cpPriv;
}
diff --git a/tests/auto/qfontmetrics/tst_qfontmetrics.cpp b/tests/auto/qfontmetrics/tst_qfontmetrics.cpp
index 5d73764..81e064e 100644
--- a/tests/auto/qfontmetrics/tst_qfontmetrics.cpp
+++ b/tests/auto/qfontmetrics/tst_qfontmetrics.cpp
@@ -71,6 +71,7 @@ private slots:
void elidedText();
void veryNarrowElidedText();
void averageCharWidth();
+ void bypassShaping();
void elidedMultiLength();
void elidedMultiLengthF();
void bearingIncludedInBoundingRect();
@@ -219,6 +220,20 @@ void tst_QFontMetrics::averageCharWidth()
QVERIFY(fmf.averageCharWidth() != 0);
}
+void tst_QFontMetrics::bypassShaping()
+{
+ QFont f;
+ QFontMetrics fm(f);
+ QString text = " A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z";
+ int textWidth = fm.width(text, -1, Qt::TextBypassShaping);
+ QVERIFY(textWidth != 0);
+ int charsWidth = 0;
+ for (int i = 0; i < text.size(); ++i)
+ charsWidth += fm.width(text[i]);
+ // This assertion is needed in QtWebKit's WebCore::Font::offsetForPositionForSimpleText
+ QCOMPARE(textWidth, charsWidth);
+}
+
template<class FontMetrics> void elidedMultiLength_helper()
{
QString text1 = "Long Text 1\x9cShorter\x9csmall";
diff --git a/tests/auto/qtextlayout/tst_qtextlayout.cpp b/tests/auto/qtextlayout/tst_qtextlayout.cpp
index caf9bd3..1a5f493 100644
--- a/tests/auto/qtextlayout/tst_qtextlayout.cpp
+++ b/tests/auto/qtextlayout/tst_qtextlayout.cpp
@@ -110,6 +110,8 @@ private slots:
void longText();
void widthOfTabs();
void columnWrapWithTabs();
+ void boundingRectForUnsetLineWidth();
+ void boundingRectForSetLineWidth();
// QTextLine stuff
void setNumColumnsWrapAtWordBoundaryOrAnywhere();
@@ -1307,6 +1309,29 @@ void tst_QTextLayout::columnWrapWithTabs()
}
+void tst_QTextLayout::boundingRectForUnsetLineWidth()
+{
+ QTextLayout layout("FOOBAR");
+
+ layout.beginLayout();
+ QTextLine line = layout.createLine();
+ layout.endLayout();
+
+ QCOMPARE(layout.boundingRect().width(), line.naturalTextWidth());
+}
+
+void tst_QTextLayout::boundingRectForSetLineWidth()
+{
+ QTextLayout layout("FOOBAR");
+
+ layout.beginLayout();
+ QTextLine line = layout.createLine();
+ line.setLineWidth(QFIXED_MAX - 1);
+ layout.endLayout();
+
+ QCOMPARE(layout.boundingRect().width(), qreal(QFIXED_MAX - 1));
+}
+
void tst_QTextLayout::lineWidthFromBOM()
{
const QString string(QChar(0xfeff)); // BYTE ORDER MARK
diff --git a/tools/assistant/tools/assistant/doc/images/assistant-assistant.png b/tools/assistant/tools/assistant/doc/images/assistant-assistant.png
index b825de0..1ff5cc9 100644
--- a/tools/assistant/tools/assistant/doc/images/assistant-assistant.png
+++ b/tools/assistant/tools/assistant/doc/images/assistant-assistant.png
Binary files differ
diff --git a/tools/porting/src/codemodel.h b/tools/porting/src/codemodel.h
index cb3088f..04ad178 100644
--- a/tools/porting/src/codemodel.h
+++ b/tools/porting/src/codemodel.h
@@ -96,7 +96,7 @@ class Collection: public QMultiHash<QByteArray, CollectedType *>
{
public:
void add(CollectedType *collectedItem)
- { insert(collectedItem->name(), collectedItem); }
+ { this->insert(collectedItem->name(), collectedItem); }
};
typedef Collection<Scope> ScopeCollection;