summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2011-07-02 17:32:53 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2011-07-02 17:32:53 (GMT)
commit174e40c348eb45417f44bcf4077ca751204d6f9e (patch)
treea08fac85835b6e3703715ac4485e85ea62cbace4
parentb4d96f534ed84c3bc070b7b40f61b897f2fcfe78 (diff)
parent68ad4618e02d1686e37b979fbf1fd1f349aa6d4f (diff)
downloadQt-174e40c348eb45417f44bcf4077ca751204d6f9e.zip
Qt-174e40c348eb45417f44bcf4077ca751204d6f9e.tar.gz
Qt-174e40c348eb45417f44bcf4077ca751204d6f9e.tar.bz2
Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qt-air-team
* 'master' of git://scm.dev.nokia.troll.no/qt/qt-air-team: (31 commits) changelog Compile with DEBUG_FONTENGINE define minor optimization remove the old compatibility code make QFontEngineQPF1 work even without mmap(2) support Re-apply licenseheader text in source files for qt4.7 Make sure the declarative plugin of QtWebKit is build once. Doc: Fixing typo Update 4.8.0 changes file Symbian socket engine: remove remaining todo comments Symbian: tune network autotest heap size so they can run on emulator Cocoa: QFileDialog: fix filename filter not applied correctly Fix typo in docs: occurred. Cocoa: fix qtabwidget auto test failure Cocoa: fix qwidget auto test failures Fix QWidget::palettePropagation2() autotest on Symbian (part 2) Cocoa: Fix qgraphicsproxywidget auto test Fix QWidget::palettePropagation2() autotest on Symbian QTBUG-19500 lupdate fails to run from the Mac binary package on Mac OS X 10.5 Fix text color in some cases of QML and QStaticText ...
-rw-r--r--dist/changes-4.8.021
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp35
-rw-r--r--src/corelib/io/qurl.cpp1
-rw-r--r--src/corelib/kernel/qabstractitemmodel.cpp37
-rw-r--r--src/corelib/kernel/qabstractitemmodel.h3
-rw-r--r--src/corelib/kernel/qobject.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextlayout.cpp15
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextlayout_p.h2
-rw-r--r--src/gui/accessible/qaccessible_mac.mm2
-rw-r--r--src/gui/dialogs/qfiledialog_mac.mm5
-rw-r--r--src/gui/kernel/qwidget_mac.mm5
-rw-r--r--src/gui/painting/qgraphicssystemfactory.cpp2
-rw-r--r--src/gui/painting/qpainter.cpp2
-rw-r--r--src/gui/styles/qs60style_s60.cpp23
-rw-r--r--src/gui/text/qfontengine_qpf.cpp12
-rw-r--r--src/gui/text/qfontengine_qws.cpp216
-rw-r--r--src/gui/text/qstatictext.cpp10
-rw-r--r--src/network/access/qnetworkaccesshttpbackend.cpp1
-rw-r--r--src/network/socket/qsymbiansocketengine.cpp6
-rw-r--r--src/network/socket/qsymbiansocketengine_p.h1
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.cpp19
-rw-r--r--src/plugins/bearer/symbian/qnetworksession_impl.cpp9
-rw-r--r--src/plugins/bearer/symbian/symbianengine.cpp14
-rwxr-xr-x[-rw-r--r--]src/s60installs/s60installs.pro17
-rw-r--r--src/src.pro4
-rw-r--r--tests/auto/mediaobject/tst_mediaobject.cpp6
-rw-r--r--tests/auto/q3accel/tst_q3accel.cpp2
-rw-r--r--tests/auto/q3checklistitem/tst_q3checklistitem.cpp2
-rw-r--r--tests/auto/q3dns/tst_q3dns.cpp2
-rw-r--r--tests/auto/q3popupmenu/tst_q3popupmenu.cpp2
-rw-r--r--tests/auto/qapplication/tst_qapplication.cpp2
-rw-r--r--tests/auto/qbytearray/tst_qbytearray.cpp2
-rw-r--r--tests/auto/qclipboard/tst_qclipboard.cpp6
-rw-r--r--tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp2
-rw-r--r--tests/auto/qeventloop/tst_qeventloop.cpp2
-rw-r--r--tests/auto/qftp/tst_qftp.cpp2
-rw-r--r--tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp4
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp2
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp4
-rw-r--r--tests/auto/qhostinfo/tst_qhostinfo.cpp2
-rw-r--r--tests/auto/qitemmodel/tst_qitemmodel.cpp30
-rw-r--r--tests/auto/qitemview/tst_qitemview.cpp4
-rw-r--r--tests/auto/qkeysequence/tst_qkeysequence.cpp2
-rw-r--r--tests/auto/qlistview/tst_qlistview.cpp2
-rw-r--r--tests/auto/qmenu/tst_qmenu.cpp2
-rw-r--r--tests/auto/qnetworkreply/test/test.pro2
-rw-r--r--tests/auto/qprinterinfo/tst_qprinterinfo.cpp2
-rw-r--r--tests/auto/qpushbutton/tst_qpushbutton.cpp2
-rw-r--r--tests/auto/qshortcut/tst_qshortcut.cpp2
-rw-r--r--tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp138
-rw-r--r--tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp2
-rw-r--r--tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp2
-rw-r--r--tests/auto/qsslsocket/tst_qsslsocket.cpp4
-rw-r--r--tests/auto/qstatictext/tst_qstatictext.cpp40
-rw-r--r--tests/auto/qtabwidget/tst_qtabwidget.cpp5
-rw-r--r--tests/auto/qtcpsocket/test/test.pro2
-rw-r--r--tests/auto/qtextformat/tst_qtextformat.cpp4
-rw-r--r--tests/auto/qtipc/qsharedmemory/src/qsystemlock.cpp2
-rw-r--r--tests/auto/qudpsocket/tst_qudpsocket.cpp2
-rw-r--r--tests/auto/qurl/tst_qurl.cpp28
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp19
-rw-r--r--tools/linguist/tests/tst_lupdate.cpp2
62 files changed, 532 insertions, 274 deletions
diff --git a/dist/changes-4.8.0 b/dist/changes-4.8.0
index da3a00a..f10258a 100644
--- a/dist/changes-4.8.0
+++ b/dist/changes-4.8.0
@@ -54,6 +54,8 @@ QtCore
- qSwap now uses std::swap, specialized std::swap for our container to work better with stl algoritms
- QVariant: deprecated global function qVariantSetValue, qVariantValue, qVariantCanConvert, qVariantFromValue
- QUrl: add method for retrieving effective top level domain [QTBUG-13601] (MR-1205)
+ - optimised performance of QFileInfo, QDir, QDirIterator, these classes now share metadata and access the filesystem less
+ - QFile: new open() overloads allow control over whether QFile should close an adopted file handle or not
QtGui
-----
@@ -63,6 +65,7 @@ QtGui
- Deprecate qGenericMatrixFromMatrix4x4 and qGenericMatrixToMatrix4x4
- QListView diverses optimisations [QTBUG-11438]
- QTreeWidget/QListWidget: use localeAwareCompare for string comparisons [QTBUG-10839]
+ - Fixed a rare race condition when showing toplevel windows on X11
QtNetwork
---------
@@ -77,7 +80,7 @@ QtNetwork
- HTTP API: add support for HTTP multipart messages [QTBUG-6222]
- HTTP cache: do not load resources from cache that must be revalidated [QTBUG-18983]
- HTTP cache: change file organization (MR-2505)
-
+ - SOCKS5: write errors are propagated to the outer socket [QTBUG-18713]
QtOpenGL
--------
@@ -86,6 +89,7 @@ QtNetwork
OpenGL/ES 2.0 API.
- Including <QtOpenGL> will not work in combination with GLEW, as
QGLFunctions will undefine GLEW's defines.
+ - Optimize behavior of QGLTextureCache
QtScript
--------
@@ -103,6 +107,7 @@ QtScript
Qt for Linux/X11
----------------
+ - Added experimental support for armCC
Qt for Windows
@@ -117,7 +122,21 @@ Qt for Embedded Linux
---------------------
- Added support for QNX 6.5 with multi-process support, and much improved mouse,
keyboard and screen drivers.
+ - Improved support for INTEGRITY RTOS
+ - Allow hard-coding the temp path in mkspecs (QT_UNIX_TEMP_PATH_OVERRIDE define)
+Qt for Symbian
+--------------
+ - File APIs now have backends using native API rather than unix.
+ This improves performance and stability.
+ - Socket APIs now have a backend using native API rather than unix. [QTBUG-7274]
+ This improves stability and enables IPv6.
+ - IPv6 connectivity is now supported.
+ - Multiple instances of QNetworkAccessManager in the same process with a
+ different QNetworkConfiguration now work. This allows http requests to
+ be made via a specific network. For example to mobile operator websites
+ only accessible via the cellular network, or to websites inside a firewall
+ - System proxy settings now work correctly when using service networks [QTBUG-18618]
Qt for Windows CE
-----------------
diff --git a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp b/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
index 5919c01..cf40f9a 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
@@ -86,3 +86,38 @@ beginMoveRows(parent, 2, 2, parent, 0);
//! [9]
beginMoveRows(parent, 2, 2, parent, 4);
//! [9]
+
+
+//! [10]
+class CustomDataProxy : public QSortFilterProxyModel
+{
+ Q_OBJECT
+public:
+ CustomDataProxy(QObject *parent)
+ : QSortFilterProxyModel(parent)
+ {
+ }
+
+ ...
+
+ QVariant data(const QModelIndex &index, int role)
+ {
+ if (role != Qt::BackgroundRole)
+ return QSortFilterProxyModel::data(index, role);
+
+ if (m_customData.contains(index.row()))
+ return m_customData.value(index.row());
+ return QSortFilterProxyModel::data(index, role);
+ }
+
+private slots:
+ void resetInternalData()
+ {
+ m_customData.clear();
+ }
+
+private:
+ QHash<int, QVariant> m_customData;
+};
+//! [10]
+
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 8813656..d551009 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -5466,6 +5466,7 @@ void QUrl::removeAllEncodedQueryItems(const QByteArray &key)
if (end < d->query.size())
++end; // remove additional '%'
d->query.remove(pos, end - pos);
+ query = d->query.constData(); //required if remove detach;
} else {
pos = end + 1;
}
diff --git a/src/corelib/kernel/qabstractitemmodel.cpp b/src/corelib/kernel/qabstractitemmodel.cpp
index b7ac6aa..ddf1fbb 100644
--- a/src/corelib/kernel/qabstractitemmodel.cpp
+++ b/src/corelib/kernel/qabstractitemmodel.cpp
@@ -1348,6 +1348,26 @@ void QAbstractItemModelPrivate::columnsRemoved(const QModelIndex &parent,
*/
/*!
+ \since 4.8
+
+ This slot is called just after the internal data of a model is cleared
+ while it is being reset.
+
+ This slot is provided the convenience of subclasses of concrete proxy
+ models, such as subclasses of QSortFilterProxyModel which maintain extra
+ data.
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp 10
+
+ \sa modelAboutToBeReset(), modelReset()
+*/
+void QAbstractItemModel::resetInternalData()
+{
+
+}
+
+
+/*!
Constructs an abstract item model with the given \a parent.
*/
QAbstractItemModel::QAbstractItemModel(QObject *parent)
@@ -1747,18 +1767,19 @@ QMimeData *QAbstractItemModel::mimeData(const QModelIndexList &indexes) const
Returns true if the data and action can be handled by the model; otherwise
returns false.
- Although the specified \a row, \a column and \a parent indicate the
- location of an item in the model where the operation ended, it is the
- responsibility of the view to provide a suitable location for where the
- data should be inserted.
+ The specified \a row, \a column and \a parent indicate the location of an
+ item in the model where the operation ended. It is the responsibility of
+ the model to complete the action at the correct location.
For instance, a drop action on an item in a QTreeView can result in new
items either being inserted as children of the item specified by \a row,
\a column, and \a parent, or as siblings of the item.
- When row and column are -1 it means that it is up to the model to decide
- where to place the data. This can occur in a tree when data is dropped on
- a parent. Models will usually append the data to the parent in this case.
+ When \a row and \a column are -1 it means that the dropped data should be
+ considered as dropped directly on \a parent. Usually this will mean
+ appending the data as child items of \a parent. If \a row and column are
+ greater than or equal zero, it means that the drop occurred just before the
+ specified \a row and \a column in the specified \a parent.
\sa supportedDropActions(), {Using drag and drop with item views}
*/
@@ -2888,6 +2909,7 @@ void QAbstractItemModel::reset()
Q_D(QAbstractItemModel);
emit modelAboutToBeReset();
d->invalidatePersistentIndexes();
+ QMetaObject::invokeMethod(this, "resetInternalData");
emit modelReset();
}
@@ -2930,6 +2952,7 @@ void QAbstractItemModel::endResetModel()
{
Q_D(QAbstractItemModel);
d->invalidatePersistentIndexes();
+ QMetaObject::invokeMethod(this, "resetInternalData");
emit modelReset();
}
diff --git a/src/corelib/kernel/qabstractitemmodel.h b/src/corelib/kernel/qabstractitemmodel.h
index c7af7a2..eab1475 100644
--- a/src/corelib/kernel/qabstractitemmodel.h
+++ b/src/corelib/kernel/qabstractitemmodel.h
@@ -303,6 +303,9 @@ protected:
void setRoleNames(const QHash<int,QByteArray> &roleNames);
+protected Q_SLOTS:
+ void resetInternalData();
+
private:
Q_DECLARE_PRIVATE(QAbstractItemModel)
Q_DISABLE_COPY(QAbstractItemModel)
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 88618c3..67dbadb 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -2939,7 +2939,7 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
\a receiver. Returns true if the connection is successfully broken;
otherwise returns false.
- This function provides the same posibilities like
+ This function provides the same possibilities like
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
but uses QMetaMethod to represent the signal and the method to be disconnected.
@@ -2957,7 +2957,7 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
QMetaMethod() may be used as wildcard in the meaning "any signal" or "any slot in receiving object".
In the same way 0 can be used for \a receiver in the meaning "any receiving object". In this case
- method shoud also be QMetaMethod(). \a sender parameter should be never 0.
+ method should also be QMetaMethod(). \a sender parameter should be never 0.
\sa disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
*/
diff --git a/src/declarative/graphicsitems/qdeclarativetextlayout.cpp b/src/declarative/graphicsitems/qdeclarativetextlayout.cpp
index 73a8570..e7bcf1f 100644
--- a/src/declarative/graphicsitems/qdeclarativetextlayout.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextlayout.cpp
@@ -69,14 +69,17 @@ class DrawTextItemRecorder: public QPaintEngine
public:
DrawTextItemRecorder(bool untransformedCoordinates, bool useBackendOptimizations)
: m_inertText(0), m_dirtyPen(false), m_useBackendOptimizations(useBackendOptimizations),
- m_untransformedCoordinates(untransformedCoordinates)
+ m_untransformedCoordinates(untransformedCoordinates), m_currentColor(Qt::black)
{
}
virtual void updateState(const QPaintEngineState &newState)
{
- if (newState.state() & QPaintEngine::DirtyPen)
+ if (newState.state() & QPaintEngine::DirtyPen
+ && newState.pen().color() != m_currentColor) {
m_dirtyPen = true;
+ m_currentColor = newState.pen().color();
+ }
}
virtual void drawTextItem(const QPointF &position, const QTextItem &textItem)
@@ -112,7 +115,7 @@ class DrawTextItemRecorder: public QPaintEngine
currentItem.positionOffset = positionOffset;
currentItem.useBackendOptimizations = m_useBackendOptimizations;
if (m_dirtyPen)
- currentItem.color = state->pen().color();
+ currentItem.color = m_currentColor;
m_inertText->items.append(currentItem);
}
@@ -169,6 +172,7 @@ class DrawTextItemRecorder: public QPaintEngine
bool m_dirtyPen;
bool m_useBackendOptimizations;
bool m_untransformedCoordinates;
+ QColor m_currentColor;
};
class DrawTextItemDevice: public QPaintDevice
@@ -296,7 +300,7 @@ void QDeclarativeTextLayout::clearLayout()
QTextLayout::clearLayout();
}
-void QDeclarativeTextLayout::prepare(QPainter *painter)
+void QDeclarativeTextLayout::prepare()
{
if (!d || !d->cached) {
@@ -305,7 +309,6 @@ void QDeclarativeTextLayout::prepare(QPainter *painter)
InertTextPainter *itp = inertTextPainter();
itp->device.begin(d);
- itp->painter.setPen(painter->pen());
QTextLayout::draw(&itp->painter, QPointF(0, 0));
glyph_t *glyphPool = d->glyphs.data();
@@ -344,7 +347,7 @@ void QDeclarativeTextLayout::draw(QPainter *painter, const QPointF &p)
return;
}
- prepare(painter);
+ prepare();
int itemCount = d->items.count();
diff --git a/src/declarative/graphicsitems/qdeclarativetextlayout_p.h b/src/declarative/graphicsitems/qdeclarativetextlayout_p.h
index 85d333e..d83ce7e 100644
--- a/src/declarative/graphicsitems/qdeclarativetextlayout_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextlayout_p.h
@@ -61,7 +61,7 @@ public:
void beginLayout();
void clearLayout();
- void prepare(QPainter *);
+ void prepare();
void draw(QPainter *, const QPointF & = QPointF());
private:
diff --git a/src/gui/accessible/qaccessible_mac.mm b/src/gui/accessible/qaccessible_mac.mm
index 432b536..a250730 100644
--- a/src/gui/accessible/qaccessible_mac.mm
+++ b/src/gui/accessible/qaccessible_mac.mm
@@ -2427,7 +2427,7 @@ void QAccessible::updateAccessibility(QObject *object, int child, Event reason)
}
// There is no equivalent Mac notification for ObjectShow/Hide, so we call HIObjectSetAccessibilityIgnored
- // and isItIntersting which will mark the HIObject accociated with the element as ignored if the
+ // and isItInteresting which will mark the HIObject accociated with the element as ignored if the
// QAccessible::Invisible state bit is set.
QAInterface interface = accessibleHierarchyManager()->lookup(element);
if (interface.isValid()) {
diff --git a/src/gui/dialogs/qfiledialog_mac.mm b/src/gui/dialogs/qfiledialog_mac.mm
index fb52274..f1d3a4a 100644
--- a/src/gui/dialogs/qfiledialog_mac.mm
+++ b/src/gui/dialogs/qfiledialog_mac.mm
@@ -305,12 +305,13 @@ QT_USE_NAMESPACE
QString qtFileName = QT_PREPEND_NAMESPACE(qt_mac_NSStringToQString)(filename);
QFileInfo info(qtFileName.normalized(QT_PREPEND_NAMESPACE(QString::NormalizationForm_C)));
QString path = info.absolutePath();
+ QString name = info.fileName();
if (path != *mLastFilterCheckPath){
*mLastFilterCheckPath = path;
*mQDirFilterEntryList = info.dir().entryList(*mQDirFilter);
}
// Check if the QDir filter accepts the file:
- if (!mQDirFilterEntryList->contains(info.fileName()))
+ if (!mQDirFilterEntryList->contains(name))
return NO;
// No filter means accept everything
@@ -318,7 +319,7 @@ QT_USE_NAMESPACE
return YES;
// Check if the current file name filter accepts the file:
for (int i=0; i<mSelectedNameFilter->size(); ++i) {
- if (QDir::match(mSelectedNameFilter->at(i), qtFileName))
+ if (QDir::match(mSelectedNameFilter->at(i), name))
return YES;
}
return NO;
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index b3bf365..a51e295 100644
--- a/src/gui/kernel/qwidget_mac.mm
+++ b/src/gui/kernel/qwidget_mac.mm
@@ -3490,7 +3490,10 @@ void QWidgetPrivate::show_sys()
QWidget *top = 0;
if (QApplicationPrivate::tryModalHelper(q, &top)) {
- [window makeKeyAndOrderFront:window];
+ if (q->testAttribute(Qt::WA_ShowWithoutActivating))
+ [window orderFront:window];
+ else
+ [window makeKeyAndOrderFront:window];
// If this window is app modal, we need to start spinning
// a modal session for it. Interrupting
// the event dispatcher will make this happend:
diff --git a/src/gui/painting/qgraphicssystemfactory.cpp b/src/gui/painting/qgraphicssystemfactory.cpp
index 4309140..01ece09 100644
--- a/src/gui/painting/qgraphicssystemfactory.cpp
+++ b/src/gui/painting/qgraphicssystemfactory.cpp
@@ -74,7 +74,7 @@ QGraphicsSystem *QGraphicsSystemFactory::create(const QString& key)
if (system.isEmpty()) {
system = QLatin1String("runtime");
}
-#elif defined (QT_GRAPHICSSYSTEM_RASTER) && !defined(Q_WS_WIN) && !defined(Q_OS_SYMBIAN) || defined(Q_WS_X11) || (defined (Q_WS_MAC) && defined(QT_MAC_USE_COCOA))
+#elif defined (QT_GRAPHICSSYSTEM_RASTER) && !defined(Q_WS_WIN) && !defined(Q_OS_SYMBIAN) || defined(Q_WS_X11)
if (system.isEmpty()) {
system = QLatin1String("raster");
}
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 5a566d1..435e12a 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -2737,7 +2737,7 @@ QRectF QPainter::clipBoundingRect() const
}
// Accumulate the bounding box in device space. This is not 100%
- // precise, but it fits within the guarantee and it is resonably
+ // precise, but it fits within the guarantee and it is reasonably
// fast.
QRectF bounds;
for (int i=0; i<d->state->clipInfo.size(); ++i) {
diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp
index 2d2710c..14fdbd3 100644
--- a/src/gui/styles/qs60style_s60.cpp
+++ b/src/gui/styles/qs60style_s60.cpp
@@ -44,6 +44,7 @@
#include "qpainter.h"
#include "qstyleoption.h"
#include "qstyle.h"
+#include "private/qapplication_p.h"
#include "private/qt_s60_p.h"
#include "private/qpixmap_raster_symbian_p.h"
#include "private/qcore_symbian_p.h"
@@ -1387,12 +1388,26 @@ QPixmap QS60StylePrivate::backgroundTexture(bool skipCreation)
// Notify all widgets that palette is updated with the actual background texture.
QPalette pal = QApplication::palette();
pal.setBrush(QPalette::Window, *m_background);
+
+ //Application palette hash is automatically cleared when QApplication::setPalette is called.
+ //To avoid losing palette hash data, back it up before calling the setPalette() API and
+ //restore it afterwards.
+ typedef QHash<QByteArray, QPalette> PaletteHash;
+ PaletteHash hash;
+ if (qt_app_palettes_hash() || !qt_app_palettes_hash()->isEmpty())
+ hash = *qt_app_palettes_hash();
QApplication::setPalette(pal);
- setThemePaletteHash(&pal);
+ if (hash.isEmpty()) {
+ //set default theme palette hash
+ setThemePaletteHash(&pal);
+ } else {
+ for (int i = 0; i < hash.count() - 1; i++) {
+ QByteArray widgetClassName = hash.keys().at(i);
+ QApplication::setPalette(hash.value(widgetClassName), widgetClassName);
+ }
+ }
storeThemePalette(&pal);
- foreach (QWidget *widget, QApplication::allWidgets()){
- QEvent e(QEvent::PaletteChange);
- QApplication::sendEvent(widget, &e);
+ foreach (QWidget *widget, QApplication::allWidgets()) {
setThemePalette(widget);
widget->ensurePolished();
}
diff --git a/src/gui/text/qfontengine_qpf.cpp b/src/gui/text/qfontengine_qpf.cpp
index 4c1045e..30a1623 100644
--- a/src/gui/text/qfontengine_qpf.cpp
+++ b/src/gui/text/qfontengine_qpf.cpp
@@ -251,8 +251,8 @@ QList<QByteArray> QFontEngineQPF::cleanUpAfterClientCrash(const QList<int> &cras
{
QList<QByteArray> removedFonts;
QDir dir(qws_fontCacheDir(), QLatin1String("*.qsf"));
- for (int i = 0; i < int(dir.count()); ++i) {
- const QByteArray fileName = QFile::encodeName(dir.absoluteFilePath(dir[i]));
+ foreach (const QFileInfo &fi, dir.entryInfoList()) {
+ const QByteArray fileName = QFile::encodeName(fi.absoluteFilePath());
int fd = QT_OPEN(fileName.constData(), O_RDONLY, 0);
if (fd >= 0) {
@@ -342,14 +342,14 @@ QFontEngineQPF::QFontEngineQPF(const QFontDef &def, int fileDescriptor, QFontEng
fd = QT_OPEN(encodedFileName, O_RDONLY);
if (fd == -1) {
#if defined(DEBUG_FONTENGINE)
- qErrnoWarning("QFontEngineQPF: unable to open %s", encodedName.constData());
+ qErrnoWarning("QFontEngineQPF: unable to open %s", encodedFileName.constData());
#endif
return;
}
}
if (fd == -1) {
#if defined(DEBUG_FONTENGINE)
- qWarning("QFontEngineQPF: insufficient access rights to %s", encodedName.constData());
+ qWarning("QFontEngineQPF: insufficient access rights to %s", encodedFileName.constData());
#endif
return;
}
@@ -361,7 +361,7 @@ QFontEngineQPF::QFontEngineQPF(const QFontDef &def, int fileDescriptor, QFontEng
fd = QT_OPEN(encodedFileName, O_RDWR | O_EXCL | O_CREAT, 0644);
if (fd == -1) {
#if defined(DEBUG_FONTENGINE)
- qErrnoWarning(errno, "QFontEngineQPF: open() failed for %s", encodedName.constData());
+ qErrnoWarning(errno, "QFontEngineQPF: open() failed for %s", encodedFileName.constData());
#endif
return;
}
@@ -374,7 +374,7 @@ QFontEngineQPF::QFontEngineQPF(const QFontDef &def, int fileDescriptor, QFontEng
const QByteArray &data = buffer.data();
if (QT_WRITE(fd, data.constData(), data.size()) == -1) {
#if defined(DEBUG_FONTENGINE)
- qErrnoWarning(errno, "QFontEngineQPF: write() failed for %s", encodedName.constData());
+ qErrnoWarning(errno, "QFontEngineQPF: write() failed for %s", encodedFileName.constData());
#endif
return;
}
diff --git a/src/gui/text/qfontengine_qws.cpp b/src/gui/text/qfontengine_qws.cpp
index 4c6dff2..237842b 100644
--- a/src/gui/text/qfontengine_qws.cpp
+++ b/src/gui/text/qfontengine_qws.cpp
@@ -40,7 +40,6 @@
****************************************************************************/
#include "qfontengine_p.h"
-#include <private/qunicodetables_p.h>
#include <qwsdisplay_qws.h>
#include <qvarlengtharray.h>
#include <private/qpainter_p.h>
@@ -51,15 +50,17 @@
#include <qdebug.h>
-
#ifndef QT_NO_QWS_QPF
+#include "qplatformdefs.h"
#include "qfile.h"
-#include "qdir.h"
-#define QT_USE_MMAP
#include <stdlib.h>
+#if !defined(Q_OS_INTEGRITY)
+#define QT_USE_MMAP
+#endif
+
#ifdef QT_USE_MMAP
// for mmap
#include <unistd.h>
@@ -69,22 +70,17 @@
#include <fcntl.h>
#include <errno.h>
-# if defined(QT_LINUXBASE) && !defined(MAP_FILE)
- // LSB 3.2 does not define MAP_FILE
-# define MAP_FILE 0
-# endif
-
+#ifndef MAP_FILE
+# define MAP_FILE 0
+#endif
+#ifndef MAP_FAILED
+# define MAP_FAILED (void *)-1
#endif
-#endif // QT_NO_QWS_QPF
+#endif // QT_USE_MMAP
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_QWS_QPF
-QT_BEGIN_INCLUDE_NAMESPACE
-#include "qplatformdefs.h"
-QT_END_INCLUDE_NAMESPACE
-
static inline unsigned int getChar(const QChar *str, int &i, const int len)
{
unsigned int uc = str[i].unicode();
@@ -161,17 +157,10 @@ public:
QPFGlyphTree* more;
QPFGlyph* glyph;
public:
-#ifdef QT_USE_MMAP
QPFGlyphTree(uchar*& data)
{
read(data);
}
-#else
- QPFGlyphTree(QIODevice& f)
- {
- read(f);
- }
-#endif
~QPFGlyphTree()
{
@@ -237,7 +226,6 @@ private:
{
}
-#ifdef QT_USE_MMAP
void read(uchar*& data)
{
// All node data first
@@ -247,19 +235,7 @@ private:
// Then all video data
readData(data);
}
-#else
- void read(QIODevice& f)
- {
- // All node data first
- readNode(f);
- // Then all non-video data
- readMetrics(f);
- // Then all video data
- readData(f);
- }
-#endif
-#ifdef QT_USE_MMAP
void readNode(uchar*& data)
{
uchar rw = *data++;
@@ -285,38 +261,7 @@ private:
if ( more )
more->readNode(data);
}
-#else
- void readNode(QIODevice& f)
- {
- char rw;
- char cl;
- f.getChar(&rw);
- f.getChar(&cl);
- min = (rw << 8) | cl;
- f.getChar(&rw);
- f.getChar(&cl);
- max = (rw << 8) | cl;
- char flags;
- f.getChar(&flags);
- if ( flags & 1 )
- less = new QPFGlyphTree;
- else
- less = 0;
- if ( flags & 2 )
- more = new QPFGlyphTree;
- else
- more = 0;
- int n = max-min+1;
- glyph = new QPFGlyph[n];
-
- if ( less )
- less->readNode(f);
- if ( more )
- more->readNode(f);
- }
-#endif
-#ifdef QT_USE_MMAP
void readMetrics(uchar*& data)
{
int n = max-min+1;
@@ -329,22 +274,7 @@ private:
if ( more )
more->readMetrics(data);
}
-#else
- void readMetrics(QIODevice& f)
- {
- int n = max-min+1;
- for (int i=0; i<n; i++) {
- glyph[i].metrics = new QPFGlyphMetrics;
- f.read((char*)glyph[i].metrics, sizeof(QPFGlyphMetrics));
- }
- if ( less )
- less->readMetrics(f);
- if ( more )
- more->readMetrics(f);
- }
-#endif
-#ifdef QT_USE_MMAP
void readData(uchar*& data)
{
int n = max-min+1;
@@ -359,24 +289,6 @@ private:
if ( more )
more->readData(data);
}
-#else
- void readData(QIODevice& f)
- {
- int n = max-min+1;
- for (int i=0; i<n; i++) {
- QSize s( glyph[i].metrics->width, glyph[i].metrics->height );
- //############### s = qt_screen->mapToDevice( s );
- uint datasize = glyph[i].metrics->linestep * s.height();
- glyph[i].data = new uchar[datasize]; // ### deleted?
- f.read((char*)glyph[i].data, datasize);
- }
- if ( less )
- less->readData(f);
- if ( more )
- more->readData(f);
- }
-#endif
-
};
class QFontEngineQPF1Data
@@ -384,73 +296,58 @@ class QFontEngineQPF1Data
public:
QPFFontMetrics fm;
QPFGlyphTree *tree;
- void *mmapStart;
+ uchar *mmapStart;
size_t mmapLength;
-};
-
-#if defined(Q_OS_INTEGRITY)
-static void *qt_mmap(void *start, size_t length, int /*prot*/, int /*flags*/, int fd, off_t offset)
-{
- // INTEGRITY cannot mmap local files - load it into a local buffer
- if (::lseek(fd, offset, SEEK_SET) == -1) {
-# if defined(DEBUG_FONTENGINE)
- perror("lseek failed");
-# endif
- }
- void *buf = malloc(length);
- if (::read(fd, buf, length) != (ssize_t)length) {
-# if defined(DEBUG_FONTENGINE)
- perror("read failed");
-# endif
- }
-
- return buf;
-}
-#else
-static inline void *qt_mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset)
-{
- return mmap(start, length, prot, flags, fd, offset);
-}
+#ifdef QT_USE_MMAP
+ bool used_mmap;
#endif
-
-
+};
QFontEngineQPF1::QFontEngineQPF1(const QFontDef&, const QString &fn)
{
cache_cost = 1;
- int f = QT_OPEN( QFile::encodeName(fn), O_RDONLY, 0);
- Q_ASSERT(f>=0);
+ int fd = QT_OPEN(QFile::encodeName(fn).constData(), O_RDONLY, 0);
+ if (fd == -1)
+ qFatal("Failed to open '%s'", QFile::encodeName(fn).constData());
+
QT_STATBUF st;
- if ( QT_FSTAT( f, &st ) )
- qFatal("Failed to stat %s",QFile::encodeName(fn).data());
- uchar* data = (uchar*)qt_mmap( 0, // any address
- st.st_size, // whole file
- PROT_READ, // read-only memory
-#if defined(Q_OS_INTEGRITY)
- 0,
-#elif !defined(Q_OS_SOLARIS) && !defined(Q_OS_QNX4) && !defined(Q_OS_VXWORKS)
- MAP_FILE | MAP_PRIVATE, // swap-backed map from file
-#else
- MAP_PRIVATE,
-#endif
- f, 0 ); // from offset 0 of f
-#if !defined(MAP_FAILED) && (defined(Q_OS_QNX4) || defined(Q_OS_INTEGRITY))
-#define MAP_FAILED ((void *)-1)
-#endif
- if ( !data || data == (uchar*)MAP_FAILED )
- qFatal("Failed to mmap %s",QFile::encodeName(fn).data());
- QT_CLOSE(f);
+ if (QT_FSTAT(fd, &st) != 0)
+ qFatal("Failed to stat '%s'", QFile::encodeName(fn).constData());
d = new QFontEngineQPF1Data;
- d->mmapStart = data;
+ d->mmapStart = 0;
d->mmapLength = st.st_size;
- memcpy(reinterpret_cast<char*>(&d->fm),data,sizeof(d->fm));
- data += sizeof(d->fm);
- d->tree = new QPFGlyphTree(data);
- glyphFormat = (d->fm.flags & FM_SMOOTH) ? QFontEngineGlyphCache::Raster_A8
- : QFontEngineGlyphCache::Raster_Mono;
+#ifdef QT_USE_MMAP
+ d->used_mmap = true;
+ d->mmapStart = (uchar *)::mmap(0, st.st_size, // any address, whole file
+ PROT_READ, // read-only memory
+ MAP_FILE | MAP_PRIVATE, // swap-backed map from file
+ fd, 0); // from offset 0 of fd
+ if (d->mmapStart == (uchar *)MAP_FAILED)
+ d->mmapStart = 0;
+#endif
+
+ if (!d->mmapStart) {
+#ifdef QT_USE_MMAP
+ d->used_mmap = false;
+#endif
+ d->mmapStart = new uchar[d->mmapLength];
+ if (QT_READ(fd, d->mmapStart, d->mmapLength) != d->mmapLength)
+ qFatal("Failed to read '%s'", QFile::encodeName(fn).constData());
+ }
+ QT_CLOSE(fd);
+
+ if (d->mmapStart) {
+ uchar* data = d->mmapStart;
+
+ memcpy(reinterpret_cast<char*>(&d->fm), data, sizeof(d->fm));
+ data += sizeof(d->fm);
+
+ d->tree = new QPFGlyphTree(data);
+ glyphFormat = (d->fm.flags & FM_SMOOTH) ? QFontEngineGlyphCache::Raster_A8
+ : QFontEngineGlyphCache::Raster_Mono;
#if 0
qDebug() << "font file" << fn
<< "ascent" << d->fm.ascent << "descent" << d->fm.descent
@@ -462,12 +359,19 @@ QFontEngineQPF1::QFontEngineQPF1(const QFontDef&, const QString &fn)
<< "underlinepos" << d->fm.underlinepos
<< "underlinewidth" << d->fm.underlinewidth;
#endif
+ }
}
QFontEngineQPF1::~QFontEngineQPF1()
{
- if (d->mmapStart)
- munmap(d->mmapStart, d->mmapLength);
+ if (d->mmapStart) {
+#if defined(QT_USE_MMAP)
+ if (d->used_mmap)
+ ::munmap(d->mmapStart, d->mmapLength);
+ else
+#endif
+ delete [] d->mmapStart;
+ }
delete d->tree;
delete d;
}
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index d8192b7..c985427 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -427,14 +427,17 @@ namespace {
public:
DrawTextItemRecorder(bool untransformedCoordinates, bool useBackendOptimizations)
: m_dirtyPen(false), m_useBackendOptimizations(useBackendOptimizations),
- m_untransformedCoordinates(untransformedCoordinates)
+ m_untransformedCoordinates(untransformedCoordinates), m_currentColor(Qt::black)
{
}
virtual void updateState(const QPaintEngineState &newState)
{
- if (newState.state() & QPaintEngine::DirtyPen)
+ if (newState.state() & QPaintEngine::DirtyPen
+ && newState.pen().color() != m_currentColor) {
m_dirtyPen = true;
+ m_currentColor = newState.pen().color();
+ }
}
virtual void drawTextItem(const QPointF &position, const QTextItem &textItem)
@@ -450,7 +453,7 @@ namespace {
currentItem.positionOffset = m_glyphs.size(); // Offset into position pool
currentItem.useBackendOptimizations = m_useBackendOptimizations;
if (m_dirtyPen)
- currentItem.color = state->pen().color();
+ currentItem.color = m_currentColor;
QTransform matrix = m_untransformedCoordinates ? QTransform() : state->transform();
matrix.translate(position.x(), position.y());
@@ -521,6 +524,7 @@ namespace {
bool m_dirtyPen;
bool m_useBackendOptimizations;
bool m_untransformedCoordinates;
+ QColor m_currentColor;
};
class DrawTextItemDevice: public QPaintDevice
diff --git a/src/network/access/qnetworkaccesshttpbackend.cpp b/src/network/access/qnetworkaccesshttpbackend.cpp
index 64a22aa..7d49648 100644
--- a/src/network/access/qnetworkaccesshttpbackend.cpp
+++ b/src/network/access/qnetworkaccesshttpbackend.cpp
@@ -653,6 +653,7 @@ void QNetworkAccessHttpBackend::postRequest()
delegate->isPipeliningUsed,
QSharedPointer<char>(),
delegate->incomingContentLength);
+ replyDownloadData(delegate->synchronousDownloadData);
httpError(delegate->incomingErrorCode, delegate->incomingErrorDetail);
} else {
replyDownloadMetaData
diff --git a/src/network/socket/qsymbiansocketengine.cpp b/src/network/socket/qsymbiansocketengine.cpp
index edd5d6e..0aa5a5a 100644
--- a/src/network/socket/qsymbiansocketengine.cpp
+++ b/src/network/socket/qsymbiansocketengine.cpp
@@ -1037,7 +1037,7 @@ qint64 QSymbianSocketEngine::write(const char *data, qint64 len)
TSockXfrLength sentBytes = 0;
TRequestStatus status;
d->nativeSocket.Send(buffer, 0, status, sentBytes);
- User::WaitForRequest(status); //TODO: on emulator this blocks for write >16kB (non blocking IO not implemented properly?)
+ User::WaitForRequest(status);
TInt err = status.Int();
if (err) {
@@ -1204,7 +1204,7 @@ int QSymbianSocketEnginePrivate::nativeSelect(int timeout, bool checkRead, bool
const_cast<QSymbianSocketEnginePrivate*>(this)->setError(err);
//restart asynchronous notifier (only one IOCTL allowed at a time)
if (asyncSelect)
- asyncSelect->IssueRequest(); //TODO: in error case should we restart or not?
+ asyncSelect->IssueRequest();
return err;
}
if (checkRead && (selectFlags() & KSockSelectRead)) {
@@ -1324,7 +1324,7 @@ bool QSymbianSocketEnginePrivate::checkProxy(const QHostAddress &address)
return true;
}
-// FIXME this is also in QNativeSocketEngine, unify it
+// ### this is also in QNativeSocketEngine, unify it
/*! \internal
Sets the error and error string if not set already. The only
diff --git a/src/network/socket/qsymbiansocketengine_p.h b/src/network/socket/qsymbiansocketengine_p.h
index 3b39096..aad6228 100644
--- a/src/network/socket/qsymbiansocketengine_p.h
+++ b/src/network/socket/qsymbiansocketengine_p.h
@@ -195,7 +195,6 @@ public:
mutable QByteArray receivedDataBuffer;
mutable bool hasReceivedBufferedDatagram;
- // FIXME this is duplicated from qnativesocketengine_p.h
enum ErrorString {
NonBlockingInitFailedErrorString,
BroadcastingInitFailedErrorString,
diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
index c62624b..a0dde37 100644
--- a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
+++ b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
@@ -73,6 +73,9 @@ QT_BEGIN_NAMESPACE
using namespace QAccessible2;
+QString Q_GUI_EXPORT qt_accStripAmp(const QString &text);
+QString Q_GUI_EXPORT qt_accHotKey(const QString &text);
+
QList<QWidget*> childWidgets(const QWidget *widget, bool includeTopLevel)
{
if (widget == 0)
@@ -1139,8 +1142,8 @@ int QAccessibleTitleBar::childCount() const
QString QAccessibleTitleBar::text(Text t, int child) const
{
if (!child) {
- if (t == Value) {
- return dockWidget()->windowTitle();
+ if (t == Name || t == Value) {
+ return qt_accStripAmp(dockWidget()->windowTitle());
}
}
return QString();
@@ -1171,17 +1174,19 @@ QAccessible::State QAccessibleTitleBar::state(int child) const
return state;
}
-QRect QAccessibleTitleBar::rect (int child ) const
+QRect QAccessibleTitleBar::rect(int child) const
{
bool mapToGlobal = true;
QRect rect;
if (child == 0) {
if (dockWidget()->isFloating()) {
rect = dockWidget()->frameGeometry();
- QPoint globalPos = dockWidget()->mapToGlobal( dockWidget()->widget()->rect().topLeft() );
- globalPos.ry()--;
- rect.setBottom(globalPos.y());
- mapToGlobal = false;
+ if (dockWidget()->widget()) {
+ QPoint globalPos = dockWidget()->mapToGlobal(dockWidget()->widget()->rect().topLeft());
+ globalPos.ry()--;
+ rect.setBottom(globalPos.y());
+ mapToGlobal = false;
+ }
} else {
QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(dockWidget()->layout());
rect = layout->titleArea();
diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
index 107f347..fc65b86 100644
--- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
@@ -459,6 +459,8 @@ TUint QNetworkSessionPrivateImpl::iapClientCount(TUint aIAPId) const
{
TRequestStatus status;
TUint connectionCount;
+ if (!iConnectionMonitor.Handle())
+ return 0;
iConnectionMonitor.GetConnectionCount(connectionCount, status);
User::WaitForRequest(status);
if (status.Int() == KErrNone) {
@@ -536,7 +538,8 @@ void QNetworkSessionPrivateImpl::stop()
#endif
if (!isOpen &&
publicConfig.isValid() &&
- publicConfig.type() == QNetworkConfiguration::InternetAccessPoint) {
+ publicConfig.type() == QNetworkConfiguration::InternetAccessPoint &&
+ iConnectionMonitor.Handle()) {
#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
qDebug() << "QNS this : " << QString::number((uint)this) << " - "
<< "since session is not open, using RConnectionMonitor to stop() the interface";
@@ -801,6 +804,8 @@ quint64 QNetworkSessionPrivateImpl::transferredData(TUint dataType) const
return 0;
}
+ if (!iConnectionMonitor.Handle())
+ return 0;
TUint count;
TRequestStatus status;
iConnectionMonitor.GetConnectionCount(count, status);
@@ -1415,6 +1420,8 @@ bool QNetworkSessionPrivateImpl::easyWlanTrueIapId(TUint32 &trueIapId) const
// Loop through all connections that connection monitor is aware
// and check for IAPs based on easy WLAN
+ if (!iConnectionMonitor.Handle())
+ return false;
TRequestStatus status;
TUint connectionCount;
iConnectionMonitor.GetConnectionCount(connectionCount, status);
diff --git a/src/plugins/bearer/symbian/symbianengine.cpp b/src/plugins/bearer/symbian/symbianengine.cpp
index 71687dd..04edbb7 100644
--- a/src/plugins/bearer/symbian/symbianengine.cpp
+++ b/src/plugins/bearer/symbian/symbianengine.cpp
@@ -104,11 +104,19 @@ void SymbianEngine::initialize()
return;
}
- TRAP_IGNORE(iConnectionMonitor.ConnectL());
+ TRAP(error, {
+ iConnectionMonitor.ConnectL();
+ CleanupClosePushL(iConnectionMonitor);
#ifdef SNAP_FUNCTIONALITY_AVAILABLE
- TRAP_IGNORE(iConnectionMonitor.SetUintAttribute(EBearerIdAll, 0, KBearerGroupThreshold, 1));
+ User::LeaveIfError(iConnectionMonitor.SetUintAttribute(EBearerIdAll, 0, KBearerGroupThreshold, 1));
#endif
- TRAP_IGNORE(iConnectionMonitor.NotifyEventL(*this));
+ iConnectionMonitor.NotifyEventL(*this);
+ CleanupStack::Pop();
+ });
+ if (error != KErrNone) {
+ iInitOk = false;
+ return;
+ }
#ifdef SNAP_FUNCTIONALITY_AVAILABLE
TRAP(error, iCmManager.OpenL());
diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro
index 0d257fb..d96b46a 100644..100755
--- a/src/s60installs/s60installs.pro
+++ b/src/s60installs/s60installs.pro
@@ -134,19 +134,22 @@ symbian: {
contains(QT_CONFIG, declarative): {
qtlibraries.files += $$QMAKE_LIBDIR_QT/QtDeclarative$${QT_LIBINFIX}.dll
- folderlistmodelImport.files = $$QT_BUILD_TREE/imports/Qt/labs/folderlistmodel/qmlfolderlistmodelplugin$${QT_LIBINFIX}.dll
- gesturesImport.files = $$QT_BUILD_TREE/imports/Qt/labs/gestures/qmlgesturesplugin$${QT_LIBINFIX}.dll
- particlesImport.files = $$QT_BUILD_TREE/imports/Qt/labs/particles/qmlparticlesplugin$${QT_LIBINFIX}.dll
+ folderlistmodelImport.sources = $$QT_BUILD_TREE/imports/Qt/labs/folderlistmodel/qmlfolderlistmodelplugin$${QT_LIBINFIX}.dll
+ gesturesImport.sources = $$QT_BUILD_TREE/imports/Qt/labs/gestures/qmlgesturesplugin$${QT_LIBINFIX}.dll
+ particlesImport.sources = $$QT_BUILD_TREE/imports/Qt/labs/particles/qmlparticlesplugin$${QT_LIBINFIX}.dll
+ shadersImport.sources = $$QT_BUILD_TREE/imports/Qt/labs/shaders/qmlshadersplugin$${QT_LIBINFIX}.dll
- folderlistmodelImport.files += $$QT_SOURCE_TREE/src/imports/folderlistmodel/qmldir
- gesturesImport.files += $$QT_SOURCE_TREE/src/imports/gestures/qmldir
- particlesImport.files += $$QT_SOURCE_TREE/src/imports/particles/qmldir
+ folderlistmodelImport.sources += $$QT_SOURCE_TREE/src/imports/folderlistmodel/qmldir
+ gesturesImport.sources += $$QT_SOURCE_TREE/src/imports/gestures/qmldir
+ particlesImport.sources += $$QT_SOURCE_TREE/src/imports/particles/qmldir
+ shadersImport.sources += $$QT_SOURCE_TREE/src/imports/shaders/qmldir
folderlistmodelImport.path = c:$$QT_IMPORTS_BASE_DIR/Qt/labs/folderlistmodel
gesturesImport.path = c:$$QT_IMPORTS_BASE_DIR/Qt/labs/gestures
particlesImport.path = c:$$QT_IMPORTS_BASE_DIR/Qt/labs/particles
+ shadersImport.path = c:$$QT_IMPORTS_BASE_DIR/Qt/labs/shaders
- DEPLOYMENT += folderlistmodelImport gesturesImport particlesImport
+ DEPLOYMENT += folderlistmodelImport gesturesImport particlesImport shadersImport
}
graphicssystems_plugins.path = c:$$QT_PLUGINS_BASE_DIR/graphicssystems
diff --git a/src/src.pro b/src/src.pro
index da11b69..9e29b89 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -27,7 +27,6 @@ contains(QT_CONFIG, webkit) {
!contains(QT_CONFIG, no-gui):contains(QT_CONFIG, scripttools): SRC_SUBDIRS += src_scripttools
SRC_SUBDIRS += src_plugins
contains(QT_CONFIG, declarative): SRC_SUBDIRS += src_imports
-contains(QT_CONFIG, declarative):contains(QT_CONFIG, webkit): SRC_SUBDIRS += src_webkit_declarative
# s60installs need to be at the end, because projects.pro does an ordered build,
# and s60installs depends on all the others.
@@ -81,8 +80,6 @@ src_webkit.file = $$QT_SOURCE_TREE/src/3rdparty/webkit/Source/WebKit.pro
src_webkit.target = sub-webkit
src_declarative.subdir = $$QT_SOURCE_TREE/src/declarative
src_declarative.target = sub-declarative
-src_webkit_declarative.subdir = $$QT_SOURCE_TREE/src/3rdparty/webkit/Source/WebKit/qt/declarative
-src_webkit_declarative.target = sub-webkitdeclarative
#CONFIG += ordered
!wince*:!ordered:!symbian-abld:!symbian-sbsv2 {
@@ -136,7 +133,6 @@ src_webkit_declarative.target = sub-webkitdeclarative
contains(QT_CONFIG, svg) {
src_declarative.depends += src_svg
}
- contains(QT_CONFIG, webkit) : contains(QT_CONFIG, declarative): src_webkit_declarative.depends = src_declarative src_webkit
}
diff --git a/tests/auto/mediaobject/tst_mediaobject.cpp b/tests/auto/mediaobject/tst_mediaobject.cpp
index f16a6f7..ebac64e 100644
--- a/tests/auto/mediaobject/tst_mediaobject.cpp
+++ b/tests/auto/mediaobject/tst_mediaobject.cpp
@@ -498,7 +498,7 @@ void tst_MediaObject::initTestCase()
if (Phonon::ErrorState == s) {
#ifdef Q_WS_WIN
if (m_media->errorString().contains(QLatin1String("no audio hardware is available")))
- QSKIP("On Windows we need an audio devide to perform the MediaObject tests", SkipAll);
+ QSKIP("On Windows we need an audio device to perform the MediaObject tests", SkipAll);
else
#endif
QFAIL("Loading the URL put the MediaObject into the ErrorState. Check that PHONON_TESTURL is set to a valid URL.");
@@ -748,7 +748,7 @@ void tst_MediaObject::playUrl()
QVERIFY(media.state() != Phonon::ErrorState);
//we use a long 30s timeout here as it can take a long time for the streaming source to
- //be sucessfully prepared depending on the network.
+ //be successfully prepared depending on the network.
if (media.state() != Phonon::StoppedState)
QTest::waitForSignal(&media, SIGNAL(stateChanged(Phonon::State, Phonon::State)), 30000);
QCOMPARE(media.state(), Phonon::StoppedState);
@@ -1192,7 +1192,7 @@ void tst_MediaObject::_testOneSeek(qint64 seekTo)
void tst_MediaObject::volumeSliderMuteVisibility()
{
//this test doesn't really belong to mediaobject
- // ### see if we should create a realy Phonon::VolumeSlider autotest
+ // ### see if we should create a really Phonon::VolumeSlider autotest
Phonon::VolumeSlider slider;
QVERIFY(slider.isMuteVisible()); // that is the default value
slider.setMuteVisible(true);
diff --git a/tests/auto/q3accel/tst_q3accel.cpp b/tests/auto/q3accel/tst_q3accel.cpp
index e87a3e7..24f9368 100644
--- a/tests/auto/q3accel/tst_q3accel.cpp
+++ b/tests/auto/q3accel/tst_q3accel.cpp
@@ -877,7 +877,7 @@ void tst_Q3Accel::unicodeCompose()
sendKeyEvents( META+Qt::Key_9, 0 );
QCOMPARE( currentResult, Accel1Triggered );
#else
- QSKIP( "Unicode composing non-existant in Qt 3.y.z", SkipAll);
+ QSKIP( "Unicode composing non-existent in Qt 3.y.z", SkipAll);
#endif
}
diff --git a/tests/auto/q3checklistitem/tst_q3checklistitem.cpp b/tests/auto/q3checklistitem/tst_q3checklistitem.cpp
index 70f0623..6b2f0d6 100644
--- a/tests/auto/q3checklistitem/tst_q3checklistitem.cpp
+++ b/tests/auto/q3checklistitem/tst_q3checklistitem.cpp
@@ -284,7 +284,7 @@ void tst_Q3CheckListItem::setState_data()
s.insert( "b_item1", Q3CheckListItem::On );
// bring back old state
s.insert( "c_item1", Q3CheckListItem::NoChange );
- // set item9 (and it's children) to On, wich also saves new history for the whole tree to On
+ // set item9 (and it's children) to On, which also saves new history for the whole tree to On
s.insert( "d_item9", Q3CheckListItem::On );
// bring back old state once again, all should be On now
s.insert( "e_item1", Q3CheckListItem::NoChange );
diff --git a/tests/auto/q3dns/tst_q3dns.cpp b/tests/auto/q3dns/tst_q3dns.cpp
index 7cfdfdc..e85376c 100644
--- a/tests/auto/q3dns/tst_q3dns.cpp
+++ b/tests/auto/q3dns/tst_q3dns.cpp
@@ -123,7 +123,7 @@ void tst_Q3Dns::destructor()
Q3Socket *s = new Q3Socket(&a);
s->connectToHost("ftp.qt.nokia.com", 21);
- // dummy verify since this test only makes shure that it does not crash
+ // dummy verify since this test only makes sure that it does not crash
QVERIFY( TRUE );
}
diff --git a/tests/auto/q3popupmenu/tst_q3popupmenu.cpp b/tests/auto/q3popupmenu/tst_q3popupmenu.cpp
index 8a28938..3e60cfd 100644
--- a/tests/auto/q3popupmenu/tst_q3popupmenu.cpp
+++ b/tests/auto/q3popupmenu/tst_q3popupmenu.cpp
@@ -88,7 +88,7 @@ protected slots:
void onShiftItem();
void onSpicy();
void onSubItem();
- // Needed to slience QObject about non existant slot
+ // Needed to slience QObject about non existent slot
void dummySlot() {}
void itemParameterChanged(int p = 0){itemParameter = p; }
diff --git a/tests/auto/qapplication/tst_qapplication.cpp b/tests/auto/qapplication/tst_qapplication.cpp
index 79cb362..997f9a5 100644
--- a/tests/auto/qapplication/tst_qapplication.cpp
+++ b/tests/auto/qapplication/tst_qapplication.cpp
@@ -1515,7 +1515,7 @@ void tst_QApplication::testDeleteLaterProcessEvents()
}
/*
- Test for crash whith QApplication::setDesktopSettingsAware(false).
+ Test for crash with QApplication::setDesktopSettingsAware(false).
*/
void tst_QApplication::desktopSettingsAware()
{
diff --git a/tests/auto/qbytearray/tst_qbytearray.cpp b/tests/auto/qbytearray/tst_qbytearray.cpp
index 9889aae..5488559 100644
--- a/tests/auto/qbytearray/tst_qbytearray.cpp
+++ b/tests/auto/qbytearray/tst_qbytearray.cpp
@@ -644,7 +644,7 @@ void tst_QByteArray::qstrncpy()
QCOMPARE(QByteArray(::qstrncpy(dst.data(), src.data(), src.size())),
QByteArray("Tumdelidu"));
- // normal copy with length is longer than neccessary
+ // normal copy with length is longer than necessary
src = QByteArray( "Tumdelidum\0foo" );
dst.resize(128*1024);
QCOMPARE(QByteArray(::qstrncpy(dst.data(), src.data(), dst.size())),
diff --git a/tests/auto/qclipboard/tst_qclipboard.cpp b/tests/auto/qclipboard/tst_qclipboard.cpp
index 7e47c27..94981cf 100644
--- a/tests/auto/qclipboard/tst_qclipboard.cpp
+++ b/tests/auto/qclipboard/tst_qclipboard.cpp
@@ -140,8 +140,8 @@ void tst_QClipboard::modes()
}
/*
- Test that the apropriate signals are emitted when the cliboard
- contents is changed by calling the qt funcitons.
+ Test that the appropriate signals are emitted when the cliboard
+ contents is changed by calling the qt functions.
*/
void tst_QClipboard::testSignals()
{
@@ -170,7 +170,7 @@ void tst_QClipboard::testSignals()
changedSpy.clear();
- // Test the selction mode signal.
+ // Test the selection mode signal.
if (clipboard->supportsSelection()) {
clipboard->setText(text, QClipboard::Selection);
QCOMPARE(selectionChangedSpy.count(), 1);
diff --git a/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp b/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
index 86d5f24..6a51bf4 100644
--- a/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
+++ b/tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
@@ -360,7 +360,7 @@ void tst_QCommandLinkButton::toggled()
testWidget->toggle();
QVERIFY( toggle_count == 0 );
- // do it again, just to be shure
+ // do it again, just to be sure
resetCounters();
testWidget->toggle();
QVERIFY( toggle_count == 0 );
diff --git a/tests/auto/qeventloop/tst_qeventloop.cpp b/tests/auto/qeventloop/tst_qeventloop.cpp
index bcc205e..3250c77 100644
--- a/tests/auto/qeventloop/tst_qeventloop.cpp
+++ b/tests/auto/qeventloop/tst_qeventloop.cpp
@@ -287,7 +287,7 @@ void tst_QEventLoop::onlySymbianActiveScheduler() {
// In here we try to use timers and sockets exclusively using the Symbian
// active scheduler and no processEvents().
// This test should therefore be run first, so that we can verify that
- // the first occurrence of processEvents does not do any initalization that
+ // the first occurrence of processEvents does not do any initialization that
// we depend on.
// Open up a pipe so we can test socket notifiers.
diff --git a/tests/auto/qftp/tst_qftp.cpp b/tests/auto/qftp/tst_qftp.cpp
index 7e431cf..b6b81cb 100644
--- a/tests/auto/qftp/tst_qftp.cpp
+++ b/tests/auto/qftp/tst_qftp.cpp
@@ -1429,7 +1429,7 @@ void tst_QFtp::abort()
QVERIFY( bytesDone != bytesTotal );
}
} else {
- // this could be tested by verifying that no more progress signals are emited
+ // this could be tested by verifying that no more progress signals are emitted
QVERIFY(bytesDone <= bytesTotal);
}
} else {
diff --git a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
index 29c6591..8c52bb8 100644
--- a/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
+++ b/tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
@@ -1498,6 +1498,10 @@ void tst_QGraphicsProxyWidget::scrollUpdate()
view.paintEventRegion = QRegion();
view.npaints = 0;
QTimer::singleShot(0, widget, SLOT(updateScroll()));
+#if defined(QT_MAC_USE_COCOA)
+ if (QApplicationPrivate::graphics_system_name != QLatin1String("raster"))
+ QEXPECT_FAIL(0, "Cocoa will send us one aggregated update", Abort);
+#endif
QTRY_COMPARE(view.npaints, 2);
// QRect(0, 0, 200, 12) is the first update, expanded (-2, -2, 2, 2)
// QRect(0, 12, 102, 10) is the scroll update, expanded (-2, -2, 2, 2),
diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
index 66a9e47..4f21bb5 100644
--- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
@@ -3054,7 +3054,7 @@ void tst_QGraphicsView::task210599_unsetDragWhileDragging()
QApplication::sendEvent(view.viewport(), &move);
}
- // Check that no draggin has occured...
+ // Check that no draggin has occurred...
QCOMPARE(basePos, view.mapFromScene(0, 0));
}
diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
index 5260a1a..1df9d38 100644
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -2456,7 +2456,7 @@ void tst_QGraphicsWidget::popupMouseGrabber()
QCOMPARE(widgetUngrabEventSpy.count(), 1);
QCOMPARE(scene.mouseGrabberItem(), (QGraphicsItem *)0);
- // Showing it grabs the mosue again
+ // Showing it grabs the mouse again
widget->show();
QCOMPARE(widgetGrabEventSpy.count(), 2);
QCOMPARE(scene.mouseGrabberItem(), (QGraphicsItem *)widget);
@@ -3175,7 +3175,7 @@ void tst_QGraphicsWidget::initialShow2()
// Don't let paint events triggered by the windowing system
// influence our test case. We're only interested in knowing
// whether a QGraphicsWidget generates an additional repaint
- // on the inital show. Hence create a dummy scenario to find out
+ // on the initial show. Hence create a dummy scenario to find out
// how many repaints we should expect.
QGraphicsScene dummyScene(0, 0, 200, 200);
dummyScene.addItem(new QGraphicsRectItem(0, 0, 100, 100));
diff --git a/tests/auto/qhostinfo/tst_qhostinfo.cpp b/tests/auto/qhostinfo/tst_qhostinfo.cpp
index 2fa5e76..9ed1190 100644
--- a/tests/auto/qhostinfo/tst_qhostinfo.cpp
+++ b/tests/auto/qhostinfo/tst_qhostinfo.cpp
@@ -256,7 +256,7 @@ void tst_QHostInfo::initTestCase()
void tst_QHostInfo::init()
{
- // delete the cache so inidividual testcase results are independant from each other
+ // delete the cache so inidividual testcase results are independent from each other
qt_qhostinfo_clear_cache();
QFETCH_GLOBAL(bool, cache);
diff --git a/tests/auto/qitemmodel/tst_qitemmodel.cpp b/tests/auto/qitemmodel/tst_qitemmodel.cpp
index 4bdfadd..191e9e8 100644
--- a/tests/auto/qitemmodel/tst_qitemmodel.cpp
+++ b/tests/auto/qitemmodel/tst_qitemmodel.cpp
@@ -67,7 +67,7 @@ Q_DECLARE_METATYPE(QModelIndex)
See modelstotest.cpp for instructions on how to have your model tested with these tests.
Each test such as rowCount have a _data() function which populate the QTest data with
- the tests specified by modelstotest.cpp and any extra data needed for that perticular test.
+ the tests specified by modelstotest.cpp and any extra data needed for that particular test.
setupWithNoTestData() fills the QTest data with just the tests and is used by most tests.
@@ -192,7 +192,7 @@ void tst_QItemModel::nonDestructiveBasicTest_data()
}
/*!
- nonDestructiveBasicTest trys to call a number of the basic functions (not all)
+ nonDestructiveBasicTest tries to call a number of the basic functions (not all)
to make sure the model doesn't segfault, testing the functions that makes sense.
*/
void tst_QItemModel::nonDestructiveBasicTest()
@@ -516,7 +516,7 @@ void tst_QItemModel::parent()
QCOMPARE(currentModel->parent(childIndex), topIndex);
}
- // Common error test #3, the second colum has the same children
+ // Common error test #3, the second column has the same children
// as the first column in a row.
QModelIndex topIndex1 = currentModel->index(0, 1, QModelIndex());
if (currentModel->rowCount(topIndex1) > 0) {
@@ -817,7 +817,7 @@ void tst_QItemModel::remove_data()
makeTestRow(":valid start, invalid count", MIDDLE, 9999, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
makeTestRow(":valid start, invalid count", END, 9999, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
- // Recursive remove's might assert, havn't decided yet...
+ // Recursive remove's might assert, haven't decided yet...
//makeTestRow(":one at the start recursivly", START, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, FAIL);
//makeTestRow(":one at the middle recursivly", MIDDLE, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, SUCCESS);
//makeTestRow(":one at the end recursivly", END, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, SUCCESS);
@@ -849,7 +849,7 @@ void tst_QItemModel::remove()
QFETCH(bool, shouldSucceed);
// Populate the test area so we can remove something. See: cleanup()
- // parentOfRemoved is stored so that the slots can make sure parentOfRemoved is the index that is emited.
+ // parentOfRemoved is stored so that the slots can make sure parentOfRemoved is the index that is emitted.
parentOfRemoved = testModels->populateTestArea(currentModel);
if (count == -1)
@@ -866,7 +866,7 @@ void tst_QItemModel::remove()
//qDebug() << "remove start:" << start << "count:" << count << "rowCount:" << currentModel->rowCount(parentOfRemoved);
// When a row or column is removed there should be two signals.
- // Watch to make sure they are emited and get the row/column count when they do get emited by connecting them to a slot
+ // Watch to make sure they are emitted and get the row/column count when they do get emitted by connecting them to a slot
qRegisterMetaType<QModelIndex>("QModelIndex");
QSignalSpy columnsAboutToBeRemovedSpy(currentModel, SIGNAL(columnsAboutToBeRemoved( const QModelIndex &, int , int )));
QSignalSpy rowsAboutToBeRemovedSpy(currentModel, SIGNAL(rowsAboutToBeRemoved( const QModelIndex &, int , int )));
@@ -914,7 +914,7 @@ void tst_QItemModel::remove()
QVERIFY(parentOfRemoved == parent);
}
- // Only the row signals should have been emited
+ // Only the row signals should have been emitted
if (modelResetSpy.count() >= 1 || modelLayoutChangedSpy.count() >=1 ){
QCOMPARE(columnsAboutToBeRemovedSpy.count(), 0);
QCOMPARE(rowsAboutToBeRemovedSpy.count(), 0);
@@ -928,7 +928,7 @@ void tst_QItemModel::remove()
QCOMPARE(rowsRemovedSpy.count(), numberOfRowsRemovedSignals);
}
- // The row count should only change *after* rowsAboutToBeRemoved has been emited
+ // The row count should only change *after* rowsAboutToBeRemoved has been emitted
//qDebug() << beforeRemoveRowCount << afterAboutToRemoveRowCount << afterRemoveRowCount << currentModel->rowCount(parentOfRemoved);
if (shouldSucceed) {
if (modelResetSpy.count() == 0 && modelLayoutChangedSpy.count() == 0){
@@ -978,7 +978,7 @@ void tst_QItemModel::remove()
QCOMPARE(rowsRemovedSpy.count(), numberOfRowsRemovedSignals);
}
- // The column count should only change *after* rowsAboutToBeRemoved has been emited
+ // The column count should only change *after* rowsAboutToBeRemoved has been emitted
if (shouldSucceed) {
if (modelResetSpy.count() == 0 && modelLayoutChangedSpy.count() == 0){
QCOMPARE(afterAboutToRemoveColumnCount, beforeRemoveColumnCount);
@@ -1160,7 +1160,7 @@ void tst_QItemModel::insert_data()
makeTestRow(":valid start, invalid count", MIDDLE, -2, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
makeTestRow(":valid start, invalid count", END, -2, NOSIGNALS, NOSIGNALS, NOSIGNALS, NOSIGNALS, !RECURSIVE, 0, 0, FAIL);
- // Recursive insert's might assert, havn't decided yet...
+ // Recursive insert's might assert, haven't decided yet...
//makeTestRow(":one at the start recursivly", START, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, FAIL);
//makeTestRow(":one at the middle recursivly", MIDDLE, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, SUCCESS);
//makeTestRow(":one at the end recursivly", END, DEFAULTCOUNT, 2, DNS, 2, DNS, RECURSIVE, START, DEFAULTCOUNT, SUCCESS);
@@ -1191,7 +1191,7 @@ void tst_QItemModel::insert()
QFETCH(bool, shouldSucceed);
// Populate the test area so we can insert something. See: cleanup()
- // parentOfInserted is stored so that the slots can make sure parentOfInserted is the index that is emited.
+ // parentOfInserted is stored so that the slots can make sure parentOfInserted is the index that is emitted.
parentOfInserted = testModels->populateTestArea(currentModel);
if (count == -1)
@@ -1208,7 +1208,7 @@ void tst_QItemModel::insert()
//qDebug() << "insert start:" << start << "count:" << count << "rowCount:" << currentModel->rowCount(parentOfInserted);
// When a row or column is inserted there should be two signals.
- // Watch to make sure they are emited and get the row/column count when they do get emited by connecting them to a slot
+ // Watch to make sure they are emitted and get the row/column count when they do get emitted by connecting them to a slot
qRegisterMetaType<QModelIndex>("QModelIndex");
QSignalSpy columnsAboutToBeInsertedSpy(currentModel, SIGNAL(columnsAboutToBeInserted( const QModelIndex &, int , int )));
QSignalSpy rowsAboutToBeInsertedSpy(currentModel, SIGNAL(rowsAboutToBeInserted( const QModelIndex &, int , int )));
@@ -1253,7 +1253,7 @@ void tst_QItemModel::insert()
QVERIFY(parentOfInserted == parent);
}
- // Only the row signals should have been emited
+ // Only the row signals should have been emitted
if (modelResetSpy.count() >= 1 || modelLayoutChangedSpy.count() >= 1) {
QCOMPARE(columnsAboutToBeInsertedSpy.count(), 0);
QCOMPARE(rowsAboutToBeInsertedSpy.count(), 0);
@@ -1266,7 +1266,7 @@ void tst_QItemModel::insert()
QCOMPARE(columnsInsertedSpy.count(), 0);
QCOMPARE(rowsInsertedSpy.count(), numberOfRowsInsertedSignals);
}
- // The row count should only change *after* rowsAboutToBeInserted has been emited
+ // The row count should only change *after* rowsAboutToBeInserted has been emitted
//qDebug() << beforeInsertRowCount << afterAboutToInsertRowCount << afterInsertRowCount << currentModel->rowCount(parentOfInserted);
if (shouldSucceed) {
if (modelResetSpy.count() == 0 && modelLayoutChangedSpy.count() == 0) {
@@ -1315,7 +1315,7 @@ void tst_QItemModel::insert()
QCOMPARE(columnsInsertedSpy.count(), numberOfColumnsInsertedSignals);
QCOMPARE(rowsInsertedSpy.count(), numberOfRowsInsertedSignals);
}
- // The column count should only change *after* rowsAboutToBeInserted has been emited
+ // The column count should only change *after* rowsAboutToBeInserted has been emitted
if (shouldSucceed) {
if (modelResetSpy.count() == 0 && modelLayoutChangedSpy.count() == 0) {
QCOMPARE(afterAboutToInsertColumnCount, beforeInsertColumnCount);
diff --git a/tests/auto/qitemview/tst_qitemview.cpp b/tests/auto/qitemview/tst_qitemview.cpp
index 1f43568..b957f73 100644
--- a/tests/auto/qitemview/tst_qitemview.cpp
+++ b/tests/auto/qitemview/tst_qitemview.cpp
@@ -86,7 +86,7 @@ bool qt_wince_is_mobile() {
See viewstotest.cpp for instructions on how to have your view tested with these tests.
Each test such as visualRect have a _data() function which populate the QTest data with
- tests specified by viewstotest.cpp and any extra data needed for that perticular test.
+ tests specified by viewstotest.cpp and any extra data needed for that particular test.
setupWithNoTestData() fills QTest data with only the tests it is used by most tests.
@@ -324,7 +324,7 @@ void tst_QItemView::nonDestructiveBasicTest_data()
}
/*!
- nonDestructiveBasicTest trys to call a number of the basic functions (not all)
+ nonDestructiveBasicTest tries to call a number of the basic functions (not all)
to make sure the view doesn't segfault, testing the functions that makes sense.
*/
void tst_QItemView::nonDestructiveBasicTest()
diff --git a/tests/auto/qkeysequence/tst_qkeysequence.cpp b/tests/auto/qkeysequence/tst_qkeysequence.cpp
index 517e44f..5753fb8 100644
--- a/tests/auto/qkeysequence/tst_qkeysequence.cpp
+++ b/tests/auto/qkeysequence/tst_qkeysequence.cpp
@@ -291,7 +291,7 @@ void tst_QKeySequence::checkMultipleCodes()
}
/*
-* We must ensure that the keyBindings data is allways sorted
+* We must ensure that the keyBindings data is always sorted
* so that we can safely perform binary searches.
*/
void tst_QKeySequence::ensureSorted()
diff --git a/tests/auto/qlistview/tst_qlistview.cpp b/tests/auto/qlistview/tst_qlistview.cpp
index 3830069..3c4b05b 100644
--- a/tests/auto/qlistview/tst_qlistview.cpp
+++ b/tests/auto/qlistview/tst_qlistview.cpp
@@ -979,7 +979,7 @@ void tst_QListView::selection_data()
<< IntList(); // expected items
#if defined(Q_OS_WINCE)
- // depending on wether the display is double-pixeld, we need
+ // depending on whether the display is double-pixeld, we need
// to click at a different position
bool doubledSize = false;
int dpi = GetDeviceCaps(GetDC(0), LOGPIXELSX);
diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp
index d99df95..d78f962 100644
--- a/tests/auto/qmenu/tst_qmenu.cpp
+++ b/tests/auto/qmenu/tst_qmenu.cpp
@@ -306,7 +306,7 @@ void tst_QMenu::mouseActivation()
QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.rect().center(), 300);
QVERIFY(!menu.isVisible());
- //context menus can allways be accessed with right click except on windows
+ //context menus can always be accessed with right click except on windows
menu.show();
QTest::mouseClick(&menu, Qt::RightButton, 0, menu.rect().center(), 300);
QVERIFY(!menu.isVisible());
diff --git a/tests/auto/qnetworkreply/test/test.pro b/tests/auto/qnetworkreply/test/test.pro
index d1f6707..5c9bbdd 100644
--- a/tests/auto/qnetworkreply/test/test.pro
+++ b/tests/auto/qnetworkreply/test/test.pro
@@ -31,6 +31,6 @@ symbian:{
# Symbian toolchain does not support correct include semantics
INCLUDEPATH+=..\\..\\..\\..\\include\\QtNetwork\\private
# bigfile test case requires more heap
- TARGET.EPOCHEAPSIZE="0x100 0x10000000"
+ TARGET.EPOCHEAPSIZE="0x100 0x1000000"
TARGET.CAPABILITY="ALL -TCB"
}
diff --git a/tests/auto/qprinterinfo/tst_qprinterinfo.cpp b/tests/auto/qprinterinfo/tst_qprinterinfo.cpp
index 582fd46..7e5da4a 100644
--- a/tests/auto/qprinterinfo/tst_qprinterinfo.cpp
+++ b/tests/auto/qprinterinfo/tst_qprinterinfo.cpp
@@ -292,7 +292,7 @@ void tst_QPrinterInfo::testForPrinters()
for (int i = 0; i < sysPrinters.size(); ++i) {
if (!qtPrinters.value(sysPrinters.at(i))) {
- qDebug() << "Avaliable printers: " << qtPrinters;
+ qDebug() << "Available printers: " << qtPrinters;
QFAIL(qPrintable(QString("Printer '%1' reported by system, but not reported by Qt").arg(sysPrinters.at(i))));
}
}
diff --git a/tests/auto/qpushbutton/tst_qpushbutton.cpp b/tests/auto/qpushbutton/tst_qpushbutton.cpp
index 8fcd1bf..7742f6b 100644
--- a/tests/auto/qpushbutton/tst_qpushbutton.cpp
+++ b/tests/auto/qpushbutton/tst_qpushbutton.cpp
@@ -382,7 +382,7 @@ void tst_QPushButton::toggled()
testWidget->toggle();
QVERIFY( toggle_count == 0 );
- // do it again, just to be shure
+ // do it again, just to be sure
resetCounters();
testWidget->toggle();
QVERIFY( toggle_count == 0 );
diff --git a/tests/auto/qshortcut/tst_qshortcut.cpp b/tests/auto/qshortcut/tst_qshortcut.cpp
index 01b6b87..a78e8cf 100644
--- a/tests/auto/qshortcut/tst_qshortcut.cpp
+++ b/tests/auto/qshortcut/tst_qshortcut.cpp
@@ -1030,7 +1030,7 @@ void tst_QShortcut::context()
other1->clear();
other2->clear();
- // edit doens't have focus, so ActiveWindow context should work
+ // edit doesn't have focus, so ActiveWindow context should work
// ..but Focus context shouldn't..
// Changing focus to edit should make focus context work
// Application context should always work
diff --git a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index 613c611..30589a8 100644
--- a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -149,6 +149,7 @@ private slots:
void testMultipleProxiesWithSelection();
void mapSelectionFromSource();
+ void testResetInternalData();
void filteredColumns();
protected:
@@ -3271,5 +3272,142 @@ void tst_QSortFilterProxyModel::taskQTBUG_17812_resetInvalidate()
QCOMPARE(ok, works);
}
+/**
+ * A proxy which changes the background color for items ending in 'y' or 'r'
+ */
+class CustomDataProxy : public QSortFilterProxyModel
+{
+ Q_OBJECT
+
+public:
+ CustomDataProxy(QObject *parent = 0)
+ : QSortFilterProxyModel(parent)
+ {
+ setDynamicSortFilter(true);
+ }
+
+ void setSourceModel(QAbstractItemModel *sourceModel)
+ {
+ // It would be possible to use only the modelReset signal of the source model to clear
+ // the data in *this, however, this requires that the slot is connected
+ // before QSortFilterProxyModel::setSourceModel is called, and even then depends
+ // on the order of invokation of slots being the same as the order of connection.
+ // ie, not reliable.
+// connect(sourceModel, SIGNAL(modelReset()), SLOT(resetInternalData()));
+ QSortFilterProxyModel::setSourceModel(sourceModel);
+ // Making the connect after the setSourceModel call clears the data too late.
+// connect(sourceModel, SIGNAL(modelReset()), SLOT(resetInternalData()));
+
+ // This could be done in data(), but the point is to need to cache something in the proxy
+ // which needs to be cleared on reset.
+ for (int i = 0; i < sourceModel->rowCount(); ++i)
+ {
+ if (sourceModel->index(i, 0).data().toString().endsWith(QLatin1Char('y')))
+ {
+ m_backgroundColours.insert(i, Qt::blue);
+ } else if (sourceModel->index(i, 0).data().toString().endsWith(QLatin1Char('r')))
+ {
+ m_backgroundColours.insert(i, Qt::red);
+ }
+ }
+ }
+
+ QVariant data(const QModelIndex &index, int role) const
+ {
+ if (role != Qt::BackgroundRole)
+ return QSortFilterProxyModel::data(index, role);
+ return m_backgroundColours.value(index.row());
+ }
+
+private slots:
+ void resetInternalData()
+ {
+ m_backgroundColours.clear();
+ }
+
+private:
+ QHash<int, QColor> m_backgroundColours;
+};
+
+class ModelObserver : public QObject
+{
+ Q_OBJECT
+public:
+ ModelObserver(QAbstractItemModel *model, QObject *parent = 0)
+ : QObject(parent), m_model(model)
+ {
+ connect(m_model, SIGNAL(modelAboutToBeReset()), SLOT(modelAboutToBeReset()));
+ connect(m_model, SIGNAL(modelReset()), SLOT(modelReset()));
+ }
+
+public slots:
+ void modelAboutToBeReset()
+ {
+ int reds = 0, blues = 0;
+ for (int i = 0; i < m_model->rowCount(); ++i)
+ {
+ QColor color = m_model->index(i, 0).data(Qt::BackgroundRole).value<QColor>();
+ if (color == Qt::blue)
+ ++blues;
+ if (color == Qt::red)
+ ++reds;
+ }
+ QCOMPARE(blues, 11);
+ QCOMPARE(reds, 4);
+ }
+
+ void modelReset()
+ {
+ int reds = 0, blues = 0;
+ for (int i = 0; i < m_model->rowCount(); ++i)
+ {
+ QColor color = m_model->index(i, 0).data(Qt::BackgroundRole).value<QColor>();
+ if (color == Qt::blue)
+ ++blues;
+ if (color == Qt::red)
+ ++reds;
+ }
+ QCOMPARE(reds, 0);
+ QCOMPARE(blues, 0);
+ }
+
+private:
+ QAbstractItemModel * const m_model;
+
+};
+
+void tst_QSortFilterProxyModel::testResetInternalData()
+{
+
+ QStringListModel model(QStringList() << "Monday"
+ << "Tuesday"
+ << "Wednesday"
+ << "Thursday"
+ << "Friday"
+ << "January"
+ << "February"
+ << "March"
+ << "April"
+ << "May"
+ << "Saturday"
+ << "June"
+ << "Sunday"
+ << "July"
+ << "August"
+ << "September"
+ << "October"
+ << "November"
+ << "December");
+
+ CustomDataProxy proxy;
+ proxy.setSourceModel(&model);
+
+ ModelObserver observer(&proxy);
+
+ // Cause the source model to reset.
+ model.setStringList(QStringList() << "Spam" << "Eggs");
+
+}
+
QTEST_MAIN(tst_QSortFilterProxyModel)
#include "tst_qsortfilterproxymodel.moc"
diff --git a/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
index 45c6269..edc81bc 100644
--- a/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+++ b/tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
@@ -218,7 +218,7 @@ void tst_QSqlRelationalTableModel::data()
QCOMPARE(model.data(model.index(0, 1)).toString(), QString("harry"));
QCOMPARE(model.data(model.index(0, 2)).toString(), QString("herr"));
- //try a non-existant index
+ //try a non-existent index
QVERIFY2(model.data(model.index(0,4)).isValid() == false,"Invalid index returned valid QVariant");
//check data retrieval when relational key is a non-integer type
diff --git a/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp b/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp
index 0700e9d..96a1f1c 100644
--- a/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp
+++ b/tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp
@@ -1293,7 +1293,7 @@ void tst_QSqlTableModel::tableModifyWithBlank()
QCOMPARE(model.rowCount(), 1); //verify only one entry
QCOMPARE(model.record(0).value(0).toString(), timeString); //verify correct record
- //At this point we know that the intial value (timestamp) was succsefully stored in the database
+ //At this point we know that the initial value (timestamp) was succsefully stored in the database
//Attempt to modify the data in the new record
//equivalent to query.exec("update test set column3="... command in direct test
//set the data in the first column to "col1ModelData"
diff --git a/tests/auto/qsslsocket/tst_qsslsocket.cpp b/tests/auto/qsslsocket/tst_qsslsocket.cpp
index 5a5bdcc..5114b2a 100644
--- a/tests/auto/qsslsocket/tst_qsslsocket.cpp
+++ b/tests/auto/qsslsocket/tst_qsslsocket.cpp
@@ -1991,9 +1991,9 @@ void tst_QSslSocket::writeBigChunk()
qWarning() << socket->error() << socket->errorString();
QFAIL("Error while writing! Check if the OpenSSL BIO size is limited?!");
}
- // also check the error string. If another error (than UnknownError) occured, it should be different than before
+ // also check the error string. If another error (than UnknownError) occurred, it should be different than before
QVERIFY(errorBefore == errorAfter);
-
+
// check that everything has been written to OpenSSL
QVERIFY(socket->bytesToWrite() == 0);
diff --git a/tests/auto/qstatictext/tst_qstatictext.cpp b/tests/auto/qstatictext/tst_qstatictext.cpp
index e14c9db..704f19b 100644
--- a/tests/auto/qstatictext/tst_qstatictext.cpp
+++ b/tests/auto/qstatictext/tst_qstatictext.cpp
@@ -96,6 +96,9 @@ private slots:
void drawUnderlinedText();
void unprintableCharacter_qtbug12614();
+
+ void underlinedColor_qtbug20159();
+ void textDocumentColor();
};
void tst_QStaticText::init()
@@ -783,5 +786,42 @@ void tst_QStaticText::unprintableCharacter_qtbug12614()
QVERIFY(staticText.size().isValid()); // Force layout. Should not crash.
}
+void tst_QStaticText::underlinedColor_qtbug20159()
+{
+ QString multiScriptText;
+ multiScriptText += QChar(0x0410); // Cyrillic 'A'
+ multiScriptText += QLatin1Char('A');
+
+ QStaticText staticText(multiScriptText);
+
+ QFont font;
+ font.setUnderline(true);
+
+ staticText.prepare(QTransform(), font);
+
+ QStaticTextPrivate *d = QStaticTextPrivate::get(&staticText);
+ QCOMPARE(d->itemCount, 2);
+
+ // The pen should not be marked as dirty when drawing the underline
+ QVERIFY(!d->items[0].color.isValid());
+ QVERIFY(!d->items[1].color.isValid());
+}
+
+void tst_QStaticText::textDocumentColor()
+{
+ QStaticText staticText("A<font color=\"red\">B</font>");
+ staticText.setTextFormat(Qt::RichText);
+ staticText.prepare();
+
+ QStaticTextPrivate *d = QStaticTextPrivate::get(&staticText);
+ QCOMPARE(d->itemCount, 2);
+
+ // The pen should not be marked as dirty when drawing the underline
+ QVERIFY(!d->items[0].color.isValid());
+ QVERIFY(d->items[1].color.isValid());
+
+ QCOMPARE(d->items[1].color, QColor(Qt::red));
+}
+
QTEST_MAIN(tst_QStaticText)
#include "tst_qstatictext.moc"
diff --git a/tests/auto/qtabwidget/tst_qtabwidget.cpp b/tests/auto/qtabwidget/tst_qtabwidget.cpp
index cc3dfc1..77ae27f 100644
--- a/tests/auto/qtabwidget/tst_qtabwidget.cpp
+++ b/tests/auto/qtabwidget/tst_qtabwidget.cpp
@@ -44,6 +44,7 @@
#include <qtabwidget.h>
#include <qdebug.h>
#include <qapplication.h>
+#include <private/qapplication_p.h>
#include <qlabel.h>
#include <QtGui/qboxlayout.h>
@@ -618,6 +619,10 @@ void tst_QTabWidget::paintEventCount()
QTest::qWait(100);
QCOMPARE(tab1->count, initalPaintCount);
+#if defined(QT_MAC_USE_COCOA)
+ if (QApplicationPrivate::graphics_system_name != QLatin1String("raster"))
+ QEXPECT_FAIL(0, "Cocoa sends an extra updates when the view is shown", Abort);
+#endif
QCOMPARE(tab2->count, 1);
tw->setCurrentIndex(0);
diff --git a/tests/auto/qtcpsocket/test/test.pro b/tests/auto/qtcpsocket/test/test.pro
index 7bf5ba0..404d5c0 100644
--- a/tests/auto/qtcpsocket/test/test.pro
+++ b/tests/auto/qtcpsocket/test/test.pro
@@ -12,7 +12,7 @@ QT += network
vxworks:QT -= gui
symbian: {
- TARGET.EPOCHEAPSIZE="0x100 0x3000000"
+ TARGET.EPOCHEAPSIZE="0x100 0x1000000"
TARGET.CAPABILITY = NetworkServices ReadUserData
}
diff --git a/tests/auto/qtextformat/tst_qtextformat.cpp b/tests/auto/qtextformat/tst_qtextformat.cpp
index d70df6b..b235b11 100644
--- a/tests/auto/qtextformat/tst_qtextformat.cpp
+++ b/tests/auto/qtextformat/tst_qtextformat.cpp
@@ -226,7 +226,7 @@ void tst_QTextFormat::resolveFont()
QVERIFY(fmt.font().underline());
QVERIFY(!fmt.hasProperty(QTextFormat::FontUnderline));
- // verify that deleting a non-existant property does not affect the font resolving
+ // verify that deleting a non-existent property does not affect the font resolving
QVERIFY(!fmt.hasProperty(QTextFormat::BackgroundBrush));
fmt.clearProperty(QTextFormat::BackgroundBrush);
@@ -235,7 +235,7 @@ void tst_QTextFormat::resolveFont()
QVERIFY(!fmt.hasProperty(QTextFormat::FontUnderline));
QVERIFY(fmt.font().underline());
- // verify that deleting an existant but font _unrelated_ property does not affect the font resolving
+ // verify that deleting an existent but font _unrelated_ property does not affect the font resolving
QVERIFY(fmt.hasProperty(QTextFormat::ForegroundBrush));
fmt.clearProperty(QTextFormat::ForegroundBrush);
diff --git a/tests/auto/qtipc/qsharedmemory/src/qsystemlock.cpp b/tests/auto/qtipc/qsharedmemory/src/qsystemlock.cpp
index f50bcd2..b48bd7b 100644
--- a/tests/auto/qtipc/qsharedmemory/src/qsystemlock.cpp
+++ b/tests/auto/qtipc/qsharedmemory/src/qsystemlock.cpp
@@ -124,7 +124,7 @@
systemLock.unlock();
}
- If this is called from two seperate processes the resulting log file is
+ If this is called from two separate processes the resulting log file is
guaranteed to contain both lines.
When you call lock(), other threads or processes that try to call lock()
diff --git a/tests/auto/qudpsocket/tst_qudpsocket.cpp b/tests/auto/qudpsocket/tst_qudpsocket.cpp
index a38082e..beac0e8 100644
--- a/tests/auto/qudpsocket/tst_qudpsocket.cpp
+++ b/tests/auto/qudpsocket/tst_qudpsocket.cpp
@@ -708,7 +708,7 @@ void tst_QUdpSocket::bindMode()
// Depending on the user's privileges, this or will succeed or
// fail. Admins are allowed to reuse the address, but nobody else.
if (!socket2.bind(socket.localPort(), QUdpSocket::ReuseAddressHint), socket2.errorString().toLatin1().constData())
- qWarning("Failed to bind with QUdpSocket::ReuseAddressHint, user isn't an adminstrator?");
+ qWarning("Failed to bind with QUdpSocket::ReuseAddressHint, user isn't an administrator?");
socket.close();
QVERIFY2(socket.bind(0, QUdpSocket::ShareAddress), socket.errorString().toLatin1().constData());
QVERIFY(!socket2.bind(socket.localPort()));
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp
index b78679b..2fa193a 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/qurl/tst_qurl.cpp
@@ -201,10 +201,9 @@ private slots:
void task_240612();
void taskQTBUG_6962();
void taskQTBUG_8701();
+ void removeAllEncodedQueryItems_data();
+ void removeAllEncodedQueryItems();
-#ifdef QT3_SUPPORT
- void dirPath();
-#endif
};
// Testing get/set functions
@@ -4031,5 +4030,28 @@ void tst_QUrl::effectiveTLDs()
QCOMPARE(domain.topLevelDomain(), TLD);
}
+void tst_QUrl::removeAllEncodedQueryItems_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<QByteArray>("key");
+ QTest::addColumn<QUrl>("result");
+
+ QTest::newRow("test1") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b&ccc=c") << QByteArray("bbb") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&ccc=c");
+ QTest::newRow("test2") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b&ccc=c") << QByteArray("aaa") << QUrl::fromEncoded("http://qt.nokia.com/foo?bbb=b&ccc=c");
+// QTest::newRow("test3") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b&ccc=c") << QByteArray("ccc") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b");
+ QTest::newRow("test4") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b&ccc=c") << QByteArray("b%62b") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&bbb=b&ccc=c");
+ QTest::newRow("test5") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&b%62b=b&ccc=c") << QByteArray("b%62b") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&ccc=c");
+ QTest::newRow("test6") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&b%62b=b&ccc=c") << QByteArray("bbb") << QUrl::fromEncoded("http://qt.nokia.com/foo?aaa=a&b%62b=b&ccc=c");
+}
+
+void tst_QUrl::removeAllEncodedQueryItems()
+{
+ QFETCH(QUrl, url);
+ QFETCH(QByteArray, key);
+ QFETCH(QUrl, result);
+ url.removeAllEncodedQueryItems(key);
+ QCOMPARE(url, result);
+}
+
QTEST_MAIN(tst_QUrl)
#include "tst_qurl.moc"
diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index 86773ad..ee06b53 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -4054,6 +4054,11 @@ public:
*/
void tst_QWidget::optimizedResizeMove()
{
+#if defined(QT_MAC_USE_COCOA)
+ if (QApplicationPrivate::graphics_system_name != QLatin1String("raster"))
+ QSKIP("WA_StaticContents in Cocoa/Native paint engine lacks support", SkipAll);
+#endif
+
QWidget parent;
parent.resize(400, 400);
@@ -8260,6 +8265,10 @@ void tst_QWidget::doubleRepaint()
QCOMPARE(widget.numPaintEvents, 0);
widget.numPaintEvents = 0;
+#if defined(QT_MAC_USE_COCOA)
+ if (QApplicationPrivate::graphics_system_name != QLatin1String("raster"))
+ QEXPECT_FAIL(0, "Cocoa will send us an update when showing the window", Continue);
+#endif
// Restore: Should not trigger a repaint.
widget.showNormal();
QTest::qWaitForWindowShown(&widget);
@@ -8369,6 +8378,11 @@ public slots:
void tst_QWidget::setMaskInResizeEvent()
{
+#if defined(QT_MAC_USE_COCOA)
+ if (QApplicationPrivate::graphics_system_name != QLatin1String("raster"))
+ QSKIP("Updates on masked widgets are not optimized for Cocoa/native paint engine", SkipAll);
+#endif
+
UpdateWidget w;
w.reset();
w.resize(200, 200);
@@ -9043,6 +9057,11 @@ void tst_QWidget::setClearAndResizeMask()
void tst_QWidget::maskedUpdate()
{
+#if defined(QT_MAC_USE_COCOA)
+ if (QApplicationPrivate::graphics_system_name != QLatin1String("raster"))
+ QSKIP("Updates on masked widgets are not optimized for Cocoa/native paint engine", SkipAll);
+#endif
+
UpdateWidget topLevel;
topLevel.resize(200, 200);
const QRegion topLevelMask(50, 50, 70, 70);
diff --git a/tools/linguist/tests/tst_lupdate.cpp b/tools/linguist/tests/tst_lupdate.cpp
index eb6e865..21d83ef 100644
--- a/tools/linguist/tests/tst_lupdate.cpp
+++ b/tools/linguist/tests/tst_lupdate.cpp
@@ -118,7 +118,7 @@ void tst_linguist::fetchtr()
//qDebug() << "resname:" << resname;
////qDebug() << "resfile:" << resfile;
//qDebug() << "resline:" << resline;
- //qDebug() << "ressource:" << ressrc;
+ //qDebug() << "resource:" << ressrc;
QCOMPARE(src + ": " + resname, src + ": " + name);
QCOMPARE(src + ": " + resline, src + ": " + line);