summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xconfigure80
-rw-r--r--doc/global/externalsites/qt-webpages.qdoc5
-rw-r--r--doc/global/manifest-meta.qdocconf1
-rw-r--r--examples/widgets/doc/src/collidingmice-example.qdoc54
-rw-r--r--mkspecs/features/dbuscommon.pri2
-rw-r--r--mkspecs/features/qt_functions.prf5
-rw-r--r--mkspecs/wince50standard-armv4i-msvc2005/default_post.prf7
-rw-r--r--mkspecs/wince50standard-armv4i-msvc2005/qmake.conf23
-rw-r--r--mkspecs/wince50standard-armv4i-msvc2005/qplatformdefs.h43
-rw-r--r--mkspecs/wince50standard-armv4i-msvc2008/default_post.prf1
-rw-r--r--mkspecs/wince50standard-armv4i-msvc2008/qmake.conf3
-rw-r--r--mkspecs/wince50standard-armv4i-msvc2008/qplatformdefs.h43
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2005/default_post.prf7
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2005/qmake.conf24
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2005/qplatformdefs.h43
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2008/default_post.prf1
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2008/qmake.conf3
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2008/qplatformdefs.h43
-rw-r--r--mkspecs/wince50standard-mipsiv-msvc2005/qmake.conf24
-rw-r--r--mkspecs/wince50standard-mipsiv-msvc2005/qplatformdefs.h43
-rw-r--r--mkspecs/wince50standard-mipsiv-msvc2008/qmake.conf3
-rw-r--r--mkspecs/wince50standard-mipsiv-msvc2008/qplatformdefs.h43
-rw-r--r--mkspecs/wince50standard-sh4-msvc2005/qmake.conf23
-rw-r--r--mkspecs/wince50standard-sh4-msvc2005/qplatformdefs.h43
-rw-r--r--mkspecs/wince50standard-sh4-msvc2008/qmake.conf3
-rw-r--r--mkspecs/wince50standard-sh4-msvc2008/qplatformdefs.h43
-rw-r--r--mkspecs/wince50standard-x86-msvc2005/default_post.prf6
-rw-r--r--mkspecs/wince50standard-x86-msvc2005/qmake.conf21
-rw-r--r--mkspecs/wince50standard-x86-msvc2005/qplatformdefs.h43
-rw-r--r--mkspecs/wince50standard-x86-msvc2008/default_post.prf1
-rw-r--r--mkspecs/wince50standard-x86-msvc2008/qmake.conf3
-rw-r--r--mkspecs/wince50standard-x86-msvc2008/qplatformdefs.h43
-rw-r--r--mkspecs/wince70embedded-armv4i-msvc2008/default_post.prf1
-rw-r--r--mkspecs/wince70embedded-x86-msvc2008/default_post.prf1
-rw-r--r--mkspecs/wincewm50pocket-msvc2005/default_post.prf7
-rw-r--r--mkspecs/wincewm50pocket-msvc2005/qmake.conf21
-rw-r--r--mkspecs/wincewm50pocket-msvc2005/qplatformdefs.h43
-rw-r--r--mkspecs/wincewm50pocket-msvc2008/default_post.prf1
-rw-r--r--mkspecs/wincewm50pocket-msvc2008/qmake.conf3
-rw-r--r--mkspecs/wincewm50pocket-msvc2008/qplatformdefs.h43
-rw-r--r--mkspecs/wincewm50smart-msvc2005/default_post.prf7
-rw-r--r--mkspecs/wincewm50smart-msvc2005/qmake.conf21
-rw-r--r--mkspecs/wincewm50smart-msvc2005/qplatformdefs.h43
-rw-r--r--mkspecs/wincewm50smart-msvc2008/default_post.prf1
-rw-r--r--mkspecs/wincewm50smart-msvc2008/qmake.conf3
-rw-r--r--mkspecs/wincewm50smart-msvc2008/qplatformdefs.h43
-rw-r--r--mkspecs/wincewm60professional-msvc2005/default_post.prf7
-rw-r--r--mkspecs/wincewm60professional-msvc2005/qmake.conf13
-rw-r--r--mkspecs/wincewm60professional-msvc2005/qplatformdefs.h43
-rw-r--r--mkspecs/wincewm60professional-msvc2008/default_post.prf1
-rw-r--r--mkspecs/wincewm60professional-msvc2008/qmake.conf3
-rw-r--r--mkspecs/wincewm60professional-msvc2008/qplatformdefs.h43
-rw-r--r--mkspecs/wincewm60standard-msvc2005/default_post.prf7
-rw-r--r--mkspecs/wincewm60standard-msvc2005/qmake.conf18
-rw-r--r--mkspecs/wincewm60standard-msvc2005/qplatformdefs.h43
-rw-r--r--mkspecs/wincewm60standard-msvc2008/default_post.prf1
-rw-r--r--mkspecs/wincewm60standard-msvc2008/qmake.conf3
-rw-r--r--mkspecs/wincewm60standard-msvc2008/qplatformdefs.h43
-rw-r--r--mkspecs/wincewm65professional-msvc2005/default_post.prf1
-rw-r--r--mkspecs/wincewm65professional-msvc2005/qmake.conf5
-rw-r--r--mkspecs/wincewm65professional-msvc2005/qplatformdefs.h43
-rw-r--r--mkspecs/wincewm65professional-msvc2008/default_post.prf1
-rw-r--r--mkspecs/wincewm65professional-msvc2008/qmake.conf3
-rw-r--r--mkspecs/wincewm65professional-msvc2008/qplatformdefs.h43
-rw-r--r--qmake/Makefile.unix3
-rw-r--r--qmake/Makefile.win322
-rw-r--r--qmake/doc/snippets/code/doc_src_qmake-manual.pro61
-rw-r--r--qmake/doc/src/qmake-manual.qdoc74
-rw-r--r--qmake/generators/integrity/gbuild.cpp1
-rw-r--r--qmake/generators/mac/pbuilder_pbx.cpp6
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp2
-rw-r--r--qmake/qmake.pri2
-rw-r--r--src/angle/src/config.pri3
-rw-r--r--src/corelib/global/qlibraryinfo.cpp2
-rw-r--r--src/corelib/json/qjsonobject.cpp38
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp23
-rw-r--r--src/corelib/kernel/qobjectdefs_impl.h18
-rw-r--r--src/corelib/tools/qcryptographichash.cpp6
-rw-r--r--src/corelib/tools/qcryptographichash.h6
-rw-r--r--src/network/socket/qabstractsocket.cpp4
-rw-r--r--src/platformsupport/linuxaccessibility/atspiadaptor.cpp21
-rw-r--r--src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp195
-rw-r--r--src/plugins/platforminputcontexts/compose/generator/qtablegenerator.h22
-rw-r--r--src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.cpp6
-rw-r--r--src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.h2
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibility.mm3
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm3
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm6
-rw-r--r--src/plugins/platforms/windows/qtwindowsglobal.h5
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp41
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.h3
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_xi2.cpp8
-rw-r--r--src/src.pro6
-rw-r--r--src/testlib/qtestlog.cpp42
-rw-r--r--src/testlib/qtestmouse.h6
-rw-r--r--src/tools/moc/main.cpp2
-rw-r--r--src/tools/moc/moc.pro2
-rw-r--r--src/tools/qdoc/doc/qtgui-qdocconf.qdoc292
-rw-r--r--src/tools/uic/main.cpp2
-rw-r--r--src/widgets/itemviews/qheaderview.cpp24
-rw-r--r--src/widgets/itemviews/qheaderview_p.h2
-rw-r--r--src/widgets/widgets/qmdiarea.cpp2
-rw-r--r--tests/auto/corelib/tools/qpointf/tst_qpointf.cpp4
-rw-r--r--tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp18
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp11
-rw-r--r--tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp65
-rw-r--r--tests/auto/widgets/kernel/qwidget/qwidget.pro1
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp9
-rw-r--r--tests/manual/manual.pro1
-rw-r--r--tests/manual/shortcuts/main.cpp148
-rw-r--r--tests/manual/shortcuts/shortcuts.pro6
-rw-r--r--tools/configure/Makefile.mingw1
-rw-r--r--tools/configure/Makefile.win322
-rw-r--r--tools/configure/configureapp.cpp141
-rw-r--r--tools/configure/configureapp.h3
-rw-r--r--tools/configure/main.cpp5
117 files changed, 1238 insertions, 1416 deletions
diff --git a/configure b/configure
index 43eed32807..89426f27f4 100755
--- a/configure
+++ b/configure
@@ -384,6 +384,16 @@ filterLibraryOptions()
filterPathOptions -L "$DEFAULT_LIBDIRS"
}
+substPrefix()
+{
+ base=${1#$QT_SYSROOT_PREFIX}
+ if [ x"$base" != x"$1" ]; then
+ echo "$QT_EXT_PREFIX$base"
+ else
+ echo "$1"
+ fi
+}
+
#-------------------------------------------------------------------------------
# device options
#-------------------------------------------------------------------------------
@@ -1013,6 +1023,7 @@ QT_HOST_PREFIX=
QT_HOST_BINS=
QT_HOST_LIBS=
QT_HOST_DATA=
+QT_EXT_PREFIX=
#flags for SQL drivers
QT_CFLAGS_PSQL=
@@ -1138,6 +1149,7 @@ while [ "$#" -gt 0 ]; do
-hostdatadir| \
-hostbindir| \
-hostlibdir| \
+ -extprefix| \
-sysroot| \
-depths| \
-make| \
@@ -1346,6 +1358,9 @@ while [ "$#" -gt 0 ]; do
hostlibdir)
QT_HOST_LIBS="$VAL"
;;
+ extprefix)
+ QT_EXT_PREFIX="$VAL"
+ ;;
pkg-config)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_PKGCONFIG="$VAL"
@@ -3161,6 +3176,39 @@ if [ -z "$QT_INSTALL_TESTS" ]; then #default
fi
QT_INSTALL_TESTS=`"$relpath/config.tests/unix/makeabs" "$QT_INSTALL_TESTS"`
+#------- sysroot-external install paths --------
+
+QT_SYSROOT_PREFIX=$QT_INSTALL_PREFIX
+QT_SYSROOT_DOCS=$QT_INSTALL_DOCS
+QT_SYSROOT_HEADERS=$QT_INSTALL_HEADERS
+QT_SYSROOT_LIBS=$QT_INSTALL_LIBS
+QT_SYSROOT_LIBEXECS=$QT_INSTALL_LIBEXECS
+QT_SYSROOT_BINS=$QT_INSTALL_BINS
+QT_SYSROOT_PLUGINS=$QT_INSTALL_PLUGINS
+QT_SYSROOT_IMPORTS=$QT_INSTALL_IMPORTS
+QT_SYSROOT_QML=$QT_INSTALL_QML
+QT_SYSROOT_ARCHDATA=$QT_INSTALL_ARCHDATA
+QT_SYSROOT_DATA=$QT_INSTALL_DATA
+QT_SYSROOT_TRANSLATIONS=$QT_INSTALL_TRANSLATIONS
+QT_SYSROOT_EXAMPLES=$QT_INSTALL_EXAMPLES
+QT_SYSROOT_TESTS=$QT_INSTALL_TESTS
+if [ -n "$QT_EXT_PREFIX" ]; then
+ QT_INSTALL_PREFIX=$QT_EXT_PREFIX
+ QT_INSTALL_DOCS=`substPrefix "$QT_INSTALL_DOCS"`
+ QT_INSTALL_HEADERS=`substPrefix "$QT_INSTALL_HEADERS"`
+ QT_INSTALL_LIBS=`substPrefix "$QT_INSTALL_LIBS"`
+ QT_INSTALL_LIBEXECS=`substPrefix "$QT_INSTALL_LIBEXECS"`
+ QT_INSTALL_BINS=`substPrefix "$QT_INSTALL_BINS"`
+ QT_INSTALL_PLUGINS=`substPrefix "$QT_INSTALL_PLUGINS"`
+ QT_INSTALL_IMPORTS=`substPrefix "$QT_INSTALL_IMPORTS"`
+ QT_INSTALL_QML=`substPrefix "$QT_INSTALL_QML"`
+ QT_INSTALL_ARCHDATA=`substPrefix "$QT_INSTALL_ARCHDATA"`
+ QT_INSTALL_DATA=`substPrefix "$QT_INSTALL_DATA"`
+ QT_INSTALL_TRANSLATIONS=`substPrefix "$QT_INSTALL_TRANSLATIONS"`
+ QT_INSTALL_EXAMPLES=`substPrefix "$QT_INSTALL_EXAMPLES"`
+ QT_INSTALL_TESTS=`substPrefix "$QT_INSTALL_TESTS"`
+fi
+
#------- host paths --------
if [ -z "$QT_HOST_PREFIX" ]; then
@@ -3328,10 +3376,13 @@ Installation options:
-prefix <dir> ...... This will install everything relative to <dir>
(default $QT_INSTALL_PREFIX)
+ -extprefix <dir> ... When -sysroot is used, install everything to <dir>,
+ rather than into SYSROOT/PREFIX.
+
-hostprefix [dir] .. Tools and libraries needed when developing
applications are installed in [dir]. If [dir] is
not given, the current build directory will be used.
- (default PREFIX)
+ (default EXTPREFIX)
You may use these to separate different parts of the install:
@@ -3857,6 +3908,12 @@ esac
shortxspec=`echo $XQMAKESPEC | sed "s,^${relpath}/mkspecs/,,"`
shortspec=`echo $QMAKESPEC | sed "s,^${relpath}/mkspecs/,,"`
+if [ -z "$QT_EXT_PREFIX" ]; then
+ QMAKE_SYSROOTIFY=y
+else
+ QMAKE_SYSROOTIFY=n
+fi
+
cat > "$outpath/src/corelib/global/qconfig.cpp.new" <<EOF
/* License Info */
static const char qt_configure_licensee_str [256 + 12] = "qt_lcnsuser=$Licensee";
@@ -3867,6 +3924,22 @@ static const char qt_configure_installation [12+11] = "qt_instdate=`
/* Installation Info */
static const char qt_configure_prefix_path_strs[][256 + 12] = {
+#ifndef QT_BUILD_QMAKE
+ "qt_prfxpath=$QT_SYSROOT_PREFIX",
+ "qt_docspath=$QT_SYSROOT_DOCS",
+ "qt_hdrspath=$QT_SYSROOT_HEADERS",
+ "qt_libspath=$QT_SYSROOT_LIBS",
+ "qt_lbexpath=$QT_SYSROOT_LIBEXECS",
+ "qt_binspath=$QT_SYSROOT_BINS",
+ "qt_plugpath=$QT_SYSROOT_PLUGINS",
+ "qt_impspath=$QT_SYSROOT_IMPORTS",
+ "qt_qml2path=$QT_SYSROOT_QML",
+ "qt_adatpath=$QT_SYSROOT_ARCHDATA",
+ "qt_datapath=$QT_SYSROOT_DATA",
+ "qt_trnspath=$QT_SYSROOT_TRANSLATIONS",
+ "qt_xmplpath=$QT_SYSROOT_EXAMPLES",
+ "qt_tstspath=$QT_SYSROOT_TESTS",
+#else
"qt_prfxpath=$QT_INSTALL_PREFIX",
"qt_docspath=$QT_INSTALL_DOCS",
"qt_hdrspath=$QT_INSTALL_HEADERS",
@@ -3881,7 +3954,6 @@ static const char qt_configure_prefix_path_strs[][256 + 12] = {
"qt_trnspath=$QT_INSTALL_TRANSLATIONS",
"qt_xmplpath=$QT_INSTALL_EXAMPLES",
"qt_tstspath=$QT_INSTALL_TESTS",
-#ifdef QT_BUILD_QMAKE
"qt_ssrtpath=$CFG_SYSROOT",
"qt_hpfxpath=$QT_HOST_PREFIX",
"qt_hbinpath=$QT_HOST_BINS",
@@ -3892,6 +3964,10 @@ static const char qt_configure_prefix_path_strs[][256 + 12] = {
#endif
};
static const char qt_configure_settings_path_str[256 + 12] = "qt_stngpath=$QT_INSTALL_SETTINGS";
+
+#ifdef QT_BUILD_QMAKE
+static const char qt_sysrootify_prefix[] = "qt_ssrtfpfx=$QMAKE_SYSROOTIFY";
+#endif
EOF
cat >> "$outpath/src/corelib/global/qconfig.cpp.new" <<EOF
diff --git a/doc/global/externalsites/qt-webpages.qdoc b/doc/global/externalsites/qt-webpages.qdoc
index 1bb6228ed1..e94aee0980 100644
--- a/doc/global/externalsites/qt-webpages.qdoc
+++ b/doc/global/externalsites/qt-webpages.qdoc
@@ -105,3 +105,8 @@
\externalpage http://qt-project.org/wiki/Qt-Localization
\title external: Translating Qt Into Other Languages
*/
+
+/*!
+ \externalpage http://qt-project.org/wiki/BlackBerry
+ \title Qt for BlackBerry
+*/
diff --git a/doc/global/manifest-meta.qdocconf b/doc/global/manifest-meta.qdocconf
index ccf3622be9..6b55e0dbad 100644
--- a/doc/global/manifest-meta.qdocconf
+++ b/doc/global/manifest-meta.qdocconf
@@ -108,7 +108,6 @@ manifestmeta.android.names = "QtQuick/Qt Quick Demo - Maroon*" \
"QtWidgets/Regular Expressions Example" \
"QtWidgets/Colliding Mice Example" \
"QtWidgets/Basic Graphics Layouts Example" \
- "QtWidgets/Boxes" \
"QtWidgets/40000 Chips" \
"QtWidgets/Diagram Scene Example" \
"QtWidgets/Drag and Drop Robot Example" \
diff --git a/examples/widgets/doc/src/collidingmice-example.qdoc b/examples/widgets/doc/src/collidingmice-example.qdoc
index 09503b4b9a..563f76c1b7 100644
--- a/examples/widgets/doc/src/collidingmice-example.qdoc
+++ b/examples/widgets/doc/src/collidingmice-example.qdoc
@@ -48,7 +48,7 @@
application window.
We will first review the \c Mouse class to see how to animate
- items and detect item collision, and then we will review the \c
+ items and detect item collisions, and then we will review the \c
main() function to see how to put the items into a scene and how to
implement the corresponding view.
@@ -90,7 +90,7 @@
calling the item's \l {QGraphicsItem::setRotation()}{setRotation()} function
we alter the direction in which the mouse will start moving.
- When the QGraphicsScene decides to advance the scene a frame it will
+ When the QGraphicsScene decides to advance the scene by a frame, it will
call QGraphicsItem::advance() on each of the items. This enables us to
animate our mouse using our reimplementation of the advance() function.
@@ -98,10 +98,10 @@
\snippet graphicsview/collidingmice/mouse.cpp 5
\snippet graphicsview/collidingmice/mouse.cpp 6
- First, we don't bother doing any advance if the step is 0 since we want to our advance in
- the actual advance (advance() is called twice, once with step == 0 indicating that items
- are about to advance and with step == 1 for the actual advance). We also ensure that the
- mice stays within a circle with a radius of 150 pixels.
+ First, we don't bother doing any advance if the step is \c 0. This is because
+ advance() is called twice: once with step == \c 0, indicating that items
+ are about to advance, and then with step == \c 1 for the actual advance.
+ We also ensure that the mouse stays within a circle with a radius of 150 pixels.
Note the \l {QGraphicsItem::mapFromScene()}{mapFromScene()}
function provided by QGraphicsItem. This function maps a position
@@ -126,7 +126,7 @@
the parent's coordinate system. For items with no parent, the
given position is interpreted as scene coordinates. QGraphicsItem
also provides a \l {QGraphicsItem::}{mapToParent()} function to
- map a position given in item coordinates, to the parent's
+ map a position given in item coordinates to the parent's
coordinate system. If the item has no parent, the position will be
mapped to the scene's coordinate system instead.
@@ -140,7 +140,7 @@
defines the outer bounds of the item as a rectangle. Note that the
Graphics View framework uses the bounding rectangle to determine
whether the item requires redrawing, so all painting must be
- restricted inside this rectangle.
+ done inside this rectangle.
\snippet graphicsview/collidingmice/mouse.cpp 3
@@ -148,7 +148,7 @@
{QGraphicsItem::paint()}{paint()} function to paint the contents
of the item; the function paints the item in local coordinates.
- Note the painting of the ears: Whenever a mouse item collides with
+ Note the painting of the ears: whenever a mouse item collides with
other mice items its ears are filled with red; otherwise they are
filled with dark yellow. We use the
QGraphicsScene::collidingItems() function to check if there are
@@ -166,17 +166,15 @@
{QGraphicsItem::collidesWithItem()}{collidesWithItem()} function
to provide your own custom item and shape collision algorithm.
- This completes the \c Mouse class implementation, it is now ready
+ This completes the \c Mouse class implementation; it is now ready
for use. Let's take a look at the \c main() function to see how to
implement a scene for the mice and a view for displaying the
contents of the scene.
\section1 The Main() Function
- In this example we have chosen to let the \c main() function
- provide the main application window, creating the items and the
- scene, putting the items into the scene and creating a
- corresponding view.
+ The \c main() function provides the main application window,
+ as well as creating the items, their scene, and a corresponding view.
\snippet graphicsview/collidingmice/main.cpp 0
@@ -192,18 +190,18 @@
The QGraphicsScene class serves as a container for
QGraphicsItems. It also provides functionality that lets you
efficiently determine the location of items as well as determining
- which items that are visible within an arbitrary area on the
+ which items are visible within an arbitrary area on the
scene.
When creating a scene it is recommended to set the scene's
- rectangle, i.e., the rectangle that defines the extent of the
+ rectangle; the rectangle that defines the extent of the
scene. It is primarily used by QGraphicsView to determine the
view's default scrollable area, and by QGraphicsScene to manage
item indexing. If not explicitly set, the scene's default
rectangle will be the largest bounding rectangle of all the items
- on the scene since the scene was created (i.e., the rectangle will
- grow when items are added or moved in the scene, but it will never
- shrink).
+ on the scene since the scene was created. This means that the
+ rectangle will grow when items are added or moved in the scene,
+ but it will never shrink.
\snippet graphicsview/collidingmice/main.cpp 2
@@ -213,8 +211,8 @@
searched. Adding, moving and removing items, however, is done in
constant time. This approach is ideal for dynamic scenes, where
many items are added, moved or removed continuously. The
- alternative is \l {QGraphicsScene::BspTreeIndex}{BspTreeIndex}
- which makes use of binary search resulting in item location
+ alternative is \l {QGraphicsScene::BspTreeIndex}{BspTreeIndex},
+ which makes use of a binary search to achieve item location
algorithms that are of an order closer to logarithmic complexity.
\snippet graphicsview/collidingmice/main.cpp 3
@@ -223,9 +221,9 @@
\snippet graphicsview/collidingmice/main.cpp 4
- To be able to view the scene we must also create a QGraphicsView
+ To be able to view the scene, we must also create a QGraphicsView
widget. The QGraphicsView class visualizes the contents of a scene
- in a scrollable viewport. We also ensure that the contents is
+ in a scrollable viewport. We also ensure that the contents are
rendered using antialiasing, and we create the cheese background
by setting the view's background brush.
@@ -240,14 +238,14 @@
Then we set the cache mode; QGraphicsView can cache pre-rendered
content in a pixmap, which is then drawn onto the viewport. The
purpose of such caching is to speed up the total rendering time
- for areas that are slow to render, e.g., texture, gradient and
+ for areas that are slow to render, for example: texture, gradient, and
alpha blended backgrounds. The \l
{QGraphicsView::CacheMode}{CacheMode} property holds which parts
- of the view that are cached, and the \l
+ of the view are cached, and the \l
{QGraphicsView::CacheBackground}{CacheBackground} flag enables
caching of the view's background.
- By setting the \l {QGraphicsView::dragMode}{dragMode} property we
+ By setting the \l {QGraphicsView::dragMode}{dragMode} property, we
define what should happen when the user clicks on the scene
background and drags the mouse. The \l
{QGraphicsView::ScrollHandDrag}{ScrollHandDrag} flag makes the
@@ -264,9 +262,9 @@
advance() slot of the scene. Every time the timer fires, the scene
will advance one frame.
- We then tell the timer to fire every 1000/33 millisecond. This will
+ We then tell the timer to fire every 1000/33 milliseconds. This will
give us a frame rate of 30 frames a second, which is fast enough for most
- animations. Doing the animation with a single timer connect to advance the
+ animations. Doing the animation with a single timer connection to advance the
scene ensures that all the mice are moved at one point and, more
importantly, only one update is sent to the screen after all the mice have
moved.
diff --git a/mkspecs/features/dbuscommon.pri b/mkspecs/features/dbuscommon.pri
index 4608fb6ca2..6e1e5659c3 100644
--- a/mkspecs/features/dbuscommon.pri
+++ b/mkspecs/features/dbuscommon.pri
@@ -72,7 +72,7 @@ for(group, groups) {
$${group}_moc.output = $$moc_header.output
$${group}_moc.input = $${GROUP}_HEADERS
$${group}_moc.variable_out = GENERATED_SOURCES
- $${group}_moc.name = $$moc_header.name
+ $${group}_moc.name = $${GROUP}_$$moc_header.name
QMAKE_EXTRA_COMPILERS += $${group}_header $${group}_source $${group}_moc
}
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index f055be72a8..c8d151ce4d 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -303,6 +303,11 @@ defineReplace(pkgConfigExecutable) {
}
}
+ equals(QMAKE_HOST.os, Windows): \
+ PKG_CONFIG += 2> NUL
+ else: \
+ PKG_CONFIG += 2> /dev/null
+
return($$PKG_CONFIG)
}
diff --git a/mkspecs/wince50standard-armv4i-msvc2005/default_post.prf b/mkspecs/wince50standard-armv4i-msvc2005/default_post.prf
deleted file mode 100644
index 900d758cc3..0000000000
--- a/mkspecs/wince50standard-armv4i-msvc2005/default_post.prf
+++ /dev/null
@@ -1,7 +0,0 @@
-# Visual Studio has some definitions set internally.
-# Thus we do not need to redefine these.
-equals(TEMPLATE, "vc.*") {
- DEFINES -= _M_ARM
- QMAKE_CXXFLAGS += -fp:precise
-}
-
diff --git a/mkspecs/wince50standard-armv4i-msvc2005/qmake.conf b/mkspecs/wince50standard-armv4i-msvc2005/qmake.conf
deleted file mode 100644
index 5883c75579..0000000000
--- a/mkspecs/wince50standard-armv4i-msvc2005/qmake.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# qmake configuration for wince50standard-armv4i-msvc2005
-#
-# Written for Microsoft VC2005.NET with Standard SDK for WindowsCE 5.0 (ARMV4I)
-#
-include(../common/wince/qmake.conf)
-
-CE_SDK = STANDARDSDK_500
-CE_ARCH = ARMV4I
-
-DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM __arm__ Q_OS_WINCE_STD QT_NO_PRINTER QT_NO_PRINTDIALOG
-
-QMAKE_CFLAGS += -QRarch4T -QRinterwork-return
-
-QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:THUMB /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:THUMB
-QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:THUMB /DLL
-QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
-QMAKE_LIBFLAGS_RELEASE = /LTCG
-QMAKE_LIBS = corelibc.lib
-QMAKE_LIBS_CORE = corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib
-QMAKE_LIBS_GUI = ceshell.lib ole32.lib $$QMAKE_LIBS_CORE
-QMAKE_LIBS_NETWORK = ws2.lib
diff --git a/mkspecs/wince50standard-armv4i-msvc2005/qplatformdefs.h b/mkspecs/wince50standard-armv4i-msvc2005/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wince50standard-armv4i-msvc2005/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wince50standard-armv4i-msvc2008/default_post.prf b/mkspecs/wince50standard-armv4i-msvc2008/default_post.prf
deleted file mode 100644
index 778a2746d6..0000000000
--- a/mkspecs/wince50standard-armv4i-msvc2008/default_post.prf
+++ /dev/null
@@ -1 +0,0 @@
-include(../wince50standard-armv4i-msvc2005/default_post.prf)
diff --git a/mkspecs/wince50standard-armv4i-msvc2008/qmake.conf b/mkspecs/wince50standard-armv4i-msvc2008/qmake.conf
deleted file mode 100644
index 16046a34f6..0000000000
--- a/mkspecs/wince50standard-armv4i-msvc2008/qmake.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-include(../wince50standard-armv4i-msvc2005/qmake.conf)
-QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
-QMAKE_COMPILER_DEFINES += _MSC_VER=1500
diff --git a/mkspecs/wince50standard-armv4i-msvc2008/qplatformdefs.h b/mkspecs/wince50standard-armv4i-msvc2008/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wince50standard-armv4i-msvc2008/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wince50standard-mipsii-msvc2005/default_post.prf b/mkspecs/wince50standard-mipsii-msvc2005/default_post.prf
deleted file mode 100644
index 4dbcf35d6c..0000000000
--- a/mkspecs/wince50standard-mipsii-msvc2005/default_post.prf
+++ /dev/null
@@ -1,7 +0,0 @@
-# Visual Studio has some definitions set internally.
-# Thus we do not need to redefine these.
-contains(TEMPLATE, "vc.*") {
- DEFINES -= _M_MRX000=3000
- QMAKE_CXXFLAGS += -fp:precise
-}
-
diff --git a/mkspecs/wince50standard-mipsii-msvc2005/qmake.conf b/mkspecs/wince50standard-mipsii-msvc2005/qmake.conf
deleted file mode 100644
index 40ef0566ae..0000000000
--- a/mkspecs/wince50standard-mipsii-msvc2005/qmake.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# qmake configuration for wince50standard-mipsii-msvc2005
-#
-# Written for Microsoft VC2005.NET with Standard SDK for WindowsCE 5.0 (MIPSII)
-#
-include(../common/wince/qmake.conf)
-
-CE_SDK = STANDARDSDK_500
-CE_ARCH = MIPSII
-
-DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 _M_MRX000=3000 MIPS _MIPS_ Q_OS_WINCE_STD QT_NO_PRINTER QT_NO_PRINTDIALOG
-
-QMAKE_CFLAGS += -QMmips2
-QMAKE_CXXFLAGS += -QMmips2
-
-QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:MIPS /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:MIPS
-QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:MIPS /DLL
-QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
-QMAKE_LIBFLAGS_RELEASE = /LTCG
-QMAKE_LIBS = corelibc.lib
-QMAKE_LIBS_CORE = corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib
-QMAKE_LIBS_GUI = ceshell.lib ole32.lib $$QMAKE_LIBS_CORE
-QMAKE_LIBS_NETWORK = ws2.lib
diff --git a/mkspecs/wince50standard-mipsii-msvc2005/qplatformdefs.h b/mkspecs/wince50standard-mipsii-msvc2005/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wince50standard-mipsii-msvc2005/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wince50standard-mipsii-msvc2008/default_post.prf b/mkspecs/wince50standard-mipsii-msvc2008/default_post.prf
deleted file mode 100644
index d423784958..0000000000
--- a/mkspecs/wince50standard-mipsii-msvc2008/default_post.prf
+++ /dev/null
@@ -1 +0,0 @@
-include(../wince50standard-mipsii-msvc2005/default_post.prf)
diff --git a/mkspecs/wince50standard-mipsii-msvc2008/qmake.conf b/mkspecs/wince50standard-mipsii-msvc2008/qmake.conf
deleted file mode 100644
index 457fddec21..0000000000
--- a/mkspecs/wince50standard-mipsii-msvc2008/qmake.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-include(../wince50standard-mipsii-msvc2005/qmake.conf)
-QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
-QMAKE_COMPILER_DEFINES += _MSC_VER=1500
diff --git a/mkspecs/wince50standard-mipsii-msvc2008/qplatformdefs.h b/mkspecs/wince50standard-mipsii-msvc2008/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wince50standard-mipsii-msvc2008/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wince50standard-mipsiv-msvc2005/qmake.conf b/mkspecs/wince50standard-mipsiv-msvc2005/qmake.conf
deleted file mode 100644
index b94f3f35d9..0000000000
--- a/mkspecs/wince50standard-mipsiv-msvc2005/qmake.conf
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# qmake configuration for wince50standard-mipsiv-msvc2005
-#
-# Written for Microsoft VC2005.NET with Standard SDK for WindowsCE 5.0 (MIPSIV)
-#
-include(../common/wince/qmake.conf)
-
-CE_SDK = STANDARDSDK_500
-CE_ARCH = MIPSIV
-
-DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 _M_MRX000=4000 MIPS _MIPS_ Q_OS_WINCE_STD QT_NO_PRINTER QT_NO_PRINTDIALOG MIPS_HAS_FPU
-
-QMAKE_CFLAGS += -QMmips4
-QMAKE_CXXFLAGS += -QMmips4
-
-QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:MIPSFPU /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:MIPSFPU
-QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:MIPSFPU /DLL
-QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
-QMAKE_LIBFLAGS_RELEASE = /LTCG
-QMAKE_LIBS = corelibc.lib
-QMAKE_LIBS_CORE = corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib
-QMAKE_LIBS_GUI = ceshell.lib ole32.lib $$QMAKE_LIBS_CORE
-QMAKE_LIBS_NETWORK = ws2.lib
diff --git a/mkspecs/wince50standard-mipsiv-msvc2005/qplatformdefs.h b/mkspecs/wince50standard-mipsiv-msvc2005/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wince50standard-mipsiv-msvc2005/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wince50standard-mipsiv-msvc2008/qmake.conf b/mkspecs/wince50standard-mipsiv-msvc2008/qmake.conf
deleted file mode 100644
index 77e773b55c..0000000000
--- a/mkspecs/wince50standard-mipsiv-msvc2008/qmake.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-include(../wince50standard-mipsiv-msvc2005/qmake.conf)
-QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
-QMAKE_COMPILER_DEFINES += _MSC_VER=1500
diff --git a/mkspecs/wince50standard-mipsiv-msvc2008/qplatformdefs.h b/mkspecs/wince50standard-mipsiv-msvc2008/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wince50standard-mipsiv-msvc2008/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wince50standard-sh4-msvc2005/qmake.conf b/mkspecs/wince50standard-sh4-msvc2005/qmake.conf
deleted file mode 100644
index 3fdfdbfe43..0000000000
--- a/mkspecs/wince50standard-sh4-msvc2005/qmake.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# qmake configuration for wincestandard50-sh4-msvc2005
-#
-# Written for Microsoft VC2005.NET with Standard SDK for WindowsCE 5.0 (SH4)
-#
-include(../common/wince/qmake.conf)
-
-CE_SDK = STANDARDSDK_500
-CE_ARCH = SH4
-
-DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 _M_SH SHx _SHX_ Q_OS_WINCE_STD QT_NO_PRINTER QT_NO_PRINTDIALOG
-
-QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t- -QSsh4
-
-QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.00 /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.00
-QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.00 /DLL
-QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
-QMAKE_LIBFLAGS_RELEASE = /LTCG
-QMAKE_LIBS = corelibc.lib
-QMAKE_LIBS_CORE = corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib
-QMAKE_LIBS_GUI = ceshell.lib ole32.lib $$QMAKE_LIBS_CORE
-QMAKE_LIBS_NETWORK = ws2.lib
diff --git a/mkspecs/wince50standard-sh4-msvc2005/qplatformdefs.h b/mkspecs/wince50standard-sh4-msvc2005/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wince50standard-sh4-msvc2005/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wince50standard-sh4-msvc2008/qmake.conf b/mkspecs/wince50standard-sh4-msvc2008/qmake.conf
deleted file mode 100644
index 5deb0462bc..0000000000
--- a/mkspecs/wince50standard-sh4-msvc2008/qmake.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-include(../wince50standard-sh4-msvc2005/qmake.conf)
-QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
-QMAKE_COMPILER_DEFINES += _MSC_VER=1500
diff --git a/mkspecs/wince50standard-sh4-msvc2008/qplatformdefs.h b/mkspecs/wince50standard-sh4-msvc2008/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wince50standard-sh4-msvc2008/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wince50standard-x86-msvc2005/default_post.prf b/mkspecs/wince50standard-x86-msvc2005/default_post.prf
deleted file mode 100644
index 2436efb207..0000000000
--- a/mkspecs/wince50standard-x86-msvc2005/default_post.prf
+++ /dev/null
@@ -1,6 +0,0 @@
-# Visual Studio has some definitions set internally.
-# Thus we do not need to redefine these.
-equals(TEMPLATE, "vc.*") {
- QMAKE_CXXFLAGS += -fp:precise
-}
-
diff --git a/mkspecs/wince50standard-x86-msvc2005/qmake.conf b/mkspecs/wince50standard-x86-msvc2005/qmake.conf
deleted file mode 100644
index 850711d4c1..0000000000
--- a/mkspecs/wince50standard-x86-msvc2005/qmake.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# qmake configuration for wince50standard-x86-msvc2005
-#
-# Written for Microsoft VC2005.NET with Standard SDK for WindowsCE 5.0 (x86)
-#
-include(../common/wince/qmake.conf)
-
-CE_SDK = STANDARDSDK_500
-CE_ARCH = x86
-
-DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 $$CE_ARCH _X86_ _M_IX86 Q_OS_WINCE_STD QT_NO_PRINTER QT_NO_PRINTDIALOG
-
-QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:X86 /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:X86
-QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:X86 /DLL /SAFESEH:NO
-QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
-QMAKE_LIBFLAGS_RELEASE = /LTCG
-QMAKE_LIBS = corelibc.lib coredll.lib
-QMAKE_LIBS_CORE = corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib
-QMAKE_LIBS_GUI = ceshell.lib ole32.lib $$QMAKE_LIBS_CORE
-QMAKE_LIBS_NETWORK = ws2.lib $$QMAKE_LIBS_GUI
diff --git a/mkspecs/wince50standard-x86-msvc2005/qplatformdefs.h b/mkspecs/wince50standard-x86-msvc2005/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wince50standard-x86-msvc2005/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wince50standard-x86-msvc2008/default_post.prf b/mkspecs/wince50standard-x86-msvc2008/default_post.prf
deleted file mode 100644
index f2d9c33396..0000000000
--- a/mkspecs/wince50standard-x86-msvc2008/default_post.prf
+++ /dev/null
@@ -1 +0,0 @@
-include(../wince50standard-x86-msvc2005/default_post.prf)
diff --git a/mkspecs/wince50standard-x86-msvc2008/qmake.conf b/mkspecs/wince50standard-x86-msvc2008/qmake.conf
deleted file mode 100644
index 961147100b..0000000000
--- a/mkspecs/wince50standard-x86-msvc2008/qmake.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-include(../wince50standard-x86-msvc2005/qmake.conf)
-QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
-QMAKE_COMPILER_DEFINES += _MSC_VER=1500
diff --git a/mkspecs/wince50standard-x86-msvc2008/qplatformdefs.h b/mkspecs/wince50standard-x86-msvc2008/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wince50standard-x86-msvc2008/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wince70embedded-armv4i-msvc2008/default_post.prf b/mkspecs/wince70embedded-armv4i-msvc2008/default_post.prf
deleted file mode 100644
index f2d9c33396..0000000000
--- a/mkspecs/wince70embedded-armv4i-msvc2008/default_post.prf
+++ /dev/null
@@ -1 +0,0 @@
-include(../wince50standard-x86-msvc2005/default_post.prf)
diff --git a/mkspecs/wince70embedded-x86-msvc2008/default_post.prf b/mkspecs/wince70embedded-x86-msvc2008/default_post.prf
deleted file mode 100644
index f2d9c33396..0000000000
--- a/mkspecs/wince70embedded-x86-msvc2008/default_post.prf
+++ /dev/null
@@ -1 +0,0 @@
-include(../wince50standard-x86-msvc2005/default_post.prf)
diff --git a/mkspecs/wincewm50pocket-msvc2005/default_post.prf b/mkspecs/wincewm50pocket-msvc2005/default_post.prf
deleted file mode 100644
index 84ea15e095..0000000000
--- a/mkspecs/wincewm50pocket-msvc2005/default_post.prf
+++ /dev/null
@@ -1,7 +0,0 @@
-# Visual Studio has some definitions set internally.
-# Thus we do not need to redefine these.
-contains(TEMPLATE, "vc.*") {
- DEFINES -= _M_ARM
- QMAKE_CXXFLAGS += -fp:precise
-}
-
diff --git a/mkspecs/wincewm50pocket-msvc2005/qmake.conf b/mkspecs/wincewm50pocket-msvc2005/qmake.conf
deleted file mode 100644
index f92cdb50f9..0000000000
--- a/mkspecs/wincewm50pocket-msvc2005/qmake.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# qmake configuration for wincepocket50-msvc2005
-#
-# Written for Microsoft VC2005.NET with Windows Mobile 5.0 SDK for Pocket PC (ARMV4I)
-#
-include(../common/wince/qmake.conf)
-
-CE_SDK = Windows Mobile 5.0 Pocket PC SDK
-CE_ARCH = ARMV4I
-
-DEFINES += _WIN32_WCE=0x501 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM __arm__ Q_OS_WINCE_WM QT_NO_PRINTER QT_NO_PRINTDIALOG
-
-QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB
-QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB /DLL
-QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
-QMAKE_LIBFLAGS_RELEASE = /LTCG
-QMAKE_LIBS = corelibc.lib
-QMAKE_LIBS_CORE = corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib
-QMAKE_LIBS_GUI = ceshell.lib ole32.lib uuid.lib
-QMAKE_LIBS_NETWORK = ws2.lib
diff --git a/mkspecs/wincewm50pocket-msvc2005/qplatformdefs.h b/mkspecs/wincewm50pocket-msvc2005/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wincewm50pocket-msvc2005/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wincewm50pocket-msvc2008/default_post.prf b/mkspecs/wincewm50pocket-msvc2008/default_post.prf
deleted file mode 100644
index c4f6ea9390..0000000000
--- a/mkspecs/wincewm50pocket-msvc2008/default_post.prf
+++ /dev/null
@@ -1 +0,0 @@
-include(../wincewm50pocket-msvc2005/default_post.prf)
diff --git a/mkspecs/wincewm50pocket-msvc2008/qmake.conf b/mkspecs/wincewm50pocket-msvc2008/qmake.conf
deleted file mode 100644
index a22eef07a9..0000000000
--- a/mkspecs/wincewm50pocket-msvc2008/qmake.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-include(../wincewm50pocket-msvc2005/qmake.conf)
-QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
-QMAKE_COMPILER_DEFINES += _MSC_VER=1500
diff --git a/mkspecs/wincewm50pocket-msvc2008/qplatformdefs.h b/mkspecs/wincewm50pocket-msvc2008/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wincewm50pocket-msvc2008/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wincewm50smart-msvc2005/default_post.prf b/mkspecs/wincewm50smart-msvc2005/default_post.prf
deleted file mode 100644
index 84ea15e095..0000000000
--- a/mkspecs/wincewm50smart-msvc2005/default_post.prf
+++ /dev/null
@@ -1,7 +0,0 @@
-# Visual Studio has some definitions set internally.
-# Thus we do not need to redefine these.
-contains(TEMPLATE, "vc.*") {
- DEFINES -= _M_ARM
- QMAKE_CXXFLAGS += -fp:precise
-}
-
diff --git a/mkspecs/wincewm50smart-msvc2005/qmake.conf b/mkspecs/wincewm50smart-msvc2005/qmake.conf
deleted file mode 100644
index 9ac41c2866..0000000000
--- a/mkspecs/wincewm50smart-msvc2005/qmake.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# qmake configuration for wincesmart50-msvc2005
-#
-# Written for Microsoft VC2005.NET with Windows Mobile 5.0 SDK for Smartphone (ARMV4I)
-#
-include(../common/wince/qmake.conf)
-
-CE_SDK = Windows Mobile 5.0 Smartphone SDK
-CE_ARCH = ARMV4I
-
-DEFINES += SMARTPHONE2003_UI_MODEL _WIN32_WCE=0x501 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM __arm__ Q_OS_WINCE_WM QT_NO_PRINTER QT_NO_PRINTDIALOG QT_KEYPAD_NAVIGATION
-
-QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB
-QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB /DLL
-QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
-QMAKE_LIBFLAGS_RELEASE = /LTCG
-QMAKE_LIBS = corelibc.lib
-QMAKE_LIBS_CORE = corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib
-QMAKE_LIBS_GUI = ceshell.lib ole32.lib uuid.lib
-QMAKE_LIBS_NETWORK = ws2.lib
diff --git a/mkspecs/wincewm50smart-msvc2005/qplatformdefs.h b/mkspecs/wincewm50smart-msvc2005/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wincewm50smart-msvc2005/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wincewm50smart-msvc2008/default_post.prf b/mkspecs/wincewm50smart-msvc2008/default_post.prf
deleted file mode 100644
index 912944d79d..0000000000
--- a/mkspecs/wincewm50smart-msvc2008/default_post.prf
+++ /dev/null
@@ -1 +0,0 @@
-include(../wincewm50smart-msvc2005/default_post.prf)
diff --git a/mkspecs/wincewm50smart-msvc2008/qmake.conf b/mkspecs/wincewm50smart-msvc2008/qmake.conf
deleted file mode 100644
index 847b2f38ac..0000000000
--- a/mkspecs/wincewm50smart-msvc2008/qmake.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-include(../wincewm50smart-msvc2005/qmake.conf)
-QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
-QMAKE_COMPILER_DEFINES += _MSC_VER=1500
diff --git a/mkspecs/wincewm50smart-msvc2008/qplatformdefs.h b/mkspecs/wincewm50smart-msvc2008/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wincewm50smart-msvc2008/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wincewm60professional-msvc2005/default_post.prf b/mkspecs/wincewm60professional-msvc2005/default_post.prf
deleted file mode 100644
index 84ea15e095..0000000000
--- a/mkspecs/wincewm60professional-msvc2005/default_post.prf
+++ /dev/null
@@ -1,7 +0,0 @@
-# Visual Studio has some definitions set internally.
-# Thus we do not need to redefine these.
-contains(TEMPLATE, "vc.*") {
- DEFINES -= _M_ARM
- QMAKE_CXXFLAGS += -fp:precise
-}
-
diff --git a/mkspecs/wincewm60professional-msvc2005/qmake.conf b/mkspecs/wincewm60professional-msvc2005/qmake.conf
deleted file mode 100644
index 029ea08652..0000000000
--- a/mkspecs/wincewm60professional-msvc2005/qmake.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-include(../wincewm50pocket-msvc2005/qmake.conf)
-
-CE_SDK = Windows Mobile 6 Professional SDK
-CE_ARCH = ARMV4I
-
-DEFINES -= _WIN32_WCE=0x501
-DEFINES += _WIN32_WCE=0x502
-
-QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB
-QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB /DLL
-QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
-
diff --git a/mkspecs/wincewm60professional-msvc2005/qplatformdefs.h b/mkspecs/wincewm60professional-msvc2005/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wincewm60professional-msvc2005/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wincewm60professional-msvc2008/default_post.prf b/mkspecs/wincewm60professional-msvc2008/default_post.prf
deleted file mode 100644
index 86bc964a51..0000000000
--- a/mkspecs/wincewm60professional-msvc2008/default_post.prf
+++ /dev/null
@@ -1 +0,0 @@
-include(../wincewm60professional-msvc2005/default_post.prf)
diff --git a/mkspecs/wincewm60professional-msvc2008/qmake.conf b/mkspecs/wincewm60professional-msvc2008/qmake.conf
deleted file mode 100644
index 67e7410c7a..0000000000
--- a/mkspecs/wincewm60professional-msvc2008/qmake.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-include(../wincewm60professional-msvc2005/qmake.conf)
-QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
-QMAKE_COMPILER_DEFINES += _MSC_VER=1500
diff --git a/mkspecs/wincewm60professional-msvc2008/qplatformdefs.h b/mkspecs/wincewm60professional-msvc2008/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wincewm60professional-msvc2008/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wincewm60standard-msvc2005/default_post.prf b/mkspecs/wincewm60standard-msvc2005/default_post.prf
deleted file mode 100644
index 84ea15e095..0000000000
--- a/mkspecs/wincewm60standard-msvc2005/default_post.prf
+++ /dev/null
@@ -1,7 +0,0 @@
-# Visual Studio has some definitions set internally.
-# Thus we do not need to redefine these.
-contains(TEMPLATE, "vc.*") {
- DEFINES -= _M_ARM
- QMAKE_CXXFLAGS += -fp:precise
-}
-
diff --git a/mkspecs/wincewm60standard-msvc2005/qmake.conf b/mkspecs/wincewm60standard-msvc2005/qmake.conf
deleted file mode 100644
index aa1ade030a..0000000000
--- a/mkspecs/wincewm60standard-msvc2005/qmake.conf
+++ /dev/null
@@ -1,18 +0,0 @@
-include(../wincewm50smart-msvc2005/qmake.conf)
-
-CE_SDK = Windows Mobile 6 Standard SDK
-CE_ARCH = ARMV4I
-
-DEFINES -= _WIN32_WCE=0x501
-DEFINES += _WIN32_WCE=0x502
-
-# Windows Mobile 6 Standard edition defines
-# GWES_ICONCURS=1 although there is no cursor support
-
-DEFINES += QT_NO_CURSOR
-
-QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB
-QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB /DLL
-QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
-
diff --git a/mkspecs/wincewm60standard-msvc2005/qplatformdefs.h b/mkspecs/wincewm60standard-msvc2005/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wincewm60standard-msvc2005/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wincewm60standard-msvc2008/default_post.prf b/mkspecs/wincewm60standard-msvc2008/default_post.prf
deleted file mode 100644
index 5e3af26af6..0000000000
--- a/mkspecs/wincewm60standard-msvc2008/default_post.prf
+++ /dev/null
@@ -1 +0,0 @@
-include(../wincewm60standard-msvc2005/default_post.prf)
diff --git a/mkspecs/wincewm60standard-msvc2008/qmake.conf b/mkspecs/wincewm60standard-msvc2008/qmake.conf
deleted file mode 100644
index ff184375c1..0000000000
--- a/mkspecs/wincewm60standard-msvc2008/qmake.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-include(../wincewm60standard-msvc2005/qmake.conf)
-QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
-QMAKE_COMPILER_DEFINES += _MSC_VER=1500
diff --git a/mkspecs/wincewm60standard-msvc2008/qplatformdefs.h b/mkspecs/wincewm60standard-msvc2008/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wincewm60standard-msvc2008/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wincewm65professional-msvc2005/default_post.prf b/mkspecs/wincewm65professional-msvc2005/default_post.prf
deleted file mode 100644
index 86bc964a51..0000000000
--- a/mkspecs/wincewm65professional-msvc2005/default_post.prf
+++ /dev/null
@@ -1 +0,0 @@
-include(../wincewm60professional-msvc2005/default_post.prf)
diff --git a/mkspecs/wincewm65professional-msvc2005/qmake.conf b/mkspecs/wincewm65professional-msvc2005/qmake.conf
deleted file mode 100644
index 561c0495c9..0000000000
--- a/mkspecs/wincewm65professional-msvc2005/qmake.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-include(../wincewm60professional-msvc2005/qmake.conf)
-
-DEFINES += QT_WINCE_GESTURES
-QMAKE_LIBS_GUI += TouchGestureCore.lib
-
diff --git a/mkspecs/wincewm65professional-msvc2005/qplatformdefs.h b/mkspecs/wincewm65professional-msvc2005/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wincewm65professional-msvc2005/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/mkspecs/wincewm65professional-msvc2008/default_post.prf b/mkspecs/wincewm65professional-msvc2008/default_post.prf
deleted file mode 100644
index c854561843..0000000000
--- a/mkspecs/wincewm65professional-msvc2008/default_post.prf
+++ /dev/null
@@ -1 +0,0 @@
-include(../wincewm65professional-msvc2005/default_post.prf)
diff --git a/mkspecs/wincewm65professional-msvc2008/qmake.conf b/mkspecs/wincewm65professional-msvc2008/qmake.conf
deleted file mode 100644
index 552c7c8be7..0000000000
--- a/mkspecs/wincewm65professional-msvc2008/qmake.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-include(../wincewm65professional-msvc2005/qmake.conf)
-QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
-QMAKE_COMPILER_DEFINES += _MSC_VER=1500
diff --git a/mkspecs/wincewm65professional-msvc2008/qplatformdefs.h b/mkspecs/wincewm65professional-msvc2008/qplatformdefs.h
deleted file mode 100644
index 6de176b47c..0000000000
--- a/mkspecs/wincewm65professional-msvc2008/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the qmake spec of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "../common/wince/qplatformdefs.h"
-
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix
index 2f8f07eb2d..a77b1b22dc 100644
--- a/qmake/Makefile.unix
+++ b/qmake/Makefile.unix
@@ -92,7 +92,8 @@ CPPFLAGS = -g $(EXTRA_CPPFLAGS) \
-I$(SOURCE_PATH)/tools/shared \
-DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS \
- -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM
+ -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
+ -DQT_CRYPTOGRAPHICHASH_ONLY_SHA1
CXXFLAGS = $(EXTRA_CXXFLAGS) $(CPPFLAGS)
diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32
index 979155678e..9a772d9760 100644
--- a/qmake/Makefile.win32
+++ b/qmake/Makefile.win32
@@ -41,7 +41,7 @@ CFLAGS_BARE = -c -Fo./ \
-DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS \
-DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
- -DUNICODE
+ -DUNICODE -DQT_CRYPTOGRAPHICHASH_ONLY_SHA1
CFLAGS = -Yuqmake_pch.h -FIqmake_pch.h -Fpqmake_pch.pch $(CFLAGS_BARE) $(CFLAGS) $(EXTRA_CPPFLAGS)
CXXFLAGS_BARE = $(CFLAGS_BARE)
diff --git a/qmake/doc/snippets/code/doc_src_qmake-manual.pro b/qmake/doc/snippets/code/doc_src_qmake-manual.pro
index 0ee4785887..aa3f7f3502 100644
--- a/qmake/doc/snippets/code/doc_src_qmake-manual.pro
+++ b/qmake/doc/snippets/code/doc_src_qmake-manual.pro
@@ -915,3 +915,64 @@ greaterThan(TMP_VALUE, x456): message("Condition may be true.")
#! [173]
message("First line$$escape_expand(\\n)Second line")
#! [173]
+
+
+#! [174]
+TEMPLATE = subdirs
+SUBDIRS = one two three
+prepareRecursiveTarget(check)
+#! [174]
+
+
+#! [175]
+two.CONFIG += no_check_target
+#! [175]
+
+
+#! [176]
+QMAKE_EXTRA_TARGETS += check
+#! [176]
+
+
+#! [177]
+# <project root>/features/mycheck.prf
+equals(TEMPLATE, subdirs) {
+ prepareRecursiveTarget(check)
+} else {
+ check.commands = echo hello user
+}
+QMAKE_EXTRA_TARGETS += check
+#! [177]
+
+
+#! [178]
+# <project root>/.qmake.conf
+CONFIG += mycheck
+#! [178]
+
+
+#! [179]
+# <project root>/project.pro
+load(configure)
+#! [179]
+
+
+#! [180]
+# <project root>/config.tests/test/test.pro
+SOURCES = main.cpp
+LIBS += -ltheFeature
+# Note that the test project is built without Qt by default.
+#! [180]
+
+
+#! [181]
+// <project root>/config.tests/test/main.cpp
+#include <TheFeature/MainHeader.h>
+int main() { return featureFunction(); }
+#! [181]
+
+
+#! [182]
+# <project root>/project.pro
+qtCompileTest(test)
+#! [182]
diff --git a/qmake/doc/src/qmake-manual.qdoc b/qmake/doc/src/qmake-manual.qdoc
index a00d00d8c1..73538a7932 100644
--- a/qmake/doc/src/qmake-manual.qdoc
+++ b/qmake/doc/src/qmake-manual.qdoc
@@ -3067,6 +3067,80 @@
And then, in the code:
\snippet code/doc_src_qmake-manual.pro 158
+
+ \section2 prepareRecursiveTarget(target)
+
+ Facilitates the creation of project-wide targets similar to the \c install
+ target by preparing a target that iterates through all subdirectories. For
+ example:
+
+ \snippet code/doc_src_qmake-manual.pro 174
+
+ Subdirs that have \c have_no_default or \c no_<target>_target specified in
+ their .CONFIG are excluded from this target:
+
+ \snippet code/doc_src_qmake-manual.pro 175
+
+ You must add the prepared target manually to \l{QMAKE_EXTRA_TARGETS}:
+
+ \snippet code/doc_src_qmake-manual.pro 176
+
+ To make the target global, the code above needs to be included into every
+ subdirs subproject. In addition, to make these targets do anything,
+ non-subdirs subprojects need to include respective code. The easiest way to
+ achieve this is creating a custom feature file. For example:
+
+ \snippet code/doc_src_qmake-manual.pro 177
+
+ The feature file needs to be injected into each subproject, for example by
+ .qmake.conf:
+
+ \snippet code/doc_src_qmake-manual.pro 178
+
+ \section2 qtCompileTest(test)
+
+ Builds a test project. If the test passes, true is returned and
+ \c {config_<test>} is added to the \l{CONFIG} variable. Otherwise, false is
+ returned.
+
+ To make this function available, you need to load the respective feature
+ file:
+
+ \snippet code/doc_src_qmake-manual.pro 179
+
+ This also sets the variable QMAKE_CONFIG_TESTS_DIR to the
+ \c config.tests subdirectory of the project's parent directory.
+ It is possible to override this value after loading the feature file.
+
+ Inside the tests directory, there has to be one subdirectory per test that
+ contains a simple qmake project. The following code snippet illustrates the
+ .pro file of the project:
+
+ \snippet code/doc_src_qmake-manual.pro 180
+
+ The following code snippet illustrates the main .cpp file of the project:
+
+ \snippet code/doc_src_qmake-manual.pro 181
+
+ The following code snippet shows the invocation of the test:
+
+ \snippet code/doc_src_qmake-manual.pro 182
+
+ If the test project is built successfully, the test passes.
+
+ The test results are automatically cached, which also makes them
+ available to all subprojects. It is therefore recommended to run
+ all configuration tests in the top-level project file.
+
+ To suppress the re-use of cached results, pass \c{CONFIG+=recheck}
+ to qmake.
+
+ See also \l{load(feature)}{load()}.
+
+ \section2 qtHaveModule(name)
+
+ Checks whether the Qt module specified by \c name is present.
+ For a list of possible values, see \l{Variables#QT}{QT}.
*/
/*!
diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp
index f6bd448cba..8a3a75b7d9 100644
--- a/qmake/generators/integrity/gbuild.cpp
+++ b/qmake/generators/integrity/gbuild.cpp
@@ -44,7 +44,6 @@
#include "meta.h"
#include <qdir.h>
#include <qregexp.h>
-#include <qcryptographichash.h>
#include <qdebug.h>
#include <stdlib.h>
#include <time.h>
diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp
index d1c70900fb..b8e6d05728 100644
--- a/qmake/generators/mac/pbuilder_pbx.cpp
+++ b/qmake/generators/mac/pbuilder_pbx.cpp
@@ -66,9 +66,9 @@ QT_BEGIN_NAMESPACE
using namespace QMakeInternal;
-static QString qtMD5(const QByteArray &src)
+static QString qtSha1(const QByteArray &src)
{
- QByteArray digest = QCryptographicHash::hash(src, QCryptographicHash::Md5);
+ QByteArray digest = QCryptographicHash::hash(src, QCryptographicHash::Sha1);
return QString::fromLatin1(digest.toHex());
}
@@ -1547,7 +1547,7 @@ ProjectBuilderMakefileGenerator::keyFor(const QString &block)
#endif
QString ret;
if(!keys.contains(block)) {
- ret = qtMD5(block.toUtf8()).left(24).toUpper();
+ ret = qtSha1(block.toUtf8()).left(24).toUpper();
keys.insert(block, ret);
} else {
ret = keys[block];
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index dfcb0ec352..d550748c9b 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -340,7 +340,7 @@ QUuid VcprojGenerator::getProjectUUID(const QString &filename)
// If none, create one based on the MD5 of absolute project path
if(uuid.isNull() || !filename.isEmpty()) {
QString abspath = Option::fixPathToLocalOS(filename.isEmpty()?project->first("QMAKE_MAKEFILE").toQString():filename);
- QByteArray digest = QCryptographicHash::hash(abspath.toUtf8(), QCryptographicHash::Md5);
+ QByteArray digest = QCryptographicHash::hash(abspath.toUtf8(), QCryptographicHash::Sha1);
memcpy((unsigned char*)(&uuid), digest.constData(), sizeof(QUuid));
validUUID = !uuid.isNull();
uuid.data4[0] = (uuid.data4[0] & 0x3F) | 0x80; // UV_DCE variant
diff --git a/qmake/qmake.pri b/qmake/qmake.pri
index 4cc401bc13..39959efe7b 100644
--- a/qmake/qmake.pri
+++ b/qmake/qmake.pri
@@ -147,7 +147,7 @@ bootstrap { #Qt code
CFLAGS += -fhonor-std
LFLAGS += -lcpp
}
- DEFINES *= QT_NO_QOBJECT
+ DEFINES *= QT_NO_QOBJECT QT_CRYPTOGRAPHICHASH_ONLY_SHA1
} else {
CONFIG += qt
QT = core
diff --git a/src/angle/src/config.pri b/src/angle/src/config.pri
index 465bcf6a1e..1c6d8b0167 100644
--- a/src/angle/src/config.pri
+++ b/src/angle/src/config.pri
@@ -78,10 +78,11 @@ msvc {
# 4239: nonstandard extension used : 'token' : conversion from 'type' to 'type'
# 4244: 'argument' : conversion from 'type1' to 'type2', possible loss of data
# 4245: 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch
+ # 4275: non - DLL-interface classkey 'identifier' used as base for DLL-interface classkey 'identifier'
# 4512: 'class' : assignment operator could not be generated
# 4702: unreachable code
QMAKE_CFLAGS_WARN_ON -= -W3
- QMAKE_CFLAGS_WARN_ON += -W4 -wd"4100" -wd"4127" -wd"4189" -wd"4239" -wd"4244" -wd"4245" -wd"4512" -wd"4702"
+ QMAKE_CFLAGS_WARN_ON += -W4 -wd"4100" -wd"4127" -wd"4189" -wd"4239" -wd"4244" -wd"4245" -wd"4275" -wd"4512" -wd"4702"
# Optimizations
# /Oy: Omits frame pointer (x86 only).
# /Gy: Enables function-level linking.
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index 18f293bba5..61841cab76 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -320,7 +320,7 @@ QLibraryInfo::location(LibraryLocation loc)
QString ret = rawLocation(loc, FinalPaths);
// Automatically prepend the sysroot to target paths
- if (loc < SysrootPath || loc > LastHostPath) {
+ if ((loc < SysrootPath || loc > LastHostPath) && qt_sysrootify_prefix[12] == 'y') {
QString sysroot = rawLocation(SysrootPath, FinalPaths);
if (!sysroot.isEmpty() && ret.length() > 2 && ret.at(1) == QLatin1Char(':')
&& (ret.at(2) == QLatin1Char('/') || ret.at(2) == QLatin1Char('\\')))
diff --git a/src/corelib/json/qjsonobject.cpp b/src/corelib/json/qjsonobject.cpp
index 2be9d8891d..43336de2e7 100644
--- a/src/corelib/json/qjsonobject.cpp
+++ b/src/corelib/json/qjsonobject.cpp
@@ -69,7 +69,7 @@ QT_BEGIN_NAMESPACE
QJsonObject is an implicitly shared class, and shares the data with the document
it has been created from as long as it is not being modified.
- You can convert the array to and from text based JSON through QJsonDocument.
+ You can convert the object to and from text based JSON through QJsonDocument.
*/
/*!
@@ -104,7 +104,7 @@ QT_BEGIN_NAMESPACE
/*!
- Constructs an empty JSON object
+ Constructs an empty JSON object.
\sa isEmpty()
*/
@@ -245,7 +245,7 @@ bool QJsonObject::isEmpty() const
/*!
Returns a QJsonValue representing the value for the key \a key.
- The returned QJsonValue is \c Undefined, if the key does not exist.
+ The returned QJsonValue is QJsonValue::Undefined if the key does not exist.
\sa QJsonValue, QJsonValue::isUndefined()
*/
@@ -266,7 +266,7 @@ QJsonValue QJsonObject::value(const QString &key) const
This does the same as value().
- The returned QJsonValue is \c Undefined, if the key does not exist.
+ The returned QJsonValue is QJsonValue::Undefined if the key does not exist.
\sa value(), QJsonValue, QJsonValue::isUndefined()
*/
@@ -281,7 +281,7 @@ QJsonValue QJsonObject::operator [](const QString &key) const
The return value is of type QJsonValueRef, a helper class for QJsonArray
and QJsonObject. When you get an object of type QJsonValueRef, you can
use it as if it were a reference to a QJsonValue. If you assign to it,
- the assignment will apply to the character in the QJsonArray of QJsonObject
+ the assignment will apply to the element in the QJsonArray or QJsonObject
from which you got the reference.
\sa value()
@@ -301,13 +301,13 @@ QJsonValueRef QJsonObject::operator [](const QString &key)
/*!
Inserts a new item with the key \a key and a value of \a value.
- If there is already an item with the key \a key then that item's value
+ If there is already an item with the key \a key, then that item's value
is replaced with \a value.
Returns an iterator pointing to the inserted item.
If the value is QJsonValue::Undefined, it will cause the key to get removed
- from the object. The returned iterator will then point to end()
+ from the object. The returned iterator will then point to end().
\sa remove(), take(), QJsonObject::iterator, end()
*/
@@ -382,7 +382,7 @@ void QJsonObject::remove(const QString &key)
Returns a QJsonValue containing the value referenced by \a key.
If \a key was not contained in the object, the returned QJsonValue
- is Undefined.
+ is QJsonValue::Undefined.
\sa insert(), remove(), QJsonValue
*/
@@ -422,7 +422,7 @@ bool QJsonObject::contains(const QString &key) const
}
/*!
- Returns \c true if \a other is equal to this object
+ Returns \c true if \a other is equal to this object.
*/
bool QJsonObject::operator==(const QJsonObject &other) const
{
@@ -447,7 +447,7 @@ bool QJsonObject::operator==(const QJsonObject &other) const
}
/*!
- Returns \c true if \a other is not equal to this object
+ Returns \c true if \a other is not equal to this object.
*/
bool QJsonObject::operator!=(const QJsonObject &other) const
{
@@ -501,7 +501,7 @@ QJsonObject::iterator QJsonObject::find(const QString &key)
*/
/*!
- Returns an const iterator pointing to the item with key \a key in the
+ Returns a const iterator pointing to the item with key \a key in the
map.
If the map contains no item with key \a key, the function
@@ -594,7 +594,7 @@ QJsonObject::const_iterator QJsonObject::constFind(const QString &key) const
should use QJsonObject::const_iterator. It is generally good practice to
use QJsonObject::const_iterator on a non-const QJsonObject as well, unless you
need to change the QJsonObject through the iterator. Const iterators are
- slightly faster, and improves code readability.
+ slightly faster, and improve code readability.
The default QJsonObject::iterator constructor creates an uninitialized
iterator. You must initialize it using a QJsonObject function like
@@ -614,8 +614,8 @@ QJsonObject::const_iterator QJsonObject::constFind(const QString &key) const
/*! \typedef QJsonObject::iterator::iterator_category
- A synonym for \e {std::bidirectional_iterator_tag} indicating
- this iterator is a bidirectional iterator.
+ A synonym for \e {std::bidirectional_iterator_tag} indicating
+ this iterator is a bidirectional iterator.
*/
/*! \typedef QJsonObject::iterator::reference
@@ -664,7 +664,7 @@ QJsonObject::const_iterator QJsonObject::constFind(const QString &key) const
The return value is of type QJsonValueRef, a helper class for QJsonArray
and QJsonObject. When you get an object of type QJsonValueRef, you can
use it as if it were a reference to a QJsonValue. If you assign to it,
- the assignment will apply to the character in the QJsonArray of QJsonObject
+ the assignment will apply to the element in the QJsonArray or QJsonObject
from which you got the reference.
\sa key(), operator*()
@@ -679,7 +679,7 @@ QJsonObject::const_iterator QJsonObject::constFind(const QString &key) const
The return value is of type QJsonValueRef, a helper class for QJsonArray
and QJsonObject. When you get an object of type QJsonValueRef, you can
use it as if it were a reference to a QJsonValue. If you assign to it,
- the assignment will apply to the character in the QJsonArray of QJsonObject
+ the assignment will apply to the element in the QJsonArray or QJsonObject
from which you got the reference.
\sa key()
@@ -788,7 +788,7 @@ QJsonObject::const_iterator QJsonObject::constFind(const QString &key) const
over it, you must use QJsonObject::iterator instead. It is generally
good practice to use QJsonObject::const_iterator on a non-const QJsonObject as
well, unless you need to change the QJsonObject through the iterator.
- Const iterators are slightly faster and improves code
+ Const iterators are slightly faster and improve code
readability.
The default QJsonObject::const_iterator constructor creates an
@@ -809,8 +809,8 @@ QJsonObject::const_iterator QJsonObject::constFind(const QString &key) const
/*! \typedef QJsonObject::const_iterator::iterator_category
- A synonym for \e {std::bidirectional_iterator_tag} indicating
- this iterator is a bidirectional iterator.
+ A synonym for \e {std::bidirectional_iterator_tag} indicating
+ this iterator is a bidirectional iterator.
*/
/*! \typedef QJsonObject::const_iterator::reference
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index d1bd8fbe95..dfb897c0fd 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -52,8 +52,6 @@
#include "qelapsedtimer.h"
#include "qcoreapplication_p.h"
-#include "qsysinfo.h"
-
#include <private/qthread_p.h>
#include <private/qmutexpool_p.h>
@@ -307,14 +305,8 @@ static void resolveTimerAPI()
#endif
triedResolve = true;
#if !defined(Q_OS_WINCE)
-# if defined(_MSC_VER) && _MSC_VER >= 1700
- if (QSysInfo::WindowsVersion >= QSysInfo::WV_WINDOWS8) { // QTBUG-27266, Disable when running MSVC2012-built code on pre-Windows 8
-# else
- {
-# endif
qtimeSetEvent = (ptimeSetEvent)QSystemLibrary::resolve(QLatin1String("winmm"), "timeSetEvent");
qtimeKillEvent = (ptimeKillEvent)QSystemLibrary::resolve(QLatin1String("winmm"), "timeKillEvent");
- }
#else
qtimeSetEvent = (ptimeSetEvent)QSystemLibrary::resolve(QLatin1String("Mmtimer"), "timeSetEvent");
qtimeKillEvent = (ptimeKillEvent)QSystemLibrary::resolve(QLatin1String("Mmtimer"), "timeKillEvent");
@@ -438,6 +430,18 @@ LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPA
return DefWindowProc(hwnd, message, wp, lp);
}
+static inline UINT inputTimerMask()
+{
+ UINT result = QS_TIMER | QS_INPUT | QS_RAWINPUT;
+ // QTBUG 28513, QTBUG-29097, QTBUG-29435: QS_TOUCH, QS_POINTER became part of
+ // QS_INPUT in Windows Kit 8. They should not be used when running on pre-Windows 8.
+#if defined(_MSC_VER) && _MSC_VER >= 1700
+ if (QSysInfo::WindowsVersion < QSysInfo::WV_WINDOWS8)
+ result &= ~(QS_TOUCH | QS_POINTER);
+#endif // _MSC_VER >= 1700
+ return result;
+}
+
LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int code, WPARAM wp, LPARAM lp)
{
if (wp == PM_REMOVE) {
@@ -447,7 +451,8 @@ LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int code, WPARAM wp, LPARAM lp)
MSG *msg = (MSG *) lp;
QEventDispatcherWin32Private *d = q->d_func();
const int localSerialNumber = d->serialNumber.load();
- if (HIWORD(GetQueueStatus(QS_TIMER | QS_INPUT | QS_RAWINPUT)) == 0) {
+ static const UINT mask = inputTimerMask();
+ if (HIWORD(GetQueueStatus(mask)) == 0) {
// no more input or timer events in the message queue, we can allow posted events to be sent normally now
if (d->sendPostedEventsWindowsTimerId != 0) {
// stop the timer to send posted events, since we now allow the WM_QT_SENDPOSTEDEVENTS message
diff --git a/src/corelib/kernel/qobjectdefs_impl.h b/src/corelib/kernel/qobjectdefs_impl.h
index 4f44d9204e..d775ef1b65 100644
--- a/src/corelib/kernel/qobjectdefs_impl.h
+++ b/src/corelib/kernel/qobjectdefs_impl.h
@@ -496,22 +496,22 @@ namespace QtPrivate {
template<typename Func> struct FunctionPointer { enum {ArgumentCount = -1}; };
template <typename, typename, typename, typename> struct FunctorCall;
- template <int... I, typename... SignalArgs, typename R, typename Function>
- struct FunctorCall<IndexesList<I...>, List<SignalArgs...>, R, Function> {
+ template <int... II, typename... SignalArgs, typename R, typename Function>
+ struct FunctorCall<IndexesList<II...>, List<SignalArgs...>, R, Function> {
static void call(Function f, void **arg) {
- f((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[I+1]))...), ApplyReturnValue<R>(arg[0]);
+ f((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[II+1]))...), ApplyReturnValue<R>(arg[0]);
}
};
- template <int... I, typename... SignalArgs, typename R, typename... SlotArgs, typename SlotRet, class Obj>
- struct FunctorCall<IndexesList<I...>, List<SignalArgs...>, R, SlotRet (Obj::*)(SlotArgs...)> {
+ template <int... II, typename... SignalArgs, typename R, typename... SlotArgs, typename SlotRet, class Obj>
+ struct FunctorCall<IndexesList<II...>, List<SignalArgs...>, R, SlotRet (Obj::*)(SlotArgs...)> {
static void call(SlotRet (Obj::*f)(SlotArgs...), Obj *o, void **arg) {
- (o->*f)((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[I+1]))...), ApplyReturnValue<R>(arg[0]);
+ (o->*f)((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[II+1]))...), ApplyReturnValue<R>(arg[0]);
}
};
- template <int... I, typename... SignalArgs, typename R, typename... SlotArgs, typename SlotRet, class Obj>
- struct FunctorCall<IndexesList<I...>, List<SignalArgs...>, R, SlotRet (Obj::*)(SlotArgs...) const> {
+ template <int... II, typename... SignalArgs, typename R, typename... SlotArgs, typename SlotRet, class Obj>
+ struct FunctorCall<IndexesList<II...>, List<SignalArgs...>, R, SlotRet (Obj::*)(SlotArgs...) const> {
static void call(SlotRet (Obj::*f)(SlotArgs...) const, Obj *o, void **arg) {
- (o->*f)((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[I+1]))...), ApplyReturnValue<R>(arg[0]);
+ (o->*f)((*reinterpret_cast<typename RemoveRef<SignalArgs>::Type *>(arg[II+1]))...), ApplyReturnValue<R>(arg[0]);
}
};
diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp
index 32f5f0b33a..f4f465a623 100644
--- a/src/corelib/tools/qcryptographichash.cpp
+++ b/src/corelib/tools/qcryptographichash.cpp
@@ -45,8 +45,12 @@
#include "../../3rdparty/sha1/sha1.cpp"
+#if defined(QT_BOOTSTRAPPED) && !defined(QT_CRYPTOGRAPHICHASH_ONLY_SHA1)
+# error "Are you sure you need the other hashing algorithms besides SHA-1?"
+#endif
+
#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1
-// qdoc only needs SHA-1
+// qdoc and qmake only need SHA-1
#include "../../3rdparty/md5/md5.h"
#include "../../3rdparty/md5/md5.cpp"
#include "../../3rdparty/md4/md4.h"
diff --git a/src/corelib/tools/qcryptographichash.h b/src/corelib/tools/qcryptographichash.h
index d4e75c4667..c4f7c3ab4a 100644
--- a/src/corelib/tools/qcryptographichash.h
+++ b/src/corelib/tools/qcryptographichash.h
@@ -55,9 +55,12 @@ class Q_CORE_EXPORT QCryptographicHash
{
public:
enum Algorithm {
+#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1
Md4,
Md5,
- Sha1,
+#endif
+ Sha1 = 2,
+#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1
Sha224,
Sha256,
Sha384,
@@ -66,6 +69,7 @@ public:
Sha3_256,
Sha3_384,
Sha3_512
+#endif
};
explicit QCryptographicHash(Algorithm method);
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 71d6166840..084e0bc656 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -208,6 +208,10 @@
This signal is emitted after an error occurred. The \a socketError
parameter describes the type of error that occurred.
+ When this signal is emitted, the socket may not be ready for a reconnect
+ attempt. In that case, attempts to reconnect should be done from the event
+ loop. For example, use a QTimer::singleShot() with 0 as the timeout.
+
QAbstractSocket::SocketError is not a registered metatype, so for queued
connections, you will have to register it with Q_DECLARE_METATYPE() and
qRegisterMetaType().
diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp
index 6efd5085ac..d42251d4dd 100644
--- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp
+++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp
@@ -2230,16 +2230,21 @@ bool AtSpiAdaptor::tableInterface(QAccessibleInterface *interface, const QString
int index = message.arguments().at(0).toInt();
bool success = false;
- int row, col, rowExtents, colExtents;
- bool isSelected;
+ int row = -1;
+ int col = -1;
+ int rowExtents = -1;
+ int colExtents = -1;
+ bool isSelected = false;
int cols = interface->tableInterface()->columnCount();
- row = index/cols;
- col = index%cols;
- QAccessibleTableCellInterface *cell = interface->tableInterface()->cellAt(row, col)->tableCellInterface();
- if (cell) {
- cell->rowColumnExtents(&row, &col, &rowExtents, &colExtents, &isSelected);
- success = true;
+ if (cols > 0) {
+ row = index / cols;
+ col = index % cols;
+ QAccessibleTableCellInterface *cell = interface->tableInterface()->cellAt(row, col)->tableCellInterface();
+ if (cell) {
+ cell->rowColumnExtents(&row, &col, &rowExtents, &colExtents, &isSelected);
+ success = true;
+ }
}
QVariantList list;
diff --git a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
index f746207cc0..116c6cfa7d 100644
--- a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
+++ b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp
@@ -41,7 +41,6 @@
#include "qtablegenerator.h"
-#include <QtCore/QRegularExpression>
#include <QtCore/QByteArray>
#include <QtCore/QTextCodec>
#include <QtCore/QDebug>
@@ -54,7 +53,8 @@
#include <xkbcommon_workaround.h>
#endif
-//#define DEBUG_GENERATOR
+#include <string.h> // strchr, strncmp, etc.
+#include <strings.h> // strncasecmp
TableGenerator::TableGenerator() : m_state(NoErrors),
m_systemComposeDir(QString())
@@ -111,11 +111,9 @@ void TableGenerator::findComposeFile()
// check for the system provided compose files
if (!found && cleanState()) {
- readLocaleMappings();
+ QString table = readLocaleMappings(locale().toUpper().toUtf8());
if (cleanState()) {
-
- QString table = m_localeToTable.value(locale().toUpper());
if (table.isEmpty())
// no table mappings for the system's locale in the compose.dir
m_state = UnsupportedLocale;
@@ -174,28 +172,49 @@ QString TableGenerator::locale() const
return QLatin1String(name);
}
-void TableGenerator::readLocaleMappings()
+QString TableGenerator::readLocaleMappings(const QByteArray &locale)
{
QFile mappings(systemComposeDir() + QLatin1String("/compose.dir"));
- if (mappings.exists()) {
- mappings.open(QIODevice::ReadOnly);
- QTextStream in(&mappings);
- // formating of compose.dir has some inconsistencies
- while (!in.atEnd()) {
- QString line = in.readLine();
- if (!line.startsWith("#") && line.size() != 0 &&
- line.at(0).isLower()) {
+ QString file;
+ if (mappings.open(QIODevice::ReadOnly)) {
+ const int localeNameLength = locale.size();
+ const char * const localeData = locale.constData();
- QStringList pair = line.split(QRegExp(QLatin1String("\\s+")));
- QString table = pair.at(0);
- if (table.endsWith(QLatin1String(":")))
- table.remove(table.size() - 1, 1);
-
- m_localeToTable.insert(pair.at(1).toUpper(), table);
+ char l[1024];
+ // formating of compose.dir has some inconsistencies
+ while (!mappings.atEnd()) {
+ int read = mappings.readLine(l, sizeof(l));
+ if (read <= 0)
+ break;
+
+ char *line = l;
+ if (*line >= 'a' && *line <= 'z') {
+ // file name
+ while (*line && *line != ':' && *line != ' ' && *line != '\t')
+ ++line;
+ if (!*line)
+ continue;
+ const char * const composeFileNameEnd = line;
+ *line = '\0';
+ ++line;
+
+ // locale name
+ while (*line && (*line == ' ' || *line == '\t'))
+ ++line;
+ const char * const lc = line;
+ while (*line && *line != ' ' && *line != '\t' && *line != '\n')
+ ++line;
+ *line = '\0';
+
+ if (localeNameLength == (line - lc) && !strncasecmp(lc, localeData, line - lc)) {
+ file = QString::fromUtf8(l, composeFileNameEnd - l);
+ break;
+ }
}
}
mappings.close();
}
+ return file;
}
bool TableGenerator::processFile(QString composeFileName)
@@ -215,7 +234,7 @@ TableGenerator::~TableGenerator()
{
}
-QList<QComposeTableElement> TableGenerator::composeTable() const
+QVector<QComposeTableElement> TableGenerator::composeTable() const
{
return m_composeTable;
}
@@ -225,15 +244,14 @@ void TableGenerator::parseComposeFile(QFile *composeFile)
#ifdef DEBUG_GENERATOR
qDebug() << "TableGenerator::parseComposeFile: " << composeFile->fileName();
#endif
- QTextStream in(composeFile);
- while (!in.atEnd()) {
- QString line = in.readLine();
- if (line.startsWith(QLatin1String("<"))) {
+ char line[1024];
+ while (!composeFile->atEnd()) {
+ composeFile->readLine(line, sizeof(line));
+ if (*line == '<')
parseKeySequence(line);
- } else if (line.startsWith(QLatin1String("include"))) {
- parseIncludeInstruction(line);
- }
+ else if (!strncmp(line, "include", 7))
+ parseIncludeInstruction(QString::fromUtf8(line));
}
composeFile->close();
@@ -290,79 +308,103 @@ ushort TableGenerator::keysymToUtf8(quint32 sym)
return QString::fromUtf8(chars).at(0).unicode();
}
-quint32 TableGenerator::stringToKeysym(QString keysymName)
+static inline int fromBase8(const char *s, const char *end)
{
- quint32 keysym;
- QByteArray keysymArray = keysymName.toLatin1();
- const char *name = keysymArray.constData();
-
- if ((keysym = xkb_keysym_from_name(name, (xkb_keysym_flags)0)) == XKB_KEY_NoSymbol)
- qWarning() << QString("Qt Warning - invalid keysym: %1").arg(keysymName);
+ int result = 0;
+ while (*s && s != end) {
+ if (*s <= '0' && *s >= '7')
+ return 0;
+ result *= 8;
+ result += *s - '0';
+ ++s;
+ }
+ return result;
+}
- return keysym;
+static inline int fromBase16(const char *s, const char *end)
+{
+ int result = 0;
+ while (*s && s != end) {
+ result *= 16;
+ if (*s >= '0' && *s <= '9')
+ result += *s - '0';
+ else if (*s >= 'a' && *s <= 'f')
+ result += *s - 'a' + 10;
+ else if (*s >= 'A' && *s <= 'F')
+ result += *s - 'A' + 10;
+ else
+ return 0;
+ ++s;
+ }
+ return result;
}
-void TableGenerator::parseKeySequence(QString line)
+void TableGenerator::parseKeySequence(char *line)
{
// we are interested in the lines with the following format:
// <Multi_key> <numbersign> <S> : "♬" U266c # BEAMED SIXTEENTH NOTE
- int keysEnd = line.indexOf(QLatin1String(":"));
- QString keys = line.left(keysEnd).trimmed();
-
- // find the key sequence
- QString regexp = QStringLiteral("<[^>]+>");
- QRegularExpression reg(regexp);
- QRegularExpressionMatchIterator i = reg.globalMatch(keys);
- QStringList keyList;
- while (i.hasNext()) {
- QRegularExpressionMatch match = i.next();
- QString word = match.captured(0);
- keyList << word;
- }
+ char *keysEnd = strchr(line, ':');
+ if (!keysEnd)
+ return;
QComposeTableElement elem;
- QString quote = QStringLiteral("\"");
// find the composed value - strings may be direct text encoded in the locale
// for which the compose file is to be used, or an escaped octal or hexadecimal
// character code. Octal codes are specified as "\123" and hexadecimal codes as "\0x123a".
- int composeValueIndex = line.indexOf(quote, keysEnd) + 1;
- const QChar valueType(line.at(composeValueIndex));
+ char *composeValue = strchr(keysEnd, '"');
+ if (!composeValue)
+ return;
+ ++composeValue;
+
+ char *composeValueEnd = strchr(composeValue, '"');
+ if (!composeValueEnd)
+ return;
- if (valueType == '\\' && line.at(composeValueIndex + 1).isDigit()) {
+ if (*composeValue == '\\' && composeValue[1] >= '0' && composeValue[1] <= '9') {
// handle octal and hex code values
- QChar detectBase(line.at(composeValueIndex + 2));
- QString codeValue = line.mid(composeValueIndex + 1, line.lastIndexOf(quote) - composeValueIndex - 1);
+ char detectBase = composeValue[2];
if (detectBase == 'x') {
// hexadecimal character code
- elem.value = keysymToUtf8(codeValue.toUInt(0, 16));
+ elem.value = keysymToUtf8(fromBase16(composeValue + 3, composeValueEnd));
} else {
// octal character code
- QString hexStr = QString::number(codeValue.toUInt(0, 8), 16);
- elem.value = keysymToUtf8(hexStr.toUInt(0, 16));
+ elem.value = keysymToUtf8(fromBase8(composeValue + 1, composeValueEnd));
}
} else {
// handle direct text encoded in the locale
- elem.value = valueType.unicode();
+ if (*composeValue == '\\')
+ ++composeValue;
+ elem.value = QString::fromUtf8(composeValue).at(0).unicode();
+ ++composeValue;
}
+#ifdef DEBUG_GENERATOR
// find the comment
- int commnetIndex = line.lastIndexOf(quote) + 1;
- elem.comment = line.mid(commnetIndex).trimmed();
-
- // Convert to X11 keysym
- int count = keyList.length();
- for (int i = 0; i < QT_KEYSEQUENCE_MAX_LEN; i++) {
- if (i < count) {
- QString keysym = keyList.at(i);
- keysym.remove(keysym.length() - 1, 1);
- keysym.remove(0, 1);
+ elem.comment = QString::fromUtf8(composeValueEnd + 1).trimmed();
+#endif
- if (keysym == QLatin1String("dead_inverted_breve"))
- keysym = QStringLiteral("dead_invertedbreve");
- else if (keysym == QLatin1String("dead_double_grave"))
- keysym = QStringLiteral("dead_doublegrave");
+ // find the key sequence and convert to X11 keysym
+ char *k = line;
+ const char *kend = keysEnd;
- elem.keys[i] = stringToKeysym(keysym);
+ for (int i = 0; i < QT_KEYSEQUENCE_MAX_LEN; i++) {
+ // find the next pair of angle brackets and get the contents within
+ while (k < kend && *k != '<')
+ ++k;
+ char *sym = ++k;
+ while (k < kend && *k != '>')
+ ++k;
+ *k = '\0';
+ if (k < kend) {
+ elem.keys[i] = xkb_keysym_from_name(sym, (xkb_keysym_flags)0);
+ if (elem.keys[i] == XKB_KEY_NoSymbol) {
+ if (!strcmp(sym, "dead_inverted_breve"))
+ elem.keys[i] = XKB_KEY_dead_invertedbreve;
+ else if (!strcmp(sym, "dead_double_grave"))
+ elem.keys[i] = XKB_KEY_dead_doublegrave;
+ else
+ qWarning() << QString("Qt Warning - invalid keysym: %1").arg(sym);
+ }
} else {
elem.keys[i] = 0;
}
@@ -372,6 +414,7 @@ void TableGenerator::parseKeySequence(QString line)
void TableGenerator::printComposeTable() const
{
+#ifdef DEBUG_GENERATOR
if (composeTable().isEmpty())
return;
@@ -393,8 +436,8 @@ void TableGenerator::printComposeTable() const
.arg(comma)
.arg(elem.comment));
}
-
qDebug() << "output: \n" << output;
+#endif
}
void TableGenerator::orderComposeTable()
diff --git a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.h b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.h
index cc1db20432..aa65b7b895 100644
--- a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.h
+++ b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.h
@@ -42,19 +42,29 @@
#ifndef QTABLEGENERATOR_H
#define QTABLEGENERATOR_H
-#include <QtCore/QList>
+#include <QtCore/QVector>
#include <QtCore/QFile>
#include <QtCore/QMap>
#include <QtCore/QString>
#define QT_KEYSEQUENCE_MAX_LEN 6
+//#define DEBUG_GENERATOR
+
struct QComposeTableElement {
uint keys[QT_KEYSEQUENCE_MAX_LEN];
uint value;
+#ifdef DEBUG_GENERATOR
QString comment;
+#endif
};
+#ifndef DEBUG_GENERATOR
+QT_BEGIN_NAMESPACE
+Q_DECLARE_TYPEINFO(QComposeTableElement, Q_PRIMITIVE_TYPE);
+QT_END_NAMESPACE
+#endif
+
class Compare
{
public:
@@ -97,12 +107,12 @@ public:
void printComposeTable() const;
void orderComposeTable();
- QList<QComposeTableElement> composeTable() const;
+ QVector<QComposeTableElement> composeTable() const;
TableState tableState() const { return m_state; }
protected:
bool processFile(QString composeFileName);
- void parseKeySequence(QString line);
+ void parseKeySequence(char *line);
void parseIncludeInstruction(QString line);
void findComposeFile();
@@ -110,16 +120,14 @@ protected:
QString systemComposeDir();
ushort keysymToUtf8(quint32 sym);
- quint32 stringToKeysym(QString keysymName);
- void readLocaleMappings();
+ QString readLocaleMappings(const QByteArray &locale);
void initPossibleLocations();
bool cleanState() const { return ((m_state & NoErrors) == NoErrors); }
QString locale() const;
private:
- QList<QComposeTableElement> m_composeTable;
- QMap<QString, QString> m_localeToTable;
+ QVector<QComposeTableElement> m_composeTable;
TableState m_state;
QString m_systemComposeDir;
QList<QString> m_possibleLocations;
diff --git a/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.cpp b/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.cpp
index 433c9eec37..611b9fdd9b 100644
--- a/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.cpp
+++ b/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.cpp
@@ -169,11 +169,11 @@ static bool isDuplicate(const QComposeTableElement &lhs, const QComposeTableElem
bool QComposeInputContext::checkComposeTable()
{
- QList<QComposeTableElement>::iterator it =
- qLowerBound(m_composeTable.begin(), m_composeTable.end(), m_composeBuffer, Compare());
+ QVector<QComposeTableElement>::const_iterator it =
+ qLowerBound(m_composeTable.constBegin(), m_composeTable.constEnd(), m_composeBuffer, Compare());
// prevent dereferencing an 'end' iterator, which would result in a crash
- if (it == m_composeTable.end())
+ if (it == m_composeTable.constEnd())
it -= 1;
QComposeTableElement elem = *it;
diff --git a/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.h b/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.h
index 1ced2f8ded..def63486a7 100644
--- a/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.h
+++ b/src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.h
@@ -75,7 +75,7 @@ protected:
private:
QObject *m_focusObject;
- QList<QComposeTableElement> m_composeTable;
+ QVector<QComposeTableElement> m_composeTable;
uint m_composeBuffer[QT_KEYSEQUENCE_MAX_LEN + 1];
TableGenerator::TableState m_tableState;
};
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
index 5649f3ad73..e135f36e78 100644
--- a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
+++ b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
@@ -231,8 +231,7 @@ NSArray *unignoredChildren(id parentObject, QAccessibleInterface *interface)
NSMutableArray *kids = [NSMutableArray arrayWithCapacity:numKids];
for (int i = 0; i < numKids; ++i) {
QAccessibleInterface *child = interface->child(i);
- Q_ASSERT(child);
- if (child->state().invalid || child->state().invisible)
+ if (!child || !child->isValid() || child->state().invalid || child->state().invisible)
continue;
QAccessible::Id childId = QAccessible::uniqueId(child);
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index fcebb7e0dc..20f767e240 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -489,6 +489,9 @@ void QCocoaWindow::setWindowFlags(Qt::WindowFlags flags)
[m_nsWindow setStyleMask:styleMask];
[m_nsWindow setLevel:level];
setWindowShadow(flags);
+ if (!(styleMask & NSBorderlessWindowMask)) {
+ setWindowTitle(window()->title());
+ }
}
m_windowFlags = flags;
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index 3063ce452e..e529e445ad 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -1034,7 +1034,7 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
if ([theEvent respondsToSelector:@selector(scrollingDeltaX)]) {
NSEventPhase phase = [theEvent phase];
- if (phase == NSEventPhaseBegan) {
+ if (phase == NSEventPhaseBegan || phase == NSEventPhaseNone) {
currentWheelModifiers = [QNSView convertKeyModifiers:[theEvent modifierFlags]];
}
@@ -1056,7 +1056,7 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
QWindowSystemInterface::handleWheelEvent(m_window, qt_timestamp, qt_windowPoint, qt_screenPoint, pixelDelta, angleDelta, currentWheelModifiers, ph);
- if (phase == NSEventPhaseEnded || phase == NSEventPhaseCancelled) {
+ if (phase == NSEventPhaseEnded || phase == NSEventPhaseCancelled || phase == NSEventPhaseNone) {
currentWheelModifiers = Qt::NoModifier;
}
} else
@@ -1142,7 +1142,7 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
if (m_sendKeyEvent && m_composingText.isEmpty())
QWindowSystemInterface::handleExtendedKeyEvent(m_window, timestamp, QEvent::Type(eventType), keyCode, modifiers,
- nativeScanCode, nativeVirtualKey, nativeModifiers, text);
+ nativeScanCode, nativeVirtualKey, nativeModifiers, text, [nsevent isARepeat]);
m_sendKeyEvent = false;
}
diff --git a/src/plugins/platforms/windows/qtwindowsglobal.h b/src/plugins/platforms/windows/qtwindowsglobal.h
index dcd3db2d47..64bf1d71ca 100644
--- a/src/plugins/platforms/windows/qtwindowsglobal.h
+++ b/src/plugins/platforms/windows/qtwindowsglobal.h
@@ -89,6 +89,7 @@ enum WindowsEventType // Simplify event types
CursorEvent = MouseEventFlag + 3,
TouchEvent = TouchEventFlag + 1,
NonClientMouseEvent = NonClientEventFlag + MouseEventFlag + 1,
+ NonClientHitTest = NonClientEventFlag + 2,
KeyEvent = KeyEventFlag + 1,
KeyDownEvent = KeyEventFlag + KeyDownEventFlag + 1,
InputMethodKeyEvent = InputMethodEventFlag + KeyEventFlag + 1,
@@ -143,6 +144,10 @@ inline QtWindows::WindowsEventType windowsEventType(UINT message, WPARAM wParamI
return QtWindows::ResizeEvent;
case WM_NCCALCSIZE:
return QtWindows::CalculateSize;
+#ifndef Q_OS_WINCE
+ case WM_NCHITTEST:
+ return QtWindows::NonClientHitTest;
+#endif // !Q_OS_WINCE
case WM_GETMINMAXINFO:
return QtWindows::QuerySizeHints;
case WM_KEYDOWN: // keyboard event
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp
index de0a583e58..132b3684e9 100644
--- a/src/plugins/platforms/windows/qwindowscontext.cpp
+++ b/src/plugins/platforms/windows/qwindowscontext.cpp
@@ -839,7 +839,9 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
return true;// maybe available on some SDKs revisit WM_NCCALCSIZE
case QtWindows::CalculateSize:
return QWindowsGeometryHint::handleCalculateSize(platformWindow->customMargins(), msg, result);
-#endif
+ case QtWindows::NonClientHitTest:
+ return platformWindow->handleNonClientHitTest(QPoint(msg.pt.x, msg.pt.y), result);
+#endif // !Q_OS_WINCE
case QtWindows::ExposeEvent:
return platformWindow->handleWmPaint(hwnd, message, wParam, lParam);
case QtWindows::NonClientMouseEvent:
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index e7e964a128..8ec10294a2 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -1796,6 +1796,47 @@ void QWindowsWindow::getSizeHints(MINMAXINFO *mmi) const
if (QWindowsContext::verboseWindows)
qDebug() << __FUNCTION__ << window() << *mmi;
}
+
+bool QWindowsWindow::handleNonClientHitTest(const QPoint &globalPos, LRESULT *result) const
+{
+ // QTBUG-32663, suppress resize cursor for fixed size windows.
+ const QWindow *w = window();
+ if (!w->isTopLevel() // Task 105852, minimized windows need to respond to user input.
+ || (m_windowState != Qt::WindowNoState && m_windowState != Qt::WindowActive)
+ || (m_data.flags & Qt::FramelessWindowHint)) {
+ return false;
+ }
+ const QSize minimumSize = w->minimumSize();
+ if (minimumSize.isEmpty())
+ return false;
+ const QSize maximumSize = w->maximumSize();
+ const bool fixedWidth = minimumSize.width() == maximumSize.width();
+ const bool fixedHeight = minimumSize.height() == maximumSize.height();
+ if (!fixedWidth && !fixedHeight)
+ return false;
+ const QPoint localPos = w->mapFromGlobal(globalPos);
+ const QSize size = w->size();
+ if (fixedHeight) {
+ if (localPos.y() >= size.height()) {
+ *result = HTBORDER; // Unspecified border, no resize cursor.
+ return true;
+ }
+ if (localPos.y() < 0) {
+ const QMargins margins = frameMargins();
+ const int topResizeBarPos = margins.left() - margins.top();
+ if (localPos.y() < topResizeBarPos) {
+ *result = HTCAPTION; // Extend caption over top resize bar, let's user move the window.
+ return true;
+ }
+ }
+ }
+ if (fixedWidth && (localPos.x() < 0 || localPos.x() >= size.width())) {
+ *result = HTBORDER; // Unspecified border, no resize cursor.
+ return true;
+ }
+ return false;
+}
+
#endif // !Q_OS_WINCE
#ifndef QT_NO_CURSOR
diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h
index 996542f92a..f7d142fc36 100644
--- a/src/plugins/platforms/windows/qwindowswindow.h
+++ b/src/plugins/platforms/windows/qwindowswindow.h
@@ -234,7 +234,8 @@ public:
void releaseDC();
#ifndef Q_OS_WINCE // maybe available on some SDKs revisit WM_GETMINMAXINFO
void getSizeHints(MINMAXINFO *mmi) const;
-#endif
+ bool handleNonClientHitTest(const QPoint &globalPos, LRESULT *result) const;
+#endif // !Q_OS_WINCE
#ifndef QT_NO_CURSOR
QWindowsWindowCursor cursor() const { return m_cursor; }
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
index ee1fe44530..b144d953a7 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -419,8 +419,6 @@ void QXcbConnection::xi2HandleEvent(xcb_ge_event_t *event)
touchPoint.state = Qt::TouchPointMoved;
dev->pointPressedPosition[touchPoint.id] = QPointF(x, y);
}
- else
- touchPoint.state = Qt::TouchPointStationary;
break;
case XI_TouchEnd:
touchPoint.state = Qt::TouchPointReleased;
@@ -442,9 +440,13 @@ void QXcbConnection::xi2HandleEvent(xcb_ge_event_t *event)
" area " << touchPoint.area << " pressure " << touchPoint.pressure;
#endif
QWindowSystemInterface::handleTouchEvent(platformWindow->window(), xiEvent->time, dev->qtTouchDevice, m_touchPoints.values());
- // If a touchpoint was released, we can forget it, because the ID won't be reused.
if (touchPoint.state == Qt::TouchPointReleased)
+ // If a touchpoint was released, we can forget it, because the ID won't be reused.
m_touchPoints.remove(touchPoint.id);
+ else
+ // Make sure that we don't send TouchPointPressed/Moved in more than one QTouchEvent
+ // with this touch point if the next XI2 event is about a different touch point.
+ touchPoint.state = Qt::TouchPointStationary;
}
}
#endif // XCB_USE_XINPUT22
diff --git a/src/src.pro b/src/src.pro
index 6815fe4a75..c6ae533cff 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -143,5 +143,9 @@ nacl: SUBDIRS -= src_network src_testlib
android:!android-no-sdk: SUBDIRS += src_android
+TR_EXCLUDE = \
+ src_tools_bootstrap src_tools_moc src_tools_rcc src_tools_uic \
+ src_tools_bootstrap_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml
+
sub-tools.depends = $$TOOLS
-QMAKE_EXTRA_TARGETS = sub-tools
+QMAKE_EXTRA_TARGETS = sub-tools \ No newline at end of file
diff --git a/src/testlib/qtestlog.cpp b/src/testlib/qtestlog.cpp
index 99c7ec749d..d094372d0b 100644
--- a/src/testlib/qtestlog.cpp
+++ b/src/testlib/qtestlog.cpp
@@ -76,14 +76,6 @@ static void saveCoverageTool(const char * appname, bool testfailed, bool install
#endif
}
-//
-// declare deprecated API from qlogging.h locally
-// (we can't use qInstallMessageHandler because it would break
-// tests that (still) rely on qInstallMsgHandler.)
-//
-typedef void (*QtMsgHandler)(QtMsgType, const char *);
-Q_CORE_EXPORT QtMsgHandler qInstallMsgHandler(QtMsgHandler);
-
namespace QTest {
int fails = 0;
@@ -212,7 +204,7 @@ namespace QTest {
static int maxWarnings = 2002;
static bool installedTestCoverage = true;
- static QtMsgHandler oldMessageHandler;
+ static QtMessageHandler oldMessageHandler;
static bool handleIgnoredMessage(QtMsgType type, const char *msg)
{
@@ -238,23 +230,17 @@ namespace QTest {
return false;
}
-// don't warn about qInstallMsgHandler
-#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406) && !defined(Q_CC_INTEL)
-# pragma GCC diagnostic push
-# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-#endif
-
- static void messageHandler(QtMsgType type, const char *msg)
+ static void messageHandler(QtMsgType type, const QMessageLogContext & /*context*/, const QString &message)
{
static QBasicAtomicInt counter = Q_BASIC_ATOMIC_INITIALIZER(QTest::maxWarnings);
- if (!msg || QTest::TestLoggers::loggerCount() == 0) {
+ if (QTest::TestLoggers::loggerCount() == 0) {
// if this goes wrong, something is seriously broken.
- qInstallMsgHandler(oldMessageHandler);
- QTEST_ASSERT(msg);
+ qInstallMessageHandler(oldMessageHandler);
QTEST_ASSERT(QTest::TestLoggers::loggerCount() != 0);
}
+ QByteArray msg = message.toLocal8Bit();
if (handleIgnoredMessage(type, msg))
// the message is expected, so just swallow it.
return;
@@ -293,10 +279,6 @@ namespace QTest {
break;
}
}
-
-#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406) && !defined(Q_CC_INTEL)
-# pragma GCC diagnostic pop
-#endif
}
void QTestLog::enterTestFunction(const char* function)
@@ -399,31 +381,21 @@ void QTestLog::addBenchmarkResult(const QBenchmarkResult &result)
QTest::TestLoggers::addBenchmarkResult(result);
}
-// don't warn about qInstallMsgHandler
-#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406) && !defined(Q_CC_INTEL)
-# pragma GCC diagnostic push
-# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-#endif
-
void QTestLog::startLogging()
{
QTest::TestLoggers::startLogging();
- QTest::oldMessageHandler = qInstallMsgHandler(QTest::messageHandler);
+ QTest::oldMessageHandler = qInstallMessageHandler(QTest::messageHandler);
}
void QTestLog::stopLogging()
{
- qInstallMsgHandler(QTest::oldMessageHandler);
+ qInstallMessageHandler(QTest::oldMessageHandler);
QTest::TestLoggers::stopLogging();
QTest::TestLoggers::destroyLoggers();
QTest::loggerUsingStdout = false;
saveCoverageTool(QTestResult::currentAppname(), failCount() != 0, QTestLog::installedTestCoverage());
}
-#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406) && !defined(Q_CC_INTEL)
-# pragma GCC diagnostic pop
-#endif
-
void QTestLog::addLogger(LogMode mode, const char *filename)
{
if (filename && strcmp(filename, "-") == 0)
diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h
index 4d70aff27e..8efa80789c 100644
--- a/src/testlib/qtestmouse.h
+++ b/src/testlib/qtestmouse.h
@@ -61,6 +61,8 @@
#include <QtWidgets/qwidget.h>
#endif
+#include <QDebug>
+
QT_BEGIN_NAMESPACE
Q_GUI_EXPORT void qt_handleMouseEvent(QWindow *w, const QPointF & local, const QPointF & global, Qt::MouseButtons b, Qt::KeyboardModifiers mods = Qt::NoModifier);
@@ -84,8 +86,10 @@ namespace QTest
QTEST_ASSERT(window);
extern int Q_TESTLIB_EXPORT defaultMouseDelay();
- if (!window->geometry().contains(pos))
+ // pos is in window local coordinates
+ if (window->geometry().width() <= pos.x() || window->geometry().height() <= pos.y()) {
QTest::qWarn("Mouse event occurs outside of target window.");
+ }
static Qt::MouseButton lastButton = Qt::NoButton;
diff --git a/src/tools/moc/main.cpp b/src/tools/moc/main.cpp
index 749cca0911..431c8dd46c 100644
--- a/src/tools/moc/main.cpp
+++ b/src/tools/moc/main.cpp
@@ -42,7 +42,7 @@
#include "preprocessor.h"
#include "moc.h"
#include "outputrevision.h"
-#include <qconfig.cpp>
+
#include <qfile.h>
#include <qfileinfo.h>
#include <qdir.h>
diff --git a/src/tools/moc/moc.pro b/src/tools/moc/moc.pro
index d56c2805eb..d39749a318 100644
--- a/src/tools/moc/moc.pro
+++ b/src/tools/moc/moc.pro
@@ -3,8 +3,6 @@ CONFIG += force_bootstrap
DEFINES += QT_MOC QT_NO_CAST_FROM_ASCII QT_NO_CAST_FROM_BYTEARRAY QT_NO_COMPRESS
-INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global
-
include(moc.pri)
HEADERS += qdatetime_p.h
SOURCES += main.cpp
diff --git a/src/tools/qdoc/doc/qtgui-qdocconf.qdoc b/src/tools/qdoc/doc/qtgui-qdocconf.qdoc
new file mode 100644
index 0000000000..7e6da0feb5
--- /dev/null
+++ b/src/tools/qdoc/doc/qtgui-qdocconf.qdoc
@@ -0,0 +1,292 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+
+\page qtgui-qdocconf.html
+\title qtgui.qdocconf with Comments
+
+\brief A walkthrough of a typical qdocconf file
+
+This document goes through a typical Qt 5 qdocconf file. The contents is taken from
+Qt GUI's \e qtgui.qdocconf file.
+
+Below you will find the full contents of qtgui.qdocconf. The subsequent section will discuss
+every statement in the qdocconf file.
+
+\code
+ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
+
+ project = QtGui
+ description = Qt GUI Reference Documentation
+ url = http://qt-project.org/doc/qt-$QT_VER/qtgui
+ version = $QT_VERSION
+
+ examplesinstallpath = gui
+
+ qhp.projects = QtGui
+
+ qhp.QtGui.file = qtgui.qhp
+ qhp.QtGui.namespace = org.qt-project.qtgui.$QT_VERSION_TAG
+ qhp.QtGui.virtualFolder = qtgui
+ qhp.QtGui.indexTitle = Qt GUI
+ qhp.QtGui.indexRoot =
+
+ qhp.QtGui.filterAttributes = qtgui $QT_VERSION qtrefdoc
+ qhp.QtGui.customFilters.Qt.name = Qtgui $QT_VERSION
+ qhp.QtGui.customFilters.Qt.filterAttributes = qtgui $QT_VERSION
+
+ qhp.QtGui.subprojects = classes
+ qhp.QtGui.subprojects.classes.title = C++ Classes
+ qhp.QtGui.subprojects.classes.indexTitle = Qt GUI C++ Classes
+ qhp.QtGui.subprojects.classes.selectors = class fake:headerfile
+ qhp.QtGui.subprojects.classes.sortPages = true
+
+ tagfile = ../../../doc/qtgui/qtgui.tags
+
+ depends += \
+ qtcore \
+ qtnetwork \
+ qtopengl \
+ qtsvg \
+ qtqml \
+ qtquick \
+ qtwidgets \
+ qtdoc
+
+ headerdirs += ..
+
+ sourcedirs += .. \
+ ../../../examples/gui/doc/src
+
+ exampledirs += ../../../examples/gui \
+ snippets
+
+ imagedirs += images \
+ ../../../examples/gui/doc/images \
+ ../../../doc/src/images \
+\endcode
+
+\title Qtgui.qdocconf with notes
+
+\code
+ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
+\endcode
+
+QDoc inherits the default templates, macros, and settings from the directory
+specified from the \c $QT_INSTALL_DOCS variable. \c qmake prints the value of
+the variable.
+\code
+ qmake -query
+\endcode
+
+\sa include
+
+\code
+ project = QtGui
+\endcode
+
+The \c project variable sets the name of the QDoc build. This name is also
+used to form the index file, which, in this case, will be \e qtgui.index. The
+name of the index file doesn't adopt the uppercase letters of the project name.
+
+\sa project
+
+\code
+ description = Qt GUI Reference Documentation
+\endcode
+
+A short description of the project concerned.
+
+\code
+ url = http://qt-project.org/doc/qt-$QT_VER/qtgui
+\endcode
+
+The \c url variable holds the base url of the project.
+
+The URL is stored in the generated index file for the project.
+QDoc will use this as the base URL when constructing links
+to content listed in the index.
+
+\note QDoc omits this value when the -installdir argument
+is specified when running QDoc.
+
+\keyword examplesinstallpath
+
+\code
+ examplesinstallpath = gui
+\endcode
+
+This \e examplesinstallpath variable indicates that the examples will be installed
+in the \e gui directory under the parent examples directory (for Qt, this is
+$QT_INSTALL_EXAMPLES).
+
+\note The examplepath variable has to match the example directory specified in exampledirs.
+\sa exampledirs
+
+\code
+ qhp.projects = QtGui
+ qhp.QtGui.file = qtgui.qhp
+\endcode
+
+The following parameters are for creating a QHP file (\e .qhp). The qhelpgenerator
+program can convert the QHP file into a QCH file (\e .qch), which can be opened in
+Qt Assistant or Qt Creator.
+
+\code
+ qhp.QtGui.namespace = org.qt-project.qtgui.$QT_VERSION_TAG
+\endcode
+
+A unique identifier which enables QHelpEngine to retrieve the helpfile
+from a given link. This namespace is also used as a base url for links
+to the helpfile.
+
+\code
+ qhp.QtGui.virtualFolder = qtgui
+\endcode
+
+Virtual folders group documentation together into a single location. A
+virtual folder will become the root directory of all files referenced in a
+compressed help file.
+
+When two manuals are located in the same virtual folder, it is possible to refer
+ to sections of the other manual using relative paths.
+The virtual folder tag is mandatory and the folder must not contain any '/'.
+
+\code
+ qhp.QtGui.indexTitle = Qt GUI the title of the page that has the contents
+\endcode
+
+This is the title of the page that has the contents.
+
+\code
+ qhp.QtGui.indexRoot = to be checked
+\endcode
+
+Specifies the title of the root (namespace) page to generate the documentation for.
+Typically defined as an empty string.
+
+\code
+ qhp.QtGui.filterAttributes = qtgui $QT_VERSION qtrefdoc
+ qhp.QtGui.customFilters.Qt.name = QtGui $QT_VERSION
+ qhp.QtGui.customFilters.Qt.filterAttributes = qtgui $QT_VERSION
+\endcode
+
+The documentation set (one per QDoc project) can have any number of filter
+attributes assigned to it. A filter attribute is an ordinary string which
+can be freely chosen. Additionally, custom filters that reference above
+attributes can be defined. Qt Assistant will display the name of the custom
+filter in its \gui{Filtered by} drop-down list. Only the documentation sets
+that have their filter attributes match the attributes of the selected
+custom filter will be shown.
+
+\code
+ qhp.QtGui.subprojects = classes
+ qhp.QtGui.subprojects.classes.title = C++ Classes
+ qhp.QtGui.subprojects.classes.indexTitle = Qt GUI C++ Classes
+\endcode
+The subprojects specify the sections that are displayed in the table of contents
+for this project. In this example, the subproject, which is displayed in
+the Assistant's sidebar, is named "C++ Classes" and its index is the page
+titled "QT GUI C++ Classes".
+
+\code
+ qhp.QtGui.subprojects.classes.selectors = class fake:headerfile
+\endcode
+
+Lists all headerfiles.
+
+A ‘fake’ type specifies a generic documentation node, and is followed by
+a c\ : and a \e subtype specifier.
+
+Possible values:
+\code
+ example
+ headerfile
+ file
+ group
+ module
+ page
+ externalpage
+ qmlclass
+ qmlpropertygroup
+ qmlbasictype
+\endcode
+
+tagfile = ../../../doc/qtgui/qtgui.tags
+This specifies the Doxygen tag file that needs to be written when the html is generated
+by QDoc.
+
+\code
+depends += \
+ qtcore \
+ qtnetwork \
+ qtopengl \
+ qtsvg \
+ qtqml \
+ qtquick \
+ qtwidgets \
+ qtdoc
+\endcode
+
+Specifies the modules QDoc needs to load for generating output for Qt GUI.
+QDoc loads the index files for all modules listed in the depends statement in
+order to enable linking to pages in these modules.
+
+\code
+ headerdirs += ..
+\endcode
+
+Add the parent directory to the list of directories containing the header files
+associated with the \e .cpp source files.
+
+\code
+ sourcedirs += .. \
+ ../../../examples/gui/doc/src
+\endcode
+
+Add the specified directories to the list of directories containing the \e .cpp and
+\e .qdoc files used in the documentation.
+
+\code
+ exampledirs += ../../../examples/gui \
+ snippets
+\endcode
+\sa examplesinstallpath
+
+Add the two directories specified to the list of directories containing the source
+code of the example files.
+
+\code
+ imagedirs += images \
+ ../../../examples/gui/doc/images \
+ ../../../doc/src/images \
+\endcode
+
+Add the directories specified above to the list of directories where the images
+can be found.
+*/
diff --git a/src/tools/uic/main.cpp b/src/tools/uic/main.cpp
index baafb8ec92..a25a40052e 100644
--- a/src/tools/uic/main.cpp
+++ b/src/tools/uic/main.cpp
@@ -42,7 +42,7 @@
#include "uic.h"
#include "option.h"
#include "driver.h"
-#include "../../corelib/global/qconfig.cpp"
+
#include <qfile.h>
#include <qdir.h>
#include <qtextstream.h>
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp
index e0034d1298..75cd07bb80 100644
--- a/src/widgets/itemviews/qheaderview.cpp
+++ b/src/widgets/itemviews/qheaderview.cpp
@@ -2711,11 +2711,13 @@ void QHeaderView::paintSection(QPainter *painter, const QRect &rect, int logical
// the section position
int visual = visualIndex(logicalIndex);
Q_ASSERT(visual != -1);
- if (count() == 1)
+ bool first = d->isFirstVisibleSection(visual);
+ bool last = d->isLastVisibleSection(visual);
+ if (first && last)
opt.position = QStyleOptionHeader::OnlyOneSection;
- else if (visual == 0)
+ else if (first)
opt.position = QStyleOptionHeader::Beginning;
- else if (visual == count() - 1)
+ else if (last)
opt.position = QStyleOptionHeader::End;
else
opt.position = QStyleOptionHeader::Middle;
@@ -3138,6 +3140,22 @@ bool QHeaderViewPrivate::isSectionSelected(int section) const
return s;
}
+bool QHeaderViewPrivate::isFirstVisibleSection(int section) const
+{
+ if (sectionStartposRecalc)
+ recalcSectionStartPos();
+ const SectionItem &item = sectionItems.at(section);
+ return item.size > 0 && item.calculated_startpos == 0;
+}
+
+bool QHeaderViewPrivate::isLastVisibleSection(int section) const
+{
+ if (sectionStartposRecalc)
+ recalcSectionStartPos();
+ const SectionItem &item = sectionItems.at(section);
+ return item.size > 0 && item.calculatedEndPos() == length;
+}
+
/*!
\internal
Returns the last visible (ie. not hidden) visual index
diff --git a/src/widgets/itemviews/qheaderview_p.h b/src/widgets/itemviews/qheaderview_p.h
index 2bbd21a942..a8c620b9d2 100644
--- a/src/widgets/itemviews/qheaderview_p.h
+++ b/src/widgets/itemviews/qheaderview_p.h
@@ -115,6 +115,8 @@ public:
void _q_layoutChanged();
bool isSectionSelected(int section) const;
+ bool isFirstVisibleSection(int section) const;
+ bool isLastVisibleSection(int section) const;
inline bool rowIntersectsSelection(int row) const {
return (selectionModel ? selectionModel->rowIntersectsSelection(row, root) : false);
diff --git a/src/widgets/widgets/qmdiarea.cpp b/src/widgets/widgets/qmdiarea.cpp
index b2409e300c..13c9bf8deb 100644
--- a/src/widgets/widgets/qmdiarea.cpp
+++ b/src/widgets/widgets/qmdiarea.cpp
@@ -2043,7 +2043,7 @@ void QMdiArea::setBackground(const QBrush &brush)
if (d->background != brush) {
d->background = brush;
d->viewport->setAttribute(Qt::WA_OpaquePaintEvent, brush.isOpaque());
- update();
+ d->viewport->update();
}
}
diff --git a/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp b/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp
index fc79b40a18..52a6d3aa46 100644
--- a/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp
+++ b/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp
@@ -284,12 +284,12 @@ void tst_QPointF::division()
{
QPointF p(1e-14, 1e-14);
p = p / sqrt(dot(p, p));
- qFuzzyCompare(dot(p, p), 1);
+ QCOMPARE(dot(p, p), qreal(1.0));
}
{
QPointF p(1e-14, 1e-14);
p /= sqrt(dot(p, p));
- qFuzzyCompare(dot(p, p), 1);
+ QCOMPARE(dot(p, p), qreal(1.0));
}
}
diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
index 85b60686d6..a15daf660a 100644
--- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
+++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
@@ -947,7 +947,8 @@ void tst_QSslSocket::protocol()
socket->abort();
QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
socket->connectToHost(QtNetworkSettings::serverName(), 443);
- QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
+ if (setProxy && !socket->waitForConnected())
+ QSKIP("Skipping flaky test - See QTBUG-29941");
socket->startClientEncryption();
if (setProxy && !socket->waitForEncrypted())
QSKIP("Skipping flaky test - See QTBUG-29941");
@@ -1263,7 +1264,9 @@ void tst_QSslSocket::setSslConfiguration()
this->socket = socket.data();
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
QFETCH(bool, works);
- QCOMPARE(socket->waitForEncrypted(10000), works);
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy && (socket->waitForEncrypted(10000) != works))
+ QSKIP("Skipping flaky test - See QTBUG-29941");
if (works) {
socket->disconnectFromHost();
QVERIFY2(socket->waitForDisconnected(), qPrintable(socket->errorString()));
@@ -2114,7 +2117,9 @@ void tst_QSslSocket::ignoreSslErrorsListWithSlot()
QFETCH(int, expectedSslErrorSignalCount);
bool expectEncryptionSuccess = (expectedSslErrorSignalCount == 0);
- QCOMPARE(socket.waitForEncrypted(10000), expectEncryptionSuccess);
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy && (socket.waitForEncrypted(10000) != expectEncryptionSuccess))
+ QSKIP("Skipping flaky test - See QTBUG-29941");
}
// make sure a closed socket has no bytesAvailable()
@@ -2205,7 +2210,8 @@ void tst_QSslSocket::blacklistedCertificates()
QVERIFY(server.listen(QHostAddress::LocalHost));
receiver->connectToHost("127.0.0.1", server.serverPort());
QVERIFY(receiver->waitForConnected(5000));
- QVERIFY(server.waitForNewConnection(0));
+ if (!server.waitForNewConnection(0))
+ QSKIP("Skipping flaky test - See QTBUG-29941");
QSslSocket *sender = server.socket;
QVERIFY(sender);
@@ -2341,7 +2347,9 @@ void tst_QSslSocket::resume()
socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy && QTestEventLoop::instance().timeout())
+ QSKIP("Skipping flaky test - See QTBUG-29941");
QCOMPARE(sslErrorSpy.count(), 1);
QCOMPARE(errorSpy.count(), 0);
QCOMPARE(encryptedSpy.count(), 0);
diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
index 9353aa0eba..2c03850181 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -4423,10 +4423,13 @@ void tst_QGraphicsItem::defaultItemTest_QGraphicsEllipseItem()
QCOMPARE(item.boundingRect(), QRectF(0, 0, 100, 100));
item.setSpanAngle(90 * 16);
- qFuzzyCompare(item.boundingRect().left(), qreal(50.0));
- qFuzzyCompare(item.boundingRect().top(), qreal(0.0));
- qFuzzyCompare(item.boundingRect().width(), qreal(50.0));
- qFuzzyCompare(item.boundingRect().height(), qreal(50.0));
+ // for some reason, the bounding rect has very few significant digits
+ // (i.e. it's likely that floats are being used inside it), so we
+ // must force the conversion from qreals to float or these tests will fail
+ QCOMPARE(float(item.boundingRect().left()), 50.0f);
+ QVERIFY(qFuzzyIsNull(float(item.boundingRect().top())));
+ QCOMPARE(float(item.boundingRect().width()), 50.0f);
+ QCOMPARE(float(item.boundingRect().height()), 50.0f);
item.setPen(QPen(Qt::black, 1));
QCOMPARE(item.boundingRect(), QRectF(49.5, -0.5, 51, 51));
diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
index ba3a150154..09f0161dff 100644
--- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
+++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
@@ -46,6 +46,7 @@
#include <QStringListModel>
#include <QSortFilterProxyModel>
#include <QTableView>
+#include <QProxyStyle>
#include <qabstractitemmodel.h>
#include <qapplication.h>
@@ -59,6 +60,20 @@ typedef QList<int> IntList;
typedef QList<bool> BoolList;
+class TestStyle : public QProxyStyle
+{
+public:
+ void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
+ {
+ if (element == CE_HeaderSection) {
+ if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(option))
+ lastPosition = header->position;
+ }
+ QProxyStyle::drawControl(element, option, painter, widget);
+ }
+ mutable QStyleOptionHeader::SectionPosition lastPosition;
+};
+
class protected_QHeaderView : public QHeaderView
{
Q_OBJECT
@@ -229,6 +244,7 @@ private slots:
void mixedTests();
void resizeToContentTest();
void testStreamWithHide();
+ void testStylePosition();
protected:
void setupTestData(bool use_reset_model = false);
@@ -2732,5 +2748,54 @@ void tst_QHeaderView::testStreamWithHide()
#endif
}
+void tst_QHeaderView::testStylePosition()
+{
+ topLevel->show();
+ QVERIFY(QTest::qWaitForWindowExposed(topLevel));
+
+ protected_QHeaderView *header = static_cast<protected_QHeaderView *>(view);
+
+ TestStyle proxy;
+ header->setStyle(&proxy);
+
+ QImage image(1, 1, QImage::Format_ARGB32);
+ QPainter p(&image);
+
+ // 0, 1, 2, 3
+ header->paintSection(&p, view->rect(), 0);
+ QCOMPARE(proxy.lastPosition, QStyleOptionHeader::Beginning);
+ header->paintSection(&p, view->rect(), 1);
+ QCOMPARE(proxy.lastPosition, QStyleOptionHeader::Middle);
+ header->paintSection(&p, view->rect(), 2);
+ QCOMPARE(proxy.lastPosition, QStyleOptionHeader::Middle);
+ header->paintSection(&p, view->rect(), 3);
+ QCOMPARE(proxy.lastPosition, QStyleOptionHeader::End);
+
+ // (0),2,1,3
+ view->setSectionHidden(0, true);
+ view->swapSections(1, 2);
+ header->paintSection(&p, view->rect(), 1);
+ QCOMPARE(proxy.lastPosition, QStyleOptionHeader::Middle);
+ header->paintSection(&p, view->rect(), 2);
+ QCOMPARE(proxy.lastPosition, QStyleOptionHeader::Beginning);
+ header->paintSection(&p, view->rect(), 3);
+ QCOMPARE(proxy.lastPosition, QStyleOptionHeader::End);
+
+ // (1),2,0,(3)
+ view->setSectionHidden(3, true);
+ view->setSectionHidden(0, false);
+ view->setSectionHidden(1, true);
+ view->swapSections(0, 1);
+ header->paintSection(&p, view->rect(), 0);
+ QCOMPARE(proxy.lastPosition, QStyleOptionHeader::End);
+ header->paintSection(&p, view->rect(), 2);
+ QCOMPARE(proxy.lastPosition, QStyleOptionHeader::Beginning);
+
+ // (1),2,(0),(3)
+ view->setSectionHidden(0, true);
+ header->paintSection(&p, view->rect(), 2);
+ QCOMPARE(proxy.lastPosition, QStyleOptionHeader::OnlyOneSection);
+}
+
QTEST_MAIN(tst_QHeaderView)
#include "tst_qheaderview.moc"
diff --git a/tests/auto/widgets/kernel/qwidget/qwidget.pro b/tests/auto/widgets/kernel/qwidget/qwidget.pro
index 6916ee85e6..a4fcde8a34 100644
--- a/tests/auto/widgets/kernel/qwidget/qwidget.pro
+++ b/tests/auto/widgets/kernel/qwidget/qwidget.pro
@@ -23,3 +23,4 @@ x11 {
!wince*:win32: LIBS += -luser32 -lgdi32
mac:CONFIG+=insignificant_test # QTBUG-25300, QTBUG-23695
+linux-*:system(". /etc/lsb-release && [ $DISTRIB_CODENAME = oneiric ]"):DEFINES+=UBUNTU_ONEIRIC # QTBUG-30566 \ No newline at end of file
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index fefa7333d1..0085b75299 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -4859,6 +4859,9 @@ void tst_QWidget::moveChild_data()
void tst_QWidget::moveChild()
{
+#if defined(UBUNTU_ONEIRIC)
+ QSKIP("QTBUG-30566 - Unstable auto-test");
+#endif
QFETCH(QPoint, offset);
ColorWidget parent;
@@ -4909,6 +4912,9 @@ void tst_QWidget::moveChild()
void tst_QWidget::showAndMoveChild()
{
+#if defined(UBUNTU_ONEIRIC)
+ QSKIP("QTBUG-30566 - Unstable auto-test");
+#endif
QWidget parent(0, Qt::FramelessWindowHint);
// prevent custom styles
parent.setStyle(QStyleFactory::create(QLatin1String("Windows")));
@@ -7637,6 +7643,9 @@ void tst_QWidget::doubleRepaint()
if (!macHasAccessToWindowsServer())
QSKIP("Not having window server access causes the wrong number of repaints to be issues");
#endif
+#if defined(UBUNTU_ONEIRIC)
+ QSKIP("QTBUG-30566 - Unstable auto-test");
+#endif
UpdateWidget widget;
widget.setFocusPolicy(Qt::StrongFocus);
// Filter out activation change and focus events to avoid update() calls in QWidget.
diff --git a/tests/manual/manual.pro b/tests/manual/manual.pro
index c04f22b53b..381922288f 100644
--- a/tests/manual/manual.pro
+++ b/tests/manual/manual.pro
@@ -40,6 +40,7 @@ windowmodality \
widgetgrab \
xembed-raster \
xembed-widgets \
+shortcuts \
dialogs \
windowtransparency \
unc
diff --git a/tests/manual/shortcuts/main.cpp b/tests/manual/shortcuts/main.cpp
new file mode 100644
index 0000000000..95faff671c
--- /dev/null
+++ b/tests/manual/shortcuts/main.cpp
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QApplication>
+#include <QVBoxLayout>
+#include <QWidget>
+#include <QLabel>
+#include <QPushButton>
+
+class ShortcutTester : public QWidget
+{
+public:
+ ShortcutTester() {
+ setupLayout();
+ setFixedWidth(200);
+ }
+protected:
+ void setupLayout()
+ {
+ QVBoxLayout *layout = new QVBoxLayout(this);
+
+ QKeySequence sq1(Qt::AltModifier + Qt::ShiftModifier + Qt::Key_G);
+ QPushButton *b1 = new QPushButton(sq1.toString());
+ b1->setShortcut(sq1);
+
+ QKeySequence sq2(Qt::AltModifier + Qt::Key_G);
+ QPushButton *b2 = new QPushButton(sq2.toString());
+ b2->setShortcut(sq2);
+
+ QKeySequence sq3(Qt::ControlModifier + Qt::ShiftModifier + Qt::Key_R);
+ QPushButton *b3 = new QPushButton(sq3.toString());
+ b3->setShortcut(sq3);
+
+ QKeySequence sq4(Qt::ControlModifier + Qt::Key_R);
+ QPushButton *b4 = new QPushButton(sq4.toString());
+ b4->setShortcut(sq4);
+
+ QKeySequence sq5(Qt::ControlModifier + Qt::Key_Return);
+ QPushButton *b5 = new QPushButton(sq5.toString());
+ b5->setShortcut(sq5);
+
+ QKeySequence sq6(Qt::ControlModifier + Qt::ShiftModifier + Qt::AltModifier + Qt::Key_R);
+ QPushButton *b6 = new QPushButton(sq6.toString());
+ b6->setShortcut(sq6);
+
+ QKeySequence sq7(Qt::ShiftModifier + Qt::Key_5);
+ QPushButton *b7 = new QPushButton(sq7.toString());
+ b7->setShortcut(sq7);
+
+ QKeySequence sq8(Qt::ControlModifier + Qt::Key_Q);
+ QPushButton *b8 = new QPushButton(sq8.toString());
+ b8->setShortcut(sq8);
+
+ QKeySequence sq9(Qt::ControlModifier + Qt::Key_Plus);
+ QPushButton *b9 = new QPushButton(sq9.toString());
+ b9->setShortcut(sq9);
+
+ QKeySequence sq10(Qt::ControlModifier + Qt::Key_Y);
+ QPushButton *b10 = new QPushButton(sq10.toString());
+ b10->setShortcut(sq10);
+
+ QKeySequence sq11(Qt::ShiftModifier + Qt::Key_Comma);
+ QPushButton *b11 = new QPushButton(sq11.toString());
+ b11->setShortcut(sq11);
+
+ // LATIN SMALL LETTER O WITH STROKE
+ QKeySequence sq12(QString(QChar(ushort(0xf8))));
+ QPushButton *b12 = new QPushButton(sq12.toString());
+ b12->setShortcut(sq12);
+
+ // CYRILLIC SMALL LETTER ZHE
+ QKeySequence sq13(QString(QChar(ushort(0x436))));
+ QPushButton *b13 = new QPushButton(sq13.toString());
+ b13->setShortcut(sq13);
+
+ QLabel *testPurpose = new QLabel();
+ testPurpose->setWordWrap(true);
+ testPurpose->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Expanding);
+ testPurpose->setText("This test come in handy to verify shortcuts under different"
+ " keyboard layouts - qwerty, dvorak, non-latin (russian, arabic), etc.");
+ layout->addWidget(testPurpose);
+ layout->addWidget(b1);
+ layout->addWidget(b2);
+ layout->addWidget(b3);
+ layout->addWidget(b4);
+ layout->addWidget(b5);
+ layout->addWidget(b6);
+ layout->addWidget(b7);
+ layout->addWidget(b8);
+ layout->addWidget(b9);
+ layout->addWidget(b10);
+ layout->addWidget(b11);
+ layout->addWidget(new QLabel("Norwegian layout"));
+ layout->addWidget(b12);
+ layout->addWidget(new QLabel("Russian layout"));
+ layout->addWidget(b13);
+
+ setLayout(layout);
+ }
+};
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+
+ ShortcutTester tester;
+ tester.show();
+
+ return a.exec();
+}
diff --git a/tests/manual/shortcuts/shortcuts.pro b/tests/manual/shortcuts/shortcuts.pro
new file mode 100644
index 0000000000..3df6f2192b
--- /dev/null
+++ b/tests/manual/shortcuts/shortcuts.pro
@@ -0,0 +1,6 @@
+QT += core gui widgets
+
+TARGET = shortcuts
+TEMPLATE = app
+
+SOURCES += main.cpp
diff --git a/tools/configure/Makefile.mingw b/tools/configure/Makefile.mingw
index 7212b0d3a7..1994c9a52b 100644
--- a/tools/configure/Makefile.mingw
+++ b/tools/configure/Makefile.mingw
@@ -69,7 +69,6 @@ OBJECTS = \
qxmlstream.o \
qxmlutils.o \
quuid.o \
- qcryptographichash.o \
registry.o
$(TARGET): $(OBJECTS)
diff --git a/tools/configure/Makefile.win32 b/tools/configure/Makefile.win32
index 5b0a21a669..17c2d1089c 100644
--- a/tools/configure/Makefile.win32
+++ b/tools/configure/Makefile.win32
@@ -67,7 +67,6 @@ OBJECTS = \
qxmlstream.obj \
qxmlutils.obj \
quuid.obj \
- qcryptographichash.obj \
registry.obj \
configure_pch.obj
@@ -142,7 +141,6 @@ qmalloc.obj: $(CORESRC)\global\qmalloc.cpp $(PCH)
qxmlstream.obj: $(CORESRC)\xml\qxmlstream.cpp $(PCH)
qxmlutils.obj: $(CORESRC)\xml\qxmlutils.cpp $(PCH)
quuid.obj: $(CORESRC)\plugin\quuid.cpp $(PCH)
-qcryptographichash.obj: $(CORESRC)\tools\qcryptographichash.cpp $(PCH)
{$(CONFSRC)}.cpp{}.obj::
$(CXX) -c $(CXXFLAGS) $<
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index e2cddbc565..d31232262a 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -485,6 +485,14 @@ void Configure::parseCmdLine()
|| configCmdLine.at(i) == "-device") {
++i;
// do nothing
+ } else if (configCmdLine.at(i) == "-device-option") {
+ ++i;
+ const QString option = configCmdLine.at(i);
+ QString &devOpt = dictionary["DEVICE_OPTION"];
+ if (!devOpt.isEmpty())
+ devOpt.append("\n").append(option);
+ else
+ devOpt = option;
}
else if (configCmdLine.at(i) == "-no-zlib") {
@@ -1150,6 +1158,13 @@ void Configure::parseCmdLine()
dictionary[ "QT_HOST_DATA" ] = configCmdLine.at(i);
}
+ else if (configCmdLine.at(i) == "-extprefix") {
+ ++i;
+ if (i == argCount)
+ break;
+ dictionary[ "QT_EXT_PREFIX" ] = configCmdLine.at(i);
+ }
+
else if (configCmdLine.at(i) == "-make-tool") {
++i;
if (i == argCount)
@@ -1634,8 +1649,10 @@ bool Configure::displayHelp()
desc( "-prefix <dir>", "This will install everything relative to <dir> (default $QT_INSTALL_PREFIX)\n");
+ desc( "-extprefix <dir>", "When -sysroot is used, install everything to <dir>, rather than into SYSROOT/PREFIX.\n");
+
desc( "-hostprefix [dir]", "Tools and libraries needed when developing applications are installed in [dir]. "
- "If [dir] is not given, the current build directory will be used. (default PREFIX)\n");
+ "If [dir] is not given, the current build directory will be used. (default EXTPREFIX)\n");
desc("You may use these to separate different parts of the install:\n\n");
@@ -3053,6 +3070,41 @@ bool Configure::compilerSupportsFlag(const QString &compilerAndArgs)
return code == 0;
}
+void Configure::generateQDevicePri()
+{
+ FileWriter deviceStream(buildPath + "/mkspecs/qdevice.pri");
+ if (dictionary.contains("DEVICE_OPTION")) {
+ const QString devoptionlist = dictionary["DEVICE_OPTION"];
+ const QStringList optionlist = devoptionlist.split(QStringLiteral("\n"));
+ foreach (const QString &entry, optionlist)
+ deviceStream << entry << "\n";
+ }
+ if (dictionary.contains("ANDROID_SDK_ROOT") && dictionary.contains("ANDROID_NDK_ROOT")) {
+ QString android_platform(dictionary.contains("ANDROID_PLATFORM")
+ ? dictionary["ANDROID_PLATFORM"]
+ : QString("android-9"));
+ deviceStream << "android_install {" << endl;
+ deviceStream << " DEFAULT_ANDROID_SDK_ROOT = " << formatPath(dictionary["ANDROID_SDK_ROOT"]) << endl;
+ deviceStream << " DEFAULT_ANDROID_NDK_ROOT = " << formatPath(dictionary["ANDROID_NDK_ROOT"]) << endl;
+ deviceStream << " DEFAULT_ANDROID_PLATFORM = " << android_platform << endl;
+ if (QSysInfo::WordSize == 64)
+ deviceStream << " DEFAULT_ANDROID_NDK_HOST = windows-x86_64" << endl;
+ else
+ deviceStream << " DEFAULT_ANDROID_NDK_HOST = windows" << endl;
+ QString android_arch(dictionary.contains("ANDROID_TARGET_ARCH")
+ ? dictionary["ANDROID_TARGET_ARCH"]
+ : QString("armeabi-v7a"));
+ QString android_tc_vers(dictionary.contains("ANDROID_NDK_TOOLCHAIN_VERSION")
+ ? dictionary["ANDROID_NDK_TOOLCHAIN_VERSION"]
+ : QString("4.7"));
+ deviceStream << " DEFAULT_ANDROID_TARGET_ARCH = " << android_arch << endl;
+ deviceStream << " DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION = " << android_tc_vers << endl;
+ deviceStream << "}" << endl;
+ }
+ if (!deviceStream.flush())
+ dictionary[ "DONE" ] = "error";
+}
+
void Configure::generateQConfigPri()
{
// Generate qconfig.pri
@@ -3341,33 +3393,6 @@ void Configure::generateConfigfiles()
dictionary[ "DONE" ] = "error";
}
- {
- FileWriter tmpStream(buildPath + "/mkspecs/qdevice.pri");
-
- QString android_platform(dictionary.contains("ANDROID_PLATFORM")
- ? dictionary["ANDROID_PLATFORM"]
- : QString("android-9"));
- tmpStream << "android_install {" << endl;
- tmpStream << " DEFAULT_ANDROID_SDK_ROOT = " << formatPath(dictionary["ANDROID_SDK_ROOT"]) << endl;
- tmpStream << " DEFAULT_ANDROID_NDK_ROOT = " << formatPath(dictionary["ANDROID_NDK_ROOT"]) << endl;
- tmpStream << " DEFAULT_ANDROID_PLATFORM = " << android_platform << endl;
- if (QSysInfo::WordSize == 64)
- tmpStream << " DEFAULT_ANDROID_NDK_HOST = windows-x86_64" << endl;
- else
- tmpStream << " DEFAULT_ANDROID_NDK_HOST = windows" << endl;
- QString android_arch(dictionary.contains("ANDROID_TARGET_ARCH")
- ? dictionary["ANDROID_TARGET_ARCH"]
- : QString("armeabi-v7a"));
- QString android_tc_vers(dictionary.contains("ANDROID_NDK_TOOLCHAIN_VERSION")
- ? dictionary["ANDROID_NDK_TOOLCHAIN_VERSION"]
- : QString("4.7"));
- tmpStream << " DEFAULT_ANDROID_TARGET_ARCH = " << android_arch << endl;
- tmpStream << " DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION = " << android_tc_vers << endl;
- tmpStream << "}" << endl;
-
- if (!tmpStream.flush())
- dictionary[ "DONE" ] = "error";
- }
}
void Configure::displayConfig()
@@ -3610,6 +3635,13 @@ static QString stripPrefix(const QString &str, const QString &pfx)
return str.startsWith(pfx) ? str.mid(pfx.length()) : str;
}
+void Configure::substPrefix(QString *path)
+{
+ QString spfx = dictionary["QT_SYSROOT_PREFIX"];
+ if (path->startsWith(spfx))
+ path->replace(0, spfx.size(), dictionary["QT_EXT_PREFIX"]);
+}
+
void Configure::generateQConfigCpp()
{
// if QT_INSTALL_* have not been specified on commandline, define them now from QT_INSTALL_PREFIX
@@ -3649,6 +3681,39 @@ void Configure::generateQConfigCpp()
if (!dictionary["QT_INSTALL_TESTS"].size())
dictionary["QT_INSTALL_TESTS"] = qipempty ? "" : dictionary["QT_INSTALL_PREFIX"] + "/tests";
+ QChar sysrootifyPrefix = QLatin1Char('y');
+ dictionary["QT_SYSROOT_PREFIX"] = dictionary["QT_INSTALL_PREFIX"];
+ dictionary["QT_SYSROOT_HEADERS"] = dictionary["QT_INSTALL_HEADERS"];
+ dictionary["QT_SYSROOT_LIBS"] = dictionary["QT_INSTALL_LIBS"];
+ dictionary["QT_SYSROOT_ARCHDATA"] = dictionary["QT_INSTALL_ARCHDATA"];
+ dictionary["QT_SYSROOT_LIBEXECS"] = dictionary["QT_INSTALL_LIBEXECS"];
+ dictionary["QT_SYSROOT_BINS"] = dictionary["QT_INSTALL_BINS"];
+ dictionary["QT_SYSROOT_PLUGINS"] = dictionary["QT_INSTALL_PLUGINS"];
+ dictionary["QT_SYSROOT_IMPORTS"] = dictionary["QT_INSTALL_IMPORTS"];
+ dictionary["QT_SYSROOT_QML"] = dictionary["QT_INSTALL_QML"];
+ dictionary["QT_SYSROOT_DATA"] = dictionary["QT_INSTALL_DATA"];
+ dictionary["QT_SYSROOT_DOCS"] = dictionary["QT_INSTALL_DOCS"];
+ dictionary["QT_SYSROOT_TRANSLATIONS"] = dictionary["QT_INSTALL_TRANSLATIONS"];
+ dictionary["QT_SYSROOT_EXAMPLES"] = dictionary["QT_INSTALL_EXAMPLES"];
+ dictionary["QT_SYSROOT_TESTS"] = dictionary["QT_INSTALL_TESTS"];
+ if (dictionary["QT_EXT_PREFIX"].size()) {
+ sysrootifyPrefix = QLatin1Char('n');
+ dictionary["QT_INSTALL_PREFIX"] = dictionary["QT_EXT_PREFIX"];
+ substPrefix(&dictionary["QT_INSTALL_HEADERS"]);
+ substPrefix(&dictionary["QT_INSTALL_LIBS"]);
+ substPrefix(&dictionary["QT_INSTALL_ARCHDATA"]);
+ substPrefix(&dictionary["QT_INSTALL_LIBEXECS"]);
+ substPrefix(&dictionary["QT_INSTALL_BINS"]);
+ substPrefix(&dictionary["QT_INSTALL_PLUGINS"]);
+ substPrefix(&dictionary["QT_INSTALL_IMPORTS"]);
+ substPrefix(&dictionary["QT_INSTALL_QML"]);
+ substPrefix(&dictionary["QT_INSTALL_DATA"]);
+ substPrefix(&dictionary["QT_INSTALL_DOCS"]);
+ substPrefix(&dictionary["QT_INSTALL_TRANSLATIONS"]);
+ substPrefix(&dictionary["QT_INSTALL_EXAMPLES"]);
+ substPrefix(&dictionary["QT_INSTALL_TESTS"]);
+ }
+
bool haveHpx = false;
if (dictionary["QT_HOST_PREFIX"].isEmpty())
dictionary["QT_HOST_PREFIX"] = dictionary["QT_INSTALL_PREFIX"];
@@ -3676,6 +3741,22 @@ void Configure::generateQConfigCpp()
<< "static const char qt_configure_installation [11 + 12] = \"qt_instdate=" << QDate::currentDate().toString(Qt::ISODate) << "\";" << endl
<< endl
<< "static const char qt_configure_prefix_path_strs[][12 + 512] = {" << endl
+ << "#ifndef QT_BUILD_QMAKE" << endl
+ << " \"qt_prfxpath=" << formatPath(dictionary["QT_SYSROOT_PREFIX"]) << "\"," << endl
+ << " \"qt_docspath=" << formatPath(dictionary["QT_SYSROOT_DOCS"]) << "\"," << endl
+ << " \"qt_hdrspath=" << formatPath(dictionary["QT_SYSROOT_HEADERS"]) << "\"," << endl
+ << " \"qt_libspath=" << formatPath(dictionary["QT_SYSROOT_LIBS"]) << "\"," << endl
+ << " \"qt_lbexpath=" << formatPath(dictionary["QT_SYSROOT_LIBEXECS"]) << "\"," << endl
+ << " \"qt_binspath=" << formatPath(dictionary["QT_SYSROOT_BINS"]) << "\"," << endl
+ << " \"qt_plugpath=" << formatPath(dictionary["QT_SYSROOT_PLUGINS"]) << "\"," << endl
+ << " \"qt_impspath=" << formatPath(dictionary["QT_SYSROOT_IMPORTS"]) << "\"," << endl
+ << " \"qt_qml2path=" << formatPath(dictionary["QT_SYSROOT_QML"]) << "\"," << endl
+ << " \"qt_adatpath=" << formatPath(dictionary["QT_SYSROOT_ARCHDATA"]) << "\"," << endl
+ << " \"qt_datapath=" << formatPath(dictionary["QT_SYSROOT_DATA"]) << "\"," << endl
+ << " \"qt_trnspath=" << formatPath(dictionary["QT_SYSROOT_TRANSLATIONS"]) << "\"," << endl
+ << " \"qt_xmplpath=" << formatPath(dictionary["QT_SYSROOT_EXAMPLES"]) << "\"," << endl
+ << " \"qt_tstspath=" << formatPath(dictionary["QT_SYSROOT_TESTS"]) << "\"," << endl
+ << "#else" << endl
<< " \"qt_prfxpath=" << formatPath(dictionary["QT_INSTALL_PREFIX"]) << "\"," << endl
<< " \"qt_docspath=" << formatPath(dictionary["QT_INSTALL_DOCS"]) << "\"," << endl
<< " \"qt_hdrspath=" << formatPath(dictionary["QT_INSTALL_HEADERS"]) << "\"," << endl
@@ -3690,7 +3771,6 @@ void Configure::generateQConfigCpp()
<< " \"qt_trnspath=" << formatPath(dictionary["QT_INSTALL_TRANSLATIONS"]) << "\"," << endl
<< " \"qt_xmplpath=" << formatPath(dictionary["QT_INSTALL_EXAMPLES"]) << "\"," << endl
<< " \"qt_tstspath=" << formatPath(dictionary["QT_INSTALL_TESTS"]) << "\"," << endl
- << "#ifdef QT_BUILD_QMAKE" << endl
<< " \"qt_ssrtpath=" << formatPath(dictionary["CFG_SYSROOT"]) << "\"," << endl
<< " \"qt_hpfxpath=" << formatPath(dictionary["QT_HOST_PREFIX"]) << "\"," << endl
<< " \"qt_hbinpath=" << formatPath(dictionary["QT_HOST_BINS"]) << "\"," << endl
@@ -3705,6 +3785,9 @@ void Configure::generateQConfigCpp()
tmpStream << "static const char qt_configure_settings_path_str [256 + 12] = \"qt_stngpath=" << formatPath(dictionary["QT_INSTALL_SETTINGS"]) << "\";" << endl;
tmpStream << endl
+ << "#ifdef QT_BUILD_QMAKE\n"
+ << "static const char qt_sysrootify_prefix[] = \"qt_ssrtfpfx=" << sysrootifyPrefix << "\";\n"
+ << "#endif\n\n"
<< "/* strlen( \"qt_lcnsxxxx\") == 12 */" << endl
<< "#define QT_CONFIGURE_LICENSEE qt_configure_licensee_str + 12;" << endl
<< "#define QT_CONFIGURE_LICENSED_PRODUCTS qt_configure_licensed_products_str + 12;" << endl;
diff --git a/tools/configure/configureapp.h b/tools/configure/configureapp.h
index 33fc22b27a..8a22cea6ec 100644
--- a/tools/configure/configureapp.h
+++ b/tools/configure/configureapp.h
@@ -77,6 +77,7 @@ public:
void generateConfigfiles();
void detectArch();
void generateQConfigPri();
+ void generateQDevicePri();
void prepareConfigTests();
void showSummary();
QString firstLicensePath();
@@ -158,6 +159,8 @@ private:
int descIndent;
int outputWidth;
+ void substPrefix(QString *path);
+
QString formatPath(const QString &path);
QString formatPaths(const QStringList &paths);
diff --git a/tools/configure/main.cpp b/tools/configure/main.cpp
index 9beee36a50..fb815b287e 100644
--- a/tools/configure/main.cpp
+++ b/tools/configure/main.cpp
@@ -81,6 +81,11 @@ int runConfigure( int argc, char** argv )
if (!app.isOk())
return 3;
+ // Generate qdevice.pri
+ app.generateQDevicePri();
+ if (!app.isOk())
+ return 3;
+
// Prepare the config test build directory.
app.prepareConfigTests();
if (!app.isOk())