summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brand <mabrand@mabrand.nl>2014-12-09 08:42:45 (GMT)
committerMark Brand <mabrand@mabrand.nl>2014-12-09 08:58:23 (GMT)
commit8307a6b4f1377622badc34b076d431a16cbff597 (patch)
tree122c20ab946841311362c15d4184179791126f4b
parent6a91df13e4a4a91433b9670531426e53eef2c9be (diff)
downloadmxe-8307a6b4f1377622badc34b076d431a16cbff597.zip
mxe-8307a6b4f1377622badc34b076d431a16cbff597.tar.gz
mxe-8307a6b4f1377622badc34b076d431a16cbff597.tar.bz2
qtbase: include post-RC patches
Some fixes and a more accurate preview of coming 5.4.0 release.
-rw-r--r--src/qtbase-1.patch7956
1 files changed, 7948 insertions, 8 deletions
diff --git a/src/qtbase-1.patch b/src/qtbase-1.patch
index cec3396..0a8c69f 100644
--- a/src/qtbase-1.patch
+++ b/src/qtbase-1.patch
@@ -1,10 +1,7950 @@
This file is part of MXE.
See index.html for further information.
-From 887009160dfb6568bd308c1982f011cbe9c60050 Mon Sep 17 00:00:00 2001
+From 0792943d59eaa41f5e04b6ccaf39322eb8657f2a Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Tue, 18 Nov 2014 21:30:45 -0800
+Subject: [PATCH 01/36] Update the ChangeLog for 5.4.0 for the rest of qtbase
+
+Change-Id: I255892a9c84a8d873195f9440f9c1808cbe2b5a8
+Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
+
+diff --git a/dist/changes-5.4.0 b/dist/changes-5.4.0
+index 614f57a..f989904 100644
+--- a/dist/changes-5.4.0
++++ b/dist/changes-5.4.0
+@@ -16,26 +16,398 @@ Each of these identifiers can be entered in the bug tracker to obtain more
+ information about a particular change.
+
+ ****************************************************************************
+-* Library *
++* Deprecation Notice *
+ ****************************************************************************
+
++ - The Q_COMPILER_xxx macros for C++14 compiler features introduced in Qt
++ 5.3 are deprecated and will not be updated for new compilers either.
++ User code should be changed to use the macros from Standing Document 6
++ instead:
++ http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations.
++ This does not affect C++11 feature macros.
++
++****************************************************************************
++* Important Behavior Changes *
++****************************************************************************
++
++ - QExplicitelySharedDataPointer's copy constructor which performs a
++ static_cast from "X *" to "T *" (when constructing a
++ QExplicitlySharedDataPointer<T> from a QExplicitlySharedDataPointer<X>)
++ doesn't perform a static_cast from "X *" to "T *" any more. Instead, an
++ implicit cast is now performed. This change will break compilation of code
++ that relied on the downcast (i.e. cast towards a more derived type) of the
++ templated type when copy constructing a QExplicitelySharedDataPointer
++ object. Please refer to the class documentation for more information about
++ this issue and a workaround to keep old code compiling.
++ - QImageReader now automatically rotates JPEG images according to Exif
++ orientation
++ - [QTBUG-18980] HarfBuzz-NG is now the default shaper on all platforms.
++ This results in a better shaping results for various languages, better
++ performance, and lower memory consumption.
++ - [QTBUG-41858] Changed QStringRef::right() to be consistent with
++ QString::right(). The function now returns the N right-most characters,
++ like the documentation already claimed.
++ - The mutable Java-style iterators like QListMutableIterator and
++ QHashMutableIterator no longer set the parent container to unsharable
++ mode. If you create a copy of the container being iterated on after the
++ iterator, any changes done with the iterator might affect the copy too.
++
++ - Logging (including qDebug and qWarning):
++ * Support for the deprecated environment variables QT_NO_JOURNALD_LOG
++ and QT_ANDROID_PLAIN_LOG has been removed. Instead, set
++ QT_LOGGING_TO_CONSOLE to 1 to force logging to the console (stderr).
++ Set that variable to 0 to force logging to the system-specific event
++ log (if any).
++ * [QTCREATORBUG-12564] Log output will now go to the system log (if
++ support for it was compiled into Qt) if the application has no
++ controlling terminal or console window. Set QT_LOGGING_TO_CONSOLE to 1
++ to force logging to go to stderr.
++
++ - QSettings:
++ * [QTBUG-41812] QSettings::value() now returns an invalid QVariant when
++ passing an empty key. The code path ran into an assert, which was only
++ noticeable in debug builds.
++ * [QTBUG-21739] The locking mechanism inside QSettings has changed
++ and is no longer compatible with the one of previous versions of
++ Qt. There might be corruption if two applications running different
++ versions of Qt are writing to the same config file at the same
++ time. You must also now have write permissions in the directory
++ containing the settings file in order to write settings.
++
++****************************************************************************
++* Library *
++****************************************************************************
++
++QtConcurrent
++------------
++
++ - [QTBUG-17220] run() now optionally takes as its first argument the
++ QThreadPool to run the task on.
++
+ QtCore
+ ------
+
+ - Added QEnableSharedFromThis, a class that allows obtaining a
+ QSharedPointer for an object already managed by a shared pointer.
++ - Added qHashBits() to aid implementing qHash() overloads for custom
++ types.
++ - Added new QByteArrayList class.
++ - Added QStorageInfo class to retrive information about mounted volumes
++ and drives
++
++ - Logging:
++ * QT_MESSAGE_PATTERN can include a backtrace using %{backtrace}
++ * Added QtMsgType argument to QLoggingCategory constructor and
++ Q_LOGGING_CATEGORY macro that controls the default category
++ configuration.
++ * File, line, function information are not recorded anymore for logging
++ statements in release builds. Set QT_MESSAGELOGCONTEXT explicitly to
++ enable recording in all configurations.
++
++ - QAbstractProxyModel:
++ * [QTBUG-39549] QAbstractProxyModel now forwards the drop-related API.
++
++ - QByteArray:
++ * Added convenience methods to convert directly to and from std::string.
++ * Fixed a bug that would cause QByteArray to stop converting toUpper or
++ toLower at the first embedded null character.
++
++ - QCommandLineParser:
++ * Added addOptions() method.
++
++ - QElapsedTimer:
++ * Is no longer a POD; its default constructor now initializes the object to
++ an invalid QElapsedTimer
++
++ - QFlags:
++ * [QTBUG-39786] Added initializer_list constructor
++
++ - QFuture:
++ * [QTBUG-17220] Can now be used with any QThreadPool, not just
++ globalInstance().
++
++ - QPair:
++ * Can now be used in C++11 constexpr contexts.
++
++ - QSaveFile:
++ * Now follows symbolic links when writing to a link instead of
++ replacing the link with the contents.
++
++ - QSettings:
++ * [QTBUG-21739] Fixed data loss while writing the config to the disk
++ fails.
++
++ - QStandardPaths:
++ * [QTBUG-38483] QStandardPaths now has new enumeration values
++ AppDataLocation, AppLocalDataLocation to be able to differentiate
++ between roaming and local paths on the Windows operating system.
++ DataLocation is deprecated in favor of AppDataLocation.
++
++ - QString:
++ * QString can now split a string to a list of QStringRef.
++ * Added the QStringRef::split() function
++
++ - QTextStream:
++ * QTextStream now uses group separators when writing floating-point
++ numbers when the locale is not the C locale. The old behavior can be
++ restored by setting QLocale::OmitGroupSeparator on the locale.
++
++ - QTimer:
++ * [QTBUG-26406] Implemented new style connect syntax, including
++ functors, in QTimer::singleShot
++
++ - QUrl:
++ * QUrl::fromLocalFile now returns an empty URL if the input string is
++ empty.
++
++ - QVariant:
++ * [QTBUG-40363] Fixed ordered comparison between QVariants that do not
++ match but produce identical toString output.
++
++ - QVector:
++ * Added removeOne() and removeAll() for QList compatibility.
++
++ - QWeakPointer:
++ * Added lock() method for std::weak_ptr compatibility.
++ * Added member-swap function.
++
++ - QtJson:
++ * [QTBUG-26606] QJsonArray and QJsonObject now supports C++11
++ initializer lists.
++
++ - QtMath:
++ * Introduced qNextPowerOfTwo methods.
++
++QtDBus
++------
++
++ - Blocking calls that take a long time will now generate a warning. The
++ time taken may be tuned using the environment variables
++ Q_DBUS_BLOCKING_CALL_MAIN_THREAD_WARNING_MS and
++ Q_DBUS_BLOCKING_CALL_OTHER_THREAD_WARNING_MS. The value represents (in
++ milliseconds) how long before a blocking call is warned about. A value
++ below zero disables the warning, a value of zero will warn about all
++ blocking calls.
++
++QtGui
++-----
++
++ - Added QPixelFormat class.
++ - [QTBUG-38168] QtGui's OpenGL headers are now automatically including the
++ highest available header (gl31.h, gl3.h or gl2.h) in OpenGL ES builds.
++ - [QTBUG-36483] Dynamic OpenGL implementation loading is now supported on
++ Windows. This requires Qt to be configured with -opengl dynamic.
++ - [QTBUG-39583] Keymaps are now changeable at runtime when using eglfs.
++ - [QTBUG-40841] environment variable QT_DBL_CLICK_DIST customizes the
++ amount of movement allowed when detecting a double click.
++
++ - Clipboard:
++ * [QTBUG-41852] Fixed a memory leak in setMimeData() when the platform
++ plugin did not support the requested mode.
++
++ - Painting:
++ *[QTBUG-41413] Fixed some very rare cases of mismatched raster modes
++ in QPainter.
++
++ - QEvent:
++ * [QTBUG-38858] The debug output for events has been significantly
++ improved.
++
++ - QFont:
++ * [QTBUG-22814][QTBUG-22946] QFont now serializes its data properly,
++ without any data loss.
++
++ - QGuiApplication:
++ * Add support for -icon command line argument on X11, add -qwindowicon
++ on all platforms.
++ * Added QGuiApplication::screenRemoved signal to inform that a screen
++ has been removed, before Qt reacts to it.
++
++ - QImage:
++ * [QTBUG-25998] Added support for 10-bit per color channel image
++ formats.
++
++ - QOpenGLBuffer:
++ * [QTBUG-38168] Added QOpenGLBuffer::mapBufferRange().
++
++ - QOpenGLFramebufferObject:
++ * Introduced an argument to QOpenGLFramebufferObject::toImage() to save
++ mirroring the result.
++ * Added support 10-bit per color channels formats as the internal
++ framebuffer format, making it possible to render in that precision.
++
++ - QOpenGLTextureCache:
++ * Added support for uploading common QImage formats directly to OpenGL,
++ if supported by the OpenGL implementation.
++
++ - QPicture:
++ * [QTBUG-20578] QPicture now serializes its data properly by also
++ accounting for QDataStream versions greater than Qt 4.5.
++
++ - Tablet support:
++ * [QTBUG-39458] Added buttons to QTabletEvent
+
++ - Text:
++ * [QTBUG-41372] Fixed regression when rendering Uchen text in WebKit
++ on Windows.
++ * Fixed use of uninitialized memory in the FreeType font engine
++
++QtNetwork
++---------
++
++ - QNetworkAccessManager:
++ * Fixed behavior of upload QIODevice that generate data on readyRead()
++ for HTTP PUT/POST
++
++ - QSsl:
++ * QSsl::SecureProtocols now also excludes SSLv3
++
++ - QSslCertificate:
++ * Can now be used as a key in QSet/QHash.
++
++ - QSslError:
++ * Can now be used in QSet/QHash.
++
++ - QSslSocket:
++ * [QTBUG-28471] Added support for finding the version of SSL/TLS in
++ use by a connection.
++ * Added accessors for the version of OpenSSL used at build-time. This
++ will help when debugging problems caused by a mismatch with the
++ run-time version.
++ * [QTBUG-1565] Support for loading PKCS#12 bundles was added. These are
++ often used to conveniently transport keys and certificates,
++ particularly when making use of client certificates.
++
++QtPrintSupport
++--------------
++
++ - QPrinter:
++ * [QTBUG-11332] Added duplex support for Windows and OS X.
+
+ QtSql
+ -----
+
+- - qsql ibase: fix memory corruption due to LONG being 4 bytes in firebird.
+- - QSqlDriver::dbmsType(): New method reports DBMS type. Especially useful when using ODBC.
++ - ibase: Fixed memory corruption due to LONG being 4 bytes in firebird.
++
++ - QSqlDriver:
++ * Add support for determining DBMS type from SQL driver using
++ QSqlDriver::dbmsType()
++
++QtTest
++------
++
++ - Tests now output build information.
++
++QtWidgets
++---------
++
++ - All widgets with a setReadOnly method now send a ReadOnlyChange event
++ (e.g., for app-specific palette changes)
++ - [QTBUG-32888] Accessibility for widgets is now included in the widget
++ library instead of being a separate plugin. For static builds this means
++ that libqtaccessiblewidgets is no longer required.
++
++ - QComboBox:
++ * [QTBUG-33537] Fixed positions of items when QComboBox is set as
++ editable in Fusion style.
++ * [QTBUG-33537] Fixed updating appearance of popup menu when changing
++ the editable state of the combo box.
++
++ - QDialog / Windows:
++ * [QTBUG-2027] Dialogs can now be menuless.
++
++ - QGraphicsScene:
++ * Added the minimumRenderSize property which can be used to speed up
++ rendering by not painting items smaller than a give size.
++ * The removal of items when using the linear index is now more
++ efficient.
++
++ - QLayout:
++ * [QTBUG-37673] Widgets and dialogs containing layouts with
++ heightForWidth (such as a label with word wrap) will no longer get a
++ minimum size of 0x0.
++
++ - QLineEdit:
++ * [QTBUG-40287] The signal textEdited() is now emitted when the user
++ clicks the clear button created by setClearButtonEnabled() as well.
++
++ - QMainWindow:
++ * [QTBUG-40410] Dock widgets will now be resized properly when the
++ central widget has a fixed size.
++
++ - QPlainTextEdit:
++ * [QTBUG-36415] Fixed a crash when using full width selections and
++ issuing a complex undo command chain which removes and inserts an
++ empty block in one go.
++ * [QTBUG-40347] Fixed a possible divide by zero crash when font metrics
++ were missing for the font.
++
++ - QTabBar:
++ * Added changeCurrentOnDrag property.
++
++ - QTableView / QTableWidget:
++ * [QTBUG-29239] currentIndex() now reflects the top left cell when in a
++ span.
++
++ - QTreeView:
++ * Indentation is now style-dependent by default.
++ * Added resetIndentation().
++
++ - Styles:
++ * Allow overriding standardIcon() in a proxy style
+
+ ****************************************************************************
+ * Platform Specific Changes *
+ ****************************************************************************
+
++Android
++-------
++
++ - [QTBUG-36019] Enable using native style also when Ministro deployment
++ mechanism is not in use.
++ - [QTBUG-29069] Release all windows when the application is suspended.
++ - Added Gradle support to build the APK.
++ - [QTBUG-39688] Back key no longer kills the application when no window is
++ visible.
++ - [QTBUG-41365] Default open-source license for Qt for Android is now
++ LGPLv3. For compatibility with the LGPLv2.1 license, add
++ "-no-android-style-assets" to your configuration.
++ - [QTBUG-32399] Input panels are now hidden when focus changes to an object
++ that does not accept input.
++ - [QTBUG-41854] Added support for QClipboard::clear()
++ - [QTBUG-41852] Fixed memory leak in QClipboard::setMimeData()
++ - [QTBUG-41817] QClipboard::mimeData() now returns an empty object instead
++ of null pointer from QClipboard when clipboard is empty for consistency
++ with other platforms.
++
++ - Important Behavior Changes:
++ * [QTBUG-36274] The main event loop is now stopped when the app is
++ suspended
++
++iOS
++---
++
++ - [QTBUG-39097] Accessibility was added to the iOS platform port. This
++ enables Qt applications to be read by VoiceOver on iOS devices.
++ - [QTBUG-42276] Fixed path to QStandardPaths::DataLocation. Until now,
++ DataLocation was pointing to the Document directory. With this patch,
++ it will return the more accurate Library/Application Support.
++ Applications making use of DataLocation should move these data to the
++ new location. This can be done using the path provided by
++ DocumentLocation as the source path.
++
++Linux/XCB
++---------
++
++ - [QTBUG-35832] Fixed transparency of tray icons in cases where there
++ is no alpha channel or system tray visual.
++ - environment variables QT_XCB_DEBUG_XINPUT and
++ QT_XCB_DEBUG_XINPUT_DEVICES are deprecated and replaced with logging
++ categories qt.qpa.events.input and qt.qpa.devices respectively
++ - [QTBUG-39572] Wacom touch devices are not mistaken for additional
++ graphics tablets any more.
++
++
+ OS X
+ ----
+
+@@ -43,17 +415,51 @@ OS X
+ - OS X 10.10 is now supported.
+ - QMacStyle has been updated with better OS 10.10 support.
+ - The Qt binary packages are now configured with C++11 enabled.
++ - [QTBUG-41208] Fixed detection of writing system support in fonts for
++ some scripts such as Mkhedruli.
++ - [QTBUG-41192] Fixed menu item shortcuts without keyboard modifiers.
++ - [QTBUG-31301] Drag-and-drop QMimeData requests are now delayed until
++ drop time.
++ - [QTBUG-10899] Added support for ApplicationState
++ capability. Application can now detect when an application states
++ have changed as well when the dock icon has been clicked.
++
++ - Fonts:
++ * [QTBUG-40986][QTBUG-40549] Fixed missing glyph box shown in place of
++ some uncommon Unicode code points.
+
+ Windows
+ -------
+
+- - [QTBUG-38259] Changed configure defaults so that Qt5Core does not
+- link against ICU libraries anymore. Pass '-icu' to enable it.
++ - [QTBUG-38259] Changed configure defaults so that Qt5Core does not link
++ against ICU libraries anymore. Pass '-icu' to enable it.
++ - [QTBUG-35432][QTBUG-23687] Command line parsing on Windows now uses
++ the WinAPI function CommandLineToArgvW() to exactly match the quoting
++ behavior used by the majority of applications.
++
++ - Fonts:
++ * [QTBUG-41783] Fix off-by-one in font descent when using the
++ DirectWrite font engine.
++ * [QTBUG-39961] Set default fallback font to MS Shell Dlg 2 instead of
++ Arial.
++
++****************************************************************************
++* Compiler Specific Changes *
++****************************************************************************
++
++ - Release builds with Microsoft Visual Studio 2013 now enable the
++ standard-conforming C and C++ strict string behavior. This option will
++ be enabled in all builds with future Visual Studio versions.
++ Non-conforming code should be fixed for maximum portability and
++ correctness. See http://msdn.microsoft.com/en-us/library/dn449508.aspx
++ for more information.
+
+ ****************************************************************************
+-* Tools *
++* Tools *
+ ****************************************************************************
+
++ - [QTBUG-30900] The obsolete findtr script was removed.
++
+ configure & build system
+ ------------------------
+
+@@ -66,6 +472,12 @@ configure & build system
+ from a pre-existing Qt installation.
+ - [QTBUG-41267] Fixed parallelized (jom) -debug-and-release builds.
+
++moc
++---
++
++ - Fixed "zero as null pointer constant" warnings in moc's generated
++ code.
++
+ qmake
+ -----
+
+@@ -86,3 +498,22 @@ qmake
+ - QMAKE_EXTRA_COMPILERS' commands and depend_command are no longer mangled.
+ Use $$shell_path() and $$shell_quote() to prepare the commands correctly.
+ - Added link-time optimization support for Clang, GCC and ICC. CONFIG+=ltgc.
++
++rcc
++---
++
++ - rcc now supports an optional, two-pass compilation that improves build
++ times for large resource bundles. This feature can be enabled by adding
++ "CONFIG += resources_big" to your .pro file. Note that this feature may
++ interfere with builds that enable link-time code generation or other
++ optimization techniques.
++
++****************************************************************************
++* Third-party libraries *
++****************************************************************************
++
++ - ANGLE has been upgraded to version 2.1, bringing partial support for
++ OpenGL ES3 over Direct3D 11, numerous bug fixes, and several new vendor
++ extensions.
++ - [QTBUG-40649][QTBUG-40658][QTBUG-41031][QTBUG-41081][QTBUG-41308][QTBUG-
++ 41563] ANGLE updated to 2.1~f8602ad91e4f
+--
+2.1.2
+
+
+From bb07737614d3fdf867e8e5da835554ae731ba04f Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Wed, 19 Nov 2014 14:14:36 -0800
+Subject: [PATCH 02/36] Fix the %{time} printing to *not* default to the
+ process's time
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The default should be the actual time of day. Showing the process's time
+is the optional case. In the future, we'll provide a way to showing the
+monotonic reference time ("boot") and we should improve the detection of
+actual application runtime.
+
+Change-Id: I41936d77ab9fad2073dc0ce1c97cabe57ec39f16
+Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
+Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
+
+diff --git a/dist/changes-5.4.0 b/dist/changes-5.4.0
+index f989904..fc3e3a5 100644
+--- a/dist/changes-5.4.0
++++ b/dist/changes-5.4.0
+@@ -97,6 +97,11 @@ QtCore
+
+ - Logging:
+ * QT_MESSAGE_PATTERN can include a backtrace using %{backtrace}
++ * QT_MESSAGE_PATTERN can include a timestamp using %{time}. By
++ default, this shows the time in ISO format (YYYY-MM-DDTHH:mm:ss),
++ but a different format string can be specified in the tag (e.g.,
++ %{time YYYYMMDDHHmmsszzz}). If the format is "process", Qt will
++ display the elapsed time since the process started.
+ * Added QtMsgType argument to QLoggingCategory constructor and
+ Q_LOGGING_CATEGORY macro that controls the default category
+ configuration.
+diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp
+index 39c5ac6..843ec6b 100644
+--- a/src/corelib/global/qlogging.cpp
++++ b/src/corelib/global/qlogging.cpp
+@@ -1201,11 +1201,14 @@ QString qFormatLogMessage(QtMsgType type, const QMessageLogContext &context, con
+ }
+ #endif
+ } else if (token == timeTokenC) {
+- quint64 ms = pattern->timer.elapsed();
+- if (pattern->timeFormat.isEmpty())
++ if (pattern->timeFormat == QLatin1String("process")) {
++ quint64 ms = pattern->timer.elapsed();
+ message.append(QString().sprintf("%6d.%03d", uint(ms / 1000), uint(ms % 1000)));
+- else
+- message.append(pattern->startTime.addMSecs(ms).toString(pattern->timeFormat));
++ } else if (pattern->timeFormat.isEmpty()) {
++ message.append(QDateTime::currentDateTime().toString(Qt::ISODate));
++ } else {
++ message.append(QDateTime::currentDateTime().toString(pattern->timeFormat));
++ }
+ #endif
+ } else if (token == ifCategoryTokenC) {
+ if (!context.category || (strcmp(context.category, "default") == 0))
+@@ -1550,9 +1553,10 @@ void qErrnoWarning(int code, const char *msg, ...)
+ \row \li \c %{pid} \li QCoreApplication::applicationPid()
+ \row \li \c %{threadid} \li ID of current thread
+ \row \li \c %{type} \li "debug", "warning", "critical" or "fatal"
+- \row \li \c %{time} \li time of the message, in seconds since the process started
+- \row \li \c %{time format} \li system time when the message occurred, formatted by
+- passing the \c format to \l QDateTime::toString()
++ \row \li \c %{time process} \li time of the message, in seconds since the process started (the token "process" is literal)
++ \row \li \c %{time [format]} \li system time when the message occurred, formatted by
++ passing the \c format to \l QDateTime::toString(). If the format is
++ not specified, the format of Qt::ISODate is used.
+ \row \li \c{%{backtrace [depth=N] [separator="..."]}} \li A backtrace with the number of frames
+ specified by the optional \c depth parameter (defaults to 5), and separated by the optional
+ \c separator parameter (defaults to "|").
+diff --git a/tests/auto/corelib/global/qlogging/tst_qlogging.cpp b/tests/auto/corelib/global/qlogging/tst_qlogging.cpp
+index 0a55da5..749c7da 100644
+--- a/tests/auto/corelib/global/qlogging/tst_qlogging.cpp
++++ b/tests/auto/corelib/global/qlogging/tst_qlogging.cpp
+@@ -765,7 +765,7 @@ void tst_qmessagehandler::qMessagePattern_data()
+
+ // %{time} should have a padding of 6 so if it takes less than 10 seconds to show
+ // the first message, there should be 5 spaces
+- QTest::newRow("time") << "<%{time}>%{message}" << true << (QList<QByteArray>()
++ QTest::newRow("time-process") << "<%{time process}>%{message}" << true << (QList<QByteArray>()
+ << "< ");
+
+ #ifdef __GLIBC__
+--
+2.1.2
+
+
+From d0ef89caaba9ee8c57428447f04a17233b8888f5 Mon Sep 17 00:00:00 2001
+From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
+Date: Fri, 21 Nov 2014 10:15:58 +0100
+Subject: [PATCH 03/36] Android: Make old manifests work on Android 5
+
+On newer Androids, exceptions have started happening when using old
+manifests that refer to splash.xml because the layout is missing
+some required attributes. We add these to avoid crashing with these
+apps.
+
+Change-Id: Iefd4718e811df844e53890ee5bc772871d0a9803
+Task-number: QTBUG-42807
+Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
+
+diff --git a/src/android/java/res/layout/splash.xml b/src/android/java/res/layout/splash.xml
+index 6875521..476d91a 100644
+--- a/src/android/java/res/layout/splash.xml
++++ b/src/android/java/res/layout/splash.xml
+@@ -1,2 +1,4 @@
+ <?xml version="1.0" encoding="utf-8"?>
+-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" />
++<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
++ android:layout_width="fill_parent"
++ android:layout_height="fill_parent" />
+--
+2.1.2
+
+
+From f9408cc81c7d3cb3fa212005fb30cd8318ebf247 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20Str=C3=B8mme?=
+ <christian.stromme@theqtcompany.com>
+Date: Fri, 21 Nov 2014 11:33:09 +0100
+Subject: [PATCH 04/36] Android: protect global jni cache.
+
+This fixes a issue that has been neglected for a while, namely, that
+the access to the global jni caches where not sufficiently protected
+for concurrent usage. This change also fixes an issue with the
+thread-name storage.
+
+Task-number: QTBUG-42755
+Change-Id: I22f95ae7f44d1f6a13e289e52b050d98ccb9fb28
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
+
+diff --git a/src/corelib/kernel/qjni.cpp b/src/corelib/kernel/qjni.cpp
+index b179323..9d74fd6 100644
+--- a/src/corelib/kernel/qjni.cpp
++++ b/src/corelib/kernel/qjni.cpp
+@@ -37,6 +37,7 @@
+ #include <QtCore/qhash.h>
+ #include <QtCore/qstring.h>
+ #include <QtCore/QThread>
++#include <QtCore/QReadWriteLock>
+
+ QT_BEGIN_NAMESPACE
+
+@@ -45,11 +46,6 @@ static inline QString keyBase()
+ return QStringLiteral("%1%2%3");
+ }
+
+-static inline QByteArray threadBaseName()
+-{
+- return QByteArrayLiteral("QtThread-");
+-}
+-
+ static QString qt_convertJString(jstring string)
+ {
+ QJNIEnvironmentPrivate env;
+@@ -74,6 +70,7 @@ static inline bool exceptionCheckAndClear(JNIEnv *env)
+
+ typedef QHash<QString, jclass> JClassHash;
+ Q_GLOBAL_STATIC(JClassHash, cachedClasses)
++Q_GLOBAL_STATIC(QReadWriteLock, cachedClassesLock)
+
+ static QString toDotEncodedClassName(const char *className)
+ {
+@@ -82,8 +79,9 @@ static QString toDotEncodedClassName(const char *className)
+
+ static jclass getCachedClass(const QString &classDotEnc, bool *isCached = 0)
+ {
+- QHash<QString, jclass>::iterator it = cachedClasses->find(classDotEnc);
+- const bool found = (it != cachedClasses->end());
++ QReadLocker locker(cachedClassesLock);
++ const QHash<QString, jclass>::const_iterator &it = cachedClasses->constFind(classDotEnc);
++ const bool found = (it != cachedClasses->constEnd());
+
+ if (isCached != 0)
+ *isCached = found;
+@@ -102,6 +100,12 @@ static jclass loadClassDotEnc(const QString &classDotEnc, JNIEnv *env)
+ if (!classLoader.isValid())
+ return 0;
+
++ QWriteLocker locker(cachedClassesLock);
++ // did we lose the race?
++ const QHash<QString, jclass>::const_iterator &it = cachedClasses->constFind(classDotEnc);
++ if (it != cachedClasses->constEnd())
++ return it.value();
++
+ QJNIObjectPrivate stringName = QJNIObjectPrivate::fromString(classDotEnc);
+ QJNIObjectPrivate classObject = classLoader.callObjectMethod("loadClass",
+ "(Ljava/lang/String;)Ljava/lang/Class;",
+@@ -121,6 +125,7 @@ inline static jclass loadClass(const char *className, JNIEnv *env)
+
+ typedef QHash<QString, jmethodID> JMethodIDHash;
+ Q_GLOBAL_STATIC(JMethodIDHash, cachedMethodID)
++Q_GLOBAL_STATIC(QReadWriteLock, cachedMethodIDLock)
+
+ static jmethodID getCachedMethodID(JNIEnv *env,
+ jclass clazz,
+@@ -128,11 +133,24 @@ static jmethodID getCachedMethodID(JNIEnv *env,
+ const char *sig,
+ bool isStatic = false)
+ {
+- jmethodID id = 0;
+ // TODO: We need to use something else then the ref. from clazz to avoid collisions.
+- QString key = keyBase().arg(size_t(clazz)).arg(QLatin1String(name)).arg(QLatin1String(sig));
+- QHash<QString, jmethodID>::iterator it = cachedMethodID->find(key);
+- if (it == cachedMethodID->end()) {
++ const QString key = keyBase().arg(size_t(clazz)).arg(QLatin1String(name)).arg(QLatin1String(sig));
++ QHash<QString, jmethodID>::const_iterator it;
++
++ {
++ QReadLocker locker(cachedMethodIDLock);
++ it = cachedMethodID->constFind(key);
++ if (it != cachedMethodID->constEnd())
++ return it.value();
++ }
++
++ {
++ QWriteLocker locker(cachedMethodIDLock);
++ it = cachedMethodID->constFind(key);
++ if (it != cachedMethodID->constEnd())
++ return it.value();
++
++ jmethodID id = 0;
+ if (isStatic)
+ id = env->GetStaticMethodID(clazz, name, sig);
+ else
+@@ -142,14 +160,13 @@ static jmethodID getCachedMethodID(JNIEnv *env,
+ id = 0;
+
+ cachedMethodID->insert(key, id);
+- } else {
+- id = it.value();
++ return id;
+ }
+- return id;
+ }
+
+ typedef QHash<QString, jfieldID> JFieldIDHash;
+ Q_GLOBAL_STATIC(JFieldIDHash, cachedFieldID)
++Q_GLOBAL_STATIC(QReadWriteLock, cachedFieldIDLock)
+
+ static jfieldID getCachedFieldID(JNIEnv *env,
+ jclass clazz,
+@@ -157,10 +174,23 @@ static jfieldID getCachedFieldID(JNIEnv *env,
+ const char *sig,
+ bool isStatic = false)
+ {
+- jfieldID id = 0;
+- QString key = keyBase().arg(size_t(clazz)).arg(QLatin1String(name)).arg(QLatin1String(sig));
+- QHash<QString, jfieldID>::iterator it = cachedFieldID->find(key);
+- if (it == cachedFieldID->end()) {
++ const QString key = keyBase().arg(size_t(clazz)).arg(QLatin1String(name)).arg(QLatin1String(sig));
++ QHash<QString, jfieldID>::const_iterator it;
++
++ {
++ QReadLocker locker(cachedFieldIDLock);
++ it = cachedFieldID->constFind(key);
++ if (it != cachedFieldID->constEnd())
++ return it.value();
++ }
++
++ {
++ QWriteLocker locker(cachedFieldIDLock);
++ it = cachedFieldID->constFind(key);
++ if (it != cachedFieldID->constEnd())
++ return it.value();
++
++ jfieldID id = 0;
+ if (isStatic)
+ id = env->GetStaticFieldID(clazz, name, sig);
+ else
+@@ -170,10 +200,8 @@ static jfieldID getCachedFieldID(JNIEnv *env,
+ id = 0;
+
+ cachedFieldID->insert(key, id);
+- } else {
+- id = it.value();
++ return id;
+ }
+- return id;
+ }
+
+ class QJNIEnvironmentPrivateTLS
+@@ -187,14 +215,14 @@ public:
+
+ Q_GLOBAL_STATIC(QThreadStorage<QJNIEnvironmentPrivateTLS *>, jniEnvTLS)
+
++static const char qJniThreadName[] = "QtThread";
++
+ QJNIEnvironmentPrivate::QJNIEnvironmentPrivate()
+ : jniEnv(0)
+ {
+ JavaVM *vm = QtAndroidPrivate::javaVM();
+ if (vm->GetEnv((void**)&jniEnv, JNI_VERSION_1_6) == JNI_EDETACHED) {
+- const qulonglong id = reinterpret_cast<qulonglong>(QThread::currentThreadId());
+- const QByteArray threadName = threadBaseName() + QByteArray::number(id);
+- JavaVMAttachArgs args = { JNI_VERSION_1_6, threadName, Q_NULLPTR };
++ JavaVMAttachArgs args = { JNI_VERSION_1_6, qJniThreadName, Q_NULLPTR };
+ if (vm->AttachCurrentThread(&jniEnv, &args) != JNI_OK)
+ return;
+ }
+@@ -223,6 +251,12 @@ jclass QJNIEnvironmentPrivate::findClass(const char *className, JNIEnv *env)
+ return clazz;
+
+ if (env != 0) { // We got an env. pointer (We expect this to be the right env. and call FindClass())
++ QWriteLocker locker(cachedClassesLock);
++ const QHash<QString, jclass>::const_iterator &it = cachedClasses->constFind(classDotEnc);
++ // Did we lose the race?
++ if (it != cachedClasses->constEnd())
++ return it.value();
++
+ jclass fclazz = env->FindClass(className);
+ if (!exceptionCheckAndClear(env)) {
+ clazz = static_cast<jclass>(env->NewGlobalRef(fclazz));
+@@ -400,7 +434,6 @@ QJNIObjectPrivate::QJNIObjectPrivate(jobject obj)
+ d->m_jclass = static_cast<jclass>(env->NewGlobalRef(objectClass));
+ env->DeleteLocalRef(objectClass);
+ }
+-
+ template <>
+ void QJNIObjectPrivate::callMethodV<void>(const char *methodName, const char *sig, va_list args) const
+ {
+--
+2.1.2
+
+
+From c9c40af130763d81531ebee35d22d3b5573f48ef Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tony=20Saraj=C3=A4rvi?= <tony.sarajarvi@digia.com>
+Date: Wed, 12 Nov 2014 12:27:39 +0200
+Subject: [PATCH 05/36] Mark QSocks5SocketEngine tests blacklisted
+
+This patch is cherry-picked from
+63ae74f36533d92c5b38df1eb2a7fcf4c586bf11 and
+07f234d2a8283081aabdd1465f09b04a26bec1a3
+
+Task-number: QTBUG-42528
+Change-Id: I5f86679e62a4be48ce25afa5a4987a2b6678a357
+Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
+
+diff --git a/tests/auto/network/socket/qsocks5socketengine/BLACKLIST b/tests/auto/network/socket/qsocks5socketengine/BLACKLIST
+new file mode 100644
+index 0000000..bf4afa8
+--- /dev/null
++++ b/tests/auto/network/socket/qsocks5socketengine/BLACKLIST
+@@ -0,0 +1,4 @@
++[udpTest]
++*
++[passwordAuth]
++*
+--
+2.1.2
+
+
+From 800f832201267bcbf6a7e9b4b9dbc69f9029dcc0 Mon Sep 17 00:00:00 2001
+From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+Date: Fri, 21 Nov 2014 15:30:01 +0100
+Subject: [PATCH 06/36] Apply r1513 to our PCRE bundled copy
+
+Fixes CVE-2014-8964.
+
+Upstream diff: http://www.exim.org/viewvc/pcre?view=revision&revision=1513
+
+Change-Id: I59dc1f4c290e29ab5f22ed68eaeba702f4232e0e
+Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
+Reviewed-by: Lars Knoll <lars.knoll@digia.com>
+Reviewed-by: Richard J. Moore <rich@kde.org>
+
+diff --git a/src/3rdparty/pcre/patches/pcre-r1513.patch b/src/3rdparty/pcre/patches/pcre-r1513.patch
+new file mode 100644
+index 0000000..d84aa0c
+--- /dev/null
++++ b/src/3rdparty/pcre/patches/pcre-r1513.patch
+@@ -0,0 +1,18 @@
++Index: pcre_exec.c
++===================================================================
++--- pcre_exec.c (revisione 1512)
+++++ pcre_exec.c (revisione 1513)
++@@ -1404,8 +1404,11 @@
++ condition = TRUE;
++
++ /* Advance ecode past the assertion to the start of the first branch,
++- but adjust it so that the general choosing code below works. */
++-
+++ but adjust it so that the general choosing code below works. If the
+++ assertion has a quantifier that allows zero repeats we must skip over
+++ the BRAZERO. This is a lunatic thing to do, but somebody did! */
+++
+++ if (*ecode == OP_BRAZERO) ecode++;
++ ecode += GET(ecode, 1);
++ while (*ecode == OP_ALT) ecode += GET(ecode, 1);
++ ecode += 1 + LINK_SIZE - PRIV(OP_lengths)[condcode];
+diff --git a/src/3rdparty/pcre/pcre_exec.c b/src/3rdparty/pcre/pcre_exec.c
+index b0101da..7755aaf 100644
+--- a/src/3rdparty/pcre/pcre_exec.c
++++ b/src/3rdparty/pcre/pcre_exec.c
+@@ -1394,8 +1394,11 @@ for (;;)
+ condition = TRUE;
+
+ /* Advance ecode past the assertion to the start of the first branch,
+- but adjust it so that the general choosing code below works. */
+-
++ but adjust it so that the general choosing code below works. If the
++ assertion has a quantifier that allows zero repeats we must skip over
++ the BRAZERO. This is a lunatic thing to do, but somebody did! */
++
++ if (*ecode == OP_BRAZERO) ecode++;
+ ecode += GET(ecode, 1);
+ while (*ecode == OP_ALT) ecode += GET(ecode, 1);
+ ecode += 1 + LINK_SIZE - PRIV(OP_lengths)[condcode];
+--
+2.1.2
+
+
+From d958a16bc15603dc3dfce36d126b4917d4290945 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tony=20Saraj=C3=A4rvi?= <tony.sarajarvi@digia.com>
+Date: Thu, 13 Nov 2014 13:25:12 +0200
+Subject: [PATCH 07/36] Blacklist one test function in tst_QNetworkReply
+
+This patch is cherry-picked from
+c38f1f19b87d20f79394bca151268fc3cdcdd189 and
+d29d727d720fa4ac7ba046b6bfb96707586de7d3
+
+Task-number: QTBUG-32435
+Change-Id: I6dbbb668b96737a5791bc688949a00bc09f1357f
+Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
+
+diff --git a/tests/auto/network/access/qnetworkreply/BLACKLIST b/tests/auto/network/access/qnetworkreply/BLACKLIST
+index fbd7249..7792e05 100644
+--- a/tests/auto/network/access/qnetworkreply/BLACKLIST
++++ b/tests/auto/network/access/qnetworkreply/BLACKLIST
+@@ -7,3 +7,6 @@ osx
+ [SslHandshakeFailedError]
+ osx
+ [httpAbort]
++*
++[backgroundRequestInterruption:ftp, bg, nobg]
++*
+--
+2.1.2
+
+
+From 0fc578829115d593c9a09bd4b2a5e9fea1a759d1 Mon Sep 17 00:00:00 2001
+From: Paul Olav Tvete <paul.tvete@theqtcompany.com>
+Date: Fri, 21 Nov 2014 16:08:29 +0100
+Subject: [PATCH 08/36] Fix for HTC Pinyin input method
+
+HTC does not do beginBatchEdit/endBatchEdit when committing text.
+We implement the commit in two steps: first set the text, then move
+the cursor. To avoid sending an updateSelection for the intermediate state,
+we need to block updates when we set the text in the editor.
+
+Task-number: QTBUG-42300
+Change-Id: Icd18700ecf1fba5acb9f8a78762555c1309b221b
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
+
+diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp
+index a3848c9..7e81735 100644
+--- a/src/plugins/platforms/android/qandroidinputcontext.cpp
++++ b/src/plugins/platforms/android/qandroidinputcontext.cpp
+@@ -611,6 +611,9 @@ jboolean QAndroidInputContext::endBatchEdit()
+ */
+ jboolean QAndroidInputContext::commitText(const QString &text, jint newCursorPosition)
+ {
++ bool updateSelectionWasBlocked = m_blockUpdateSelection;
++ m_blockUpdateSelection = true;
++
+ QInputMethodEvent event;
+ event.setCommitString(text);
+ sendInputMethodEventThreadSafe(&event);
+@@ -630,6 +633,7 @@ jboolean QAndroidInputContext::commitText(const QString &text, jint newCursorPos
+ newLocalPos, 0, QVariant()));
+ }
+ }
++ m_blockUpdateSelection = updateSelectionWasBlocked;
+
+ updateCursorPosition();
+ return JNI_TRUE;
+--
+2.1.2
+
+
+From 78c43ce8ea882839bb507ebb2a71ec6752697d8e Mon Sep 17 00:00:00 2001
+From: Laszlo Agocs <laszlo.agocs@digia.com>
+Date: Sat, 22 Nov 2014 19:37:29 +0100
+Subject: [PATCH 09/36] Update 5.4.0 changes with missing entries
+
+Change-Id: I2bd0fb79817ac391a2a7c6b9d12ccef5c19ebd88
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+
+diff --git a/dist/changes-5.4.0 b/dist/changes-5.4.0
+index fc3e3a5..2b6cd2b 100644
+--- a/dist/changes-5.4.0
++++ b/dist/changes-5.4.0
+@@ -198,6 +198,10 @@ QtGui
+ -----
+
+ - Added QPixelFormat class.
++ - Added QOpenGLWidget class.
++ - Added QOpenGLWindow class.
++ - Added QRasterWindow class.
++ - QOpenGLContext is now able to adopt existing native contexts.
+ - [QTBUG-38168] QtGui's OpenGL headers are now automatically including the
+ highest available header (gl31.h, gl3.h or gl2.h) in OpenGL ES builds.
+ - [QTBUG-36483] Dynamic OpenGL implementation loading is now supported on
+@@ -205,6 +209,10 @@ QtGui
+ - [QTBUG-39583] Keymaps are now changeable at runtime when using eglfs.
+ - [QTBUG-40841] environment variable QT_DBL_CLICK_DIST customizes the
+ amount of movement allowed when detecting a double click.
++ - [QTBUG-37552] The eglfs mouse cursor properly resets the array buffer
++ from now on to avoid rendering issues.
++ - [QTBUG-40093] QWindow::close() is changed to send a QCloseEvent which
++ must be accepted before destroy() will be called.
+
+ - Clipboard:
+ * [QTBUG-41852] Fixed a memory leak in setMimeData() when the platform
+@@ -250,7 +258,11 @@ QtGui
+ accounting for QDataStream versions greater than Qt 4.5.
+
+ - Tablet support:
+- * [QTBUG-39458] Added buttons to QTabletEvent
++ * [QTBUG-39458] Added buttons to QTabletEvent.
++ * [QTBUG-39666] Events correctly identify the tool.
++ * [QTBUG-39570][QTBUG-40469] Corrected valuator ranges across platforms.
++ * Better support for non-Wacom devices.
++ * Better manual test to verify more features.
+
+ - Text:
+ * [QTBUG-41372] Fixed regression when rendering Uchen text in WebKit
+@@ -311,6 +323,8 @@ QtWidgets
+ - [QTBUG-32888] Accessibility for widgets is now included in the widget
+ library instead of being a separate plugin. For static builds this means
+ that libqtaccessiblewidgets is no longer required.
++ - [QTBUG-39814] Accessors for Qt::MouseEventSource and Qt::MouseEventFlags
++ are now available in QGraphicsSceneMouseEvent.
+
+ - QComboBox:
+ * [QTBUG-33537] Fixed positions of items when QComboBox is set as
+@@ -365,6 +379,10 @@ QtWidgets
+ * Platform Specific Changes *
+ ****************************************************************************
+
++- Several QPA logging categories are added under qt.qpa to enable logging
++ of various platform-specific details. qt.qpa.input is now used
++ consistently.
++
+ Android
+ -------
+
+@@ -408,10 +426,9 @@ Linux/XCB
+ is no alpha channel or system tray visual.
+ - environment variables QT_XCB_DEBUG_XINPUT and
+ QT_XCB_DEBUG_XINPUT_DEVICES are deprecated and replaced with logging
+- categories qt.qpa.events.input and qt.qpa.devices respectively
+- - [QTBUG-39572] Wacom touch devices are not mistaken for additional
+- graphics tablets any more.
+-
++ categories qt.qpa.input and qt.qpa.input.devices respectively
++ - [QTBUG-39572] Wacom touch devices are now working correctly.
++ - [QTBUG-42249] A path to a font file can now contain non-Latin characters.
+
+ OS X
+ ----
+@@ -522,3 +539,6 @@ rcc
+ extensions.
+ - [QTBUG-40649][QTBUG-40658][QTBUG-41031][QTBUG-41081][QTBUG-41308][QTBUG-
+ 41563] ANGLE updated to 2.1~f8602ad91e4f
++ - [QTBUG-41031] The ANGLE D3D11 renderer is now enabled by default. Systems
++ which cannot use the new renderer will automatically fall back to the D3D9
++ renderer at runtime.
+--
+2.1.2
+
+
+From f88ab80c8a7510ff01410631eeaec81d48365316 Mon Sep 17 00:00:00 2001
+From: Alejandro Exojo <suy@badopi.org>
+Date: Fri, 21 Nov 2014 12:44:33 +0100
+Subject: [PATCH 10/36] Use camel case in PKCS#12 function
+
+This makes it follow the coding style, which says to camel case acronyms too,
+and makes it consistent with the rest of the class.
+
+Change-Id: I4a1b21de1815530e476fc5aa8a0d41c724fc8021
+Reviewed-by: Richard J. Moore <rich@kde.org>
+Reviewed-by: hjk <hjk121@nokiamail.com>
+
+diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
+index 13bddcb..125a7a0 100644
+--- a/src/network/ssl/qsslcertificate.cpp
++++ b/src/network/ssl/qsslcertificate.cpp
+@@ -575,12 +575,12 @@ QList<QSslError> QSslCertificate::verify(QList<QSslCertificate> certificateChain
+
+ \note The \a device must be open and ready to be read from.
+ */
+-bool QSslCertificate::importPKCS12(QIODevice *device,
++bool QSslCertificate::importPkcs12(QIODevice *device,
+ QSslKey *key, QSslCertificate *certificate,
+ QList<QSslCertificate> *caCertificates,
+ const QByteArray &passPhrase)
+ {
+- return QSslSocketBackendPrivate::importPKCS12(device, key, certificate, caCertificates, passPhrase);
++ return QSslSocketBackendPrivate::importPkcs12(device, key, certificate, caCertificates, passPhrase);
+ }
+
+ // These certificates are known to be fraudulent and were created during the comodo
+diff --git a/src/network/ssl/qsslcertificate.h b/src/network/ssl/qsslcertificate.h
+index e34ea97..6aa7544 100644
+--- a/src/network/ssl/qsslcertificate.h
++++ b/src/network/ssl/qsslcertificate.h
+@@ -138,7 +138,7 @@ public:
+
+ static QList<QSslError> verify(QList<QSslCertificate> certificateChain, const QString &hostName = QString());
+
+- static bool importPKCS12(QIODevice *device,
++ static bool importPkcs12(QIODevice *device,
+ QSslKey *key, QSslCertificate *cert,
+ QList<QSslCertificate> *caCertificates=0,
+ const QByteArray &passPhrase=QByteArray());
+diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
+index 84b0d9c..13fc534 100644
+--- a/src/network/ssl/qsslsocket_openssl.cpp
++++ b/src/network/ssl/qsslsocket_openssl.cpp
+@@ -1671,7 +1671,7 @@ QList<QSslError> QSslSocketBackendPrivate::verify(QList<QSslCertificate> certifi
+ return errors;
+ }
+
+-bool QSslSocketBackendPrivate::importPKCS12(QIODevice *device,
++bool QSslSocketBackendPrivate::importPkcs12(QIODevice *device,
+ QSslKey *key, QSslCertificate *cert,
+ QList<QSslCertificate> *caCertificates,
+ const QByteArray &passPhrase)
+diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h
+index 8b02f32..29907e9 100644
+--- a/src/network/ssl/qsslsocket_openssl_p.h
++++ b/src/network/ssl/qsslsocket_openssl_p.h
+@@ -136,7 +136,7 @@ public:
+ static QList<QSslCertificate> STACKOFX509_to_QSslCertificates(STACK_OF(X509) *x509);
+ static QList<QSslError> verify(QList<QSslCertificate> certificateChain, const QString &hostName);
+ static QString getErrorsFromOpenSsl();
+- static bool importPKCS12(QIODevice *device,
++ static bool importPkcs12(QIODevice *device,
+ QSslKey *key, QSslCertificate *cert,
+ QList<QSslCertificate> *caCertificates,
+ const QByteArray &passPhrase);
+diff --git a/src/network/ssl/qsslsocket_winrt.cpp b/src/network/ssl/qsslsocket_winrt.cpp
+index da4c72b..418a741 100644
+--- a/src/network/ssl/qsslsocket_winrt.cpp
++++ b/src/network/ssl/qsslsocket_winrt.cpp
+@@ -661,7 +661,7 @@ QList<QSslError> QSslSocketBackendPrivate::verify(QList<QSslCertificate> certifi
+ return errors;
+ }
+
+-bool QSslSocketBackendPrivate::importPKCS12(QIODevice *device,
++bool QSslSocketBackendPrivate::importPkcs12(QIODevice *device,
+ QSslKey *key, QSslCertificate *cert,
+ QList<QSslCertificate> *caCertificates,
+ const QByteArray &passPhrase)
+diff --git a/src/network/ssl/qsslsocket_winrt_p.h b/src/network/ssl/qsslsocket_winrt_p.h
+index aa31c85..f0df7c6 100644
+--- a/src/network/ssl/qsslsocket_winrt_p.h
++++ b/src/network/ssl/qsslsocket_winrt_p.h
+@@ -92,7 +92,7 @@ public:
+
+ static QList<QSslCipher> defaultCiphers();
+ static QList<QSslError> verify(QList<QSslCertificate> certificateChain, const QString &hostName);
+- static bool importPKCS12(QIODevice *device,
++ static bool importPkcs12(QIODevice *device,
+ QSslKey *key, QSslCertificate *cert,
+ QList<QSslCertificate> *caCertificates,
+ const QByteArray &passPhrase);
+diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
+index 49ff1b4..82050e7 100644
+--- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
++++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
+@@ -1312,7 +1312,7 @@ void tst_QSslCertificate::pkcs12()
+ #ifdef QT_NO_OPENSSL
+ QEXPECT_FAIL("", "QTBUG-40884: WinRT API does not support pkcs12 imports", Abort);
+ #endif
+- ok = QSslCertificate::importPKCS12(&f, &key, &cert, &caCerts);
++ ok = QSslCertificate::importPkcs12(&f, &key, &cert, &caCerts);
+ QVERIFY(ok);
+ f.close();
+
+--
+2.1.2
+
+
+From 155306ffee1941194d44dd632a7993fce4a05606 Mon Sep 17 00:00:00 2001
+From: Kai Koehne <kai.koehne@theqtcompany.com>
+Date: Mon, 24 Nov 2014 10:52:03 +0100
+Subject: [PATCH 11/36] ANGLE: Fix releasing textures after we kill D3D11
+
+Cherry-pick upstream commit cc4cd2925b9a4f1142a86df131345a861c9d7cd9
+to fix crashes on exit.
+
+Task-number: QTBUG-42772
+Change-Id: Ib74be17f2b5fdd58f9e0568e1da74ba19e943019
+Reviewed-by: Andrew Knight <andrew.knight@theqtcompany.com>
+Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
+
+diff --git a/src/3rdparty/angle/src/libGLESv2/Context.cpp b/src/3rdparty/angle/src/libGLESv2/Context.cpp
+index b87689c..3772da6 100644
+--- a/src/3rdparty/angle/src/libGLESv2/Context.cpp
++++ b/src/3rdparty/angle/src/libGLESv2/Context.cpp
+@@ -162,12 +162,6 @@ Context::~Context()
+ deleteTransformFeedback(mTransformFeedbackMap.begin()->first);
+ }
+
+- for (TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); i++)
+- {
+- i->second.set(NULL);
+- }
+- mIncompleteTextures.clear();
+-
+ for (TextureMap::iterator i = mZeroTextures.begin(); i != mZeroTextures.end(); i++)
+ {
+ i->second.set(NULL);
+diff --git a/src/3rdparty/angle/src/libGLESv2/Context.h b/src/3rdparty/angle/src/libGLESv2/Context.h
+index 1e890de..0699592 100644
+--- a/src/3rdparty/angle/src/libGLESv2/Context.h
++++ b/src/3rdparty/angle/src/libGLESv2/Context.h
+@@ -247,7 +247,6 @@ class Context
+ int mClientVersion;
+
+ TextureMap mZeroTextures;
+- TextureMap mIncompleteTextures;
+
+ typedef std::unordered_map<GLuint, Framebuffer*> FramebufferMap;
+ FramebufferMap mFramebufferMap;
+diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
+index 97da6da..5cddd8a 100644
+--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
+@@ -27,6 +27,11 @@ RendererD3D::RendererD3D(egl::Display *display)
+
+ RendererD3D::~RendererD3D()
+ {
++ cleanup();
++}
++
++void RendererD3D::cleanup()
++{
+ for (gl::TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); ++i)
+ {
+ i->second.set(NULL);
+diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h
+index 9919207..a2f7787 100644
+--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h
++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h
+@@ -160,6 +160,8 @@ class RendererD3D : public Renderer
+ const gl::Rectangle *scissor, bool blitRenderTarget,
+ bool blitDepth, bool blitStencil, GLenum filter) = 0;
+
++ void cleanup();
++
+ egl::Display *mDisplay;
+
+ private:
+diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
+index e6d7f30..777308e 100644
+--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
+@@ -1870,6 +1870,8 @@ bool Renderer11::testDeviceResettable()
+
+ void Renderer11::release()
+ {
++ RendererD3D::cleanup();
++
+ releaseShaderCompiler();
+ releaseDeviceResources();
+
+diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
+index 601cd24..18e6e2d 100644
+--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
+@@ -151,6 +151,8 @@ Renderer9::~Renderer9()
+
+ void Renderer9::release()
+ {
++ RendererD3D::cleanup();
++
+ releaseShaderCompiler();
+ releaseDeviceResources();
+
+diff --git a/src/angle/patches/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch b/src/angle/patches/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch
+new file mode 100644
+index 0000000..97847ad
+--- /dev/null
++++ b/src/angle/patches/0018-ANGLE-Fix-releasing-textures-after-we-kill-D3D11.patch
+@@ -0,0 +1,106 @@
++From 014d3fcf6011109491b0489da9c1abb1fdc6dbdc Mon Sep 17 00:00:00 2001
++From: Kai Koehne <kai.koehne@theqtcompany.com>
++Date: Mon, 24 Nov 2014 10:52:03 +0100
++Subject: [PATCH] ANGLE: Fix releasing textures after we kill D3D11
++
++Cherry-pick upstream commit cc4cd2925b9a4f1142a86df131345a861c9d7cd9
++to fix crashes on exit.
++
++Task-number: QTBUG-42772
++Change-Id: Ib74be17f2b5fdd58f9e0568e1da74ba19e943019
++---
++ src/3rdparty/angle/src/libGLESv2/Context.cpp | 6 ------
++ src/3rdparty/angle/src/libGLESv2/Context.h | 1 -
++ src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp | 5 +++++
++ src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h | 2 ++
++ src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp | 2 ++
++ src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp | 2 ++
++ 6 files changed, 11 insertions(+), 7 deletions(-)
++
++diff --git a/src/3rdparty/angle/src/libGLESv2/Context.cpp b/src/3rdparty/angle/src/libGLESv2/Context.cpp
++index b87689c..3772da6 100644
++--- a/src/3rdparty/angle/src/libGLESv2/Context.cpp
+++++ b/src/3rdparty/angle/src/libGLESv2/Context.cpp
++@@ -162,12 +162,6 @@ Context::~Context()
++ deleteTransformFeedback(mTransformFeedbackMap.begin()->first);
++ }
++
++- for (TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); i++)
++- {
++- i->second.set(NULL);
++- }
++- mIncompleteTextures.clear();
++-
++ for (TextureMap::iterator i = mZeroTextures.begin(); i != mZeroTextures.end(); i++)
++ {
++ i->second.set(NULL);
++diff --git a/src/3rdparty/angle/src/libGLESv2/Context.h b/src/3rdparty/angle/src/libGLESv2/Context.h
++index 1e890de..0699592 100644
++--- a/src/3rdparty/angle/src/libGLESv2/Context.h
+++++ b/src/3rdparty/angle/src/libGLESv2/Context.h
++@@ -247,7 +247,6 @@ class Context
++ int mClientVersion;
++
++ TextureMap mZeroTextures;
++- TextureMap mIncompleteTextures;
++
++ typedef std::unordered_map<GLuint, Framebuffer*> FramebufferMap;
++ FramebufferMap mFramebufferMap;
++diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
++index 97da6da..5cddd8a 100644
++--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
+++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp
++@@ -27,6 +27,11 @@ RendererD3D::RendererD3D(egl::Display *display)
++
++ RendererD3D::~RendererD3D()
++ {
+++ cleanup();
+++}
+++
+++void RendererD3D::cleanup()
+++{
++ for (gl::TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); ++i)
++ {
++ i->second.set(NULL);
++diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h
++index 9919207..a2f7787 100644
++--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h
+++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h
++@@ -160,6 +160,8 @@ class RendererD3D : public Renderer
++ const gl::Rectangle *scissor, bool blitRenderTarget,
++ bool blitDepth, bool blitStencil, GLenum filter) = 0;
++
+++ void cleanup();
+++
++ egl::Display *mDisplay;
++
++ private:
++diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
++index e6d7f30..777308e 100644
++--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
+++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp
++@@ -1870,6 +1870,8 @@ bool Renderer11::testDeviceResettable()
++
++ void Renderer11::release()
++ {
+++ RendererD3D::cleanup();
+++
++ releaseShaderCompiler();
++ releaseDeviceResources();
++
++diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
++index 601cd24..18e6e2d 100644
++--- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
+++++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp
++@@ -151,6 +151,8 @@ Renderer9::~Renderer9()
++
++ void Renderer9::release()
++ {
+++ RendererD3D::cleanup();
+++
++ releaseShaderCompiler();
++ releaseDeviceResources();
++
++--
++1.9.4.msysgit.0
++
+--
+2.1.2
+
+
+From 9b01589e58d458b6367b3578079e73ddc2ef458f Mon Sep 17 00:00:00 2001
+From: Andrew Knight <andrew.knight@theqtcompany.com>
+Date: Tue, 25 Nov 2014 13:31:20 +0200
+Subject: [PATCH 12/36] Turn off optimizations of qt_depthForFormat on Windows
+ Runtime ARM
+
+This function is apparently optimized in a way that gives a bad return
+value (or leaves the variable where it is used uninitialized), leading to
+extreme memory allocations and eventual heap exhaustion.
+
+Task-number: QTBUG-42038
+Change-Id: Ia4ee9fc6475a0bf40e25eed356b027a4dc68d119
+Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
+
+diff --git a/src/gui/image/qimage_p.h b/src/gui/image/qimage_p.h
+index eec54ed..7e2d430 100644
+--- a/src/gui/image/qimage_p.h
++++ b/src/gui/image/qimage_p.h
+@@ -116,6 +116,9 @@ void qInitImageConversions();
+ const uchar *qt_get_bitflip_array();
+ Q_GUI_EXPORT void qGamma_correct_back_to_linear_cs(QImage *image);
+
++#if defined(Q_OS_WINRT) && defined(_M_ARM) // QTBUG-42038
++#pragma optimize("", off)
++#endif
+ inline int qt_depthForFormat(QImage::Format format)
+ {
+ int depth = 0;
+@@ -158,6 +161,9 @@ inline int qt_depthForFormat(QImage::Format format)
+ }
+ return depth;
+ }
++#if defined(Q_OS_WINRT) && defined(_M_ARM)
++#pragma optimize("", on)
++#endif
+
+ QT_END_NAMESPACE
+
+--
+2.1.2
+
+
+From aed71b6832703e0c6cb953ac9a5cd7cfba95f7b5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tony=20Saraj=C3=A4rvi?= <tony.sarajarvi@digia.com>
+Date: Tue, 25 Nov 2014 11:05:10 +0200
+Subject: [PATCH 13/36] Blacklist one tst_qsslsocket test
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Task-number: QTBUG-29941
+Change-Id: Ieb3418a2d6d88ebd399964b5df20d9fe4d6ca37b
+Reviewed-by: Simo Fält <simo.falt@digia.com>
+
+diff --git a/tests/auto/network/ssl/qsslsocket/BLACKLIST b/tests/auto/network/ssl/qsslsocket/BLACKLIST
+new file mode 100644
+index 0000000..17b606e
+--- /dev/null
++++ b/tests/auto/network/ssl/qsslsocket/BLACKLIST
+@@ -0,0 +1,2 @@
++[waitForConnectedEncryptedReadyRead:WithSocks5ProxyAuth]
++*
+--
+2.1.2
+
+
+From 89867f86fc5766c30253748560b8c16f721e808e Mon Sep 17 00:00:00 2001
+From: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
+Date: Mon, 24 Nov 2014 16:44:31 +0100
+Subject: [PATCH 14/36] iOS, QComboBox: don't apply special case for OS X on
+ iOS
+
+The special-case that was added for OS X before the iOS port
+came to be stops the virtual keyboard from working correctly.
+
+Task-number: QTBUG-41613
+Change-Id: I0b8c83e98584389ea4a8aada16a1ee1a64300400
+Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
+
+diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp
+index fda37c4..40cf2f0 100644
+--- a/src/widgets/widgets/qcombobox.cpp
++++ b/src/widgets/widgets/qcombobox.cpp
+@@ -942,8 +942,8 @@ QComboBox::QComboBox(QComboBoxPrivate &dd, QWidget *parent)
+ void QComboBoxPrivate::init()
+ {
+ Q_Q(QComboBox);
+-#ifdef Q_OS_MAC
+- // On Mac, only line edits and list views always get tab focus. It's only
++#ifdef Q_OS_OSX
++ // On OS X, only line edits and list views always get tab focus. It's only
+ // when we enable full keyboard access that other controls can get tab focus.
+ // When it's not editable, a combobox looks like a button, and it behaves as
+ // such in this respect.
+--
+2.1.2
+
+
+From 503b9c318164122b0111f6d0d9d3b680c8ca016f Mon Sep 17 00:00:00 2001
+From: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
+Date: Mon, 24 Nov 2014 11:21:07 +0100
+Subject: [PATCH 15/36] iOS: fallback to use [UIScreen mainScreen] when
+ [UIScreen screens] fail
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+On iOS 7.1 [UIScreen screens] sometimes (and against documentation) returns
+an empty array, which will lead to a crash. This patch will add a fallback
+path that uses [UIScreen mainScreen] instead when the screen count is 0.
+
+Task-number: QTBUG-42345
+Change-Id: Ie72578ff7ecd0c8fbc971fafea45047bf1347cd9
+Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
+
+diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm
+index 9a722ea..461f160 100644
+--- a/src/plugins/platforms/ios/qiosintegration.mm
++++ b/src/plugins/platforms/ios/qiosintegration.mm
+@@ -88,7 +88,13 @@ QIOSIntegration::QIOSIntegration()
+ // Set current directory to app bundle folder
+ QDir::setCurrent(QString::fromUtf8([[[NSBundle mainBundle] bundlePath] UTF8String]));
+
+- for (UIScreen *screen in [UIScreen screens])
++ NSMutableArray *screens = [[[UIScreen screens] mutableCopy] autorelease];
++ if (![screens containsObject:[UIScreen mainScreen]]) {
++ // Fallback for iOS 7.1 (QTBUG-42345)
++ [screens insertObject:[UIScreen mainScreen] atIndex:0];
++ }
++
++ for (UIScreen *screen in screens)
+ addScreen(new QIOSScreen(screen));
+
+ // Depends on a primary screen being present
+--
+2.1.2
+
+
+From 37fb892767baa08fca6f5172c51bdc1e270c72ec Mon Sep 17 00:00:00 2001
+From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
+Date: Mon, 24 Nov 2014 12:15:34 +0100
+Subject: [PATCH 16/36] Android: Report error when OpenSSL is on and headers
+ are missing
+
+There was an override for Android which would disable the configure
+error when doing an OpenSSL build without having the headers
+available. This has several times lead to packaging errors where
+OpenSSL gets disabled but it's not noticed before the package testing,
+which delays the process.
+
+I'm not 100% sure of the reasoning behind the override, but I think
+it's a left-over from Necessitas where OpenSSL was statically linked
+into Qt.
+
+Change-Id: I2bdc33fb60c59cd493987959d4bbbbb4e9735a92
+Task-number: QTBUG-42851
+Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
+Reviewed-by: BogDan Vatra <bogdan@kde.org>
+Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
+Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
+
+diff --git a/configure b/configure
+index 1a002b4..d95d8a2 100755
+--- a/configure
++++ b/configure
+@@ -5481,7 +5481,7 @@ if [ "$CFG_OPENSSL" != "no" ]; then
+ CFG_OPENSSL=yes
+ fi
+ else
+- if ( [ "$CFG_OPENSSL" = "yes" ] || [ "$CFG_OPENSSL" = "linked" ] ) && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ] && [ "$XPLATFORM_ANDROID" = "no" ]; then
++ if ( [ "$CFG_OPENSSL" = "yes" ] || [ "$CFG_OPENSSL" = "linked" ] ) && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ echo "OpenSSL support cannot be enabled due to functionality tests!"
+ echo " Turn on verbose messaging (-v) to $0 to see the final report."
+ echo " If you believe this message is in error you may use the continue"
+--
+2.1.2
+
+
+From 6ea6ee7a129523dfe2973b92359afd672ef92f47 Mon Sep 17 00:00:00 2001
+From: Alejandro Exojo <suy@badopi.org>
+Date: Thu, 20 Nov 2014 12:55:56 +0100
+Subject: [PATCH 17/36] Adjust DBMSType to DbmsType to follow conventions
+
+The enum was made public in f84b00c6d26eb7a3a6802210d2a8b12ddbf815aa, but this
+makes it follow the convention to camel case acronyms too before it's too late
+to change it.
+
+Change-Id: Ibb81e9221cb73fe0502d0a26f2d73512dd142f08
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+
+diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
+index 736fe31..f218016 100644
+--- a/src/sql/kernel/qsqldriver.cpp
++++ b/src/sql/kernel/qsqldriver.cpp
+@@ -237,11 +237,11 @@ bool QSqlDriver::isOpenError() const
+ */
+
+ /*!
+- \enum QSqlDriver::DBMSType
++ \enum QSqlDriver::DbmsType
+
+ This enum contains DBMS types.
+
+- \value UnknownDBMS
++ \value UnknownDbms
+ \value MSSqlServer
+ \value MySqlServer
+ \value PostgreSQL
+@@ -787,7 +787,7 @@ QSql::NumericalPrecisionPolicy QSqlDriver::numericalPrecisionPolicy() const
+
+ Returns the current DBMS type for the database connection.
+ */
+-QSqlDriver::DBMSType QSqlDriver::dbmsType() const
++QSqlDriver::DbmsType QSqlDriver::dbmsType() const
+ {
+ return d_func()->dbmsType;
+ }
+diff --git a/src/sql/kernel/qsqldriver.h b/src/sql/kernel/qsqldriver.h
+index 767c1ac..eabda74 100644
+--- a/src/sql/kernel/qsqldriver.h
++++ b/src/sql/kernel/qsqldriver.h
+@@ -71,8 +71,8 @@ public:
+
+ enum NotificationSource { UnknownSource, SelfSource, OtherSource };
+
+- enum DBMSType {
+- UnknownDBMS,
++ enum DbmsType {
++ UnknownDbms,
+ MSSqlServer,
+ MySqlServer,
+ PostgreSQL,
+@@ -123,7 +123,7 @@ public:
+ void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);
+ QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;
+
+- DBMSType dbmsType() const;
++ DbmsType dbmsType() const;
+
+ public Q_SLOTS:
+ virtual bool cancelQuery();
+diff --git a/src/sql/kernel/qsqldriver_p.h b/src/sql/kernel/qsqldriver_p.h
+index 427e3984..c511f8e 100644
+--- a/src/sql/kernel/qsqldriver_p.h
++++ b/src/sql/kernel/qsqldriver_p.h
+@@ -61,14 +61,14 @@ public:
+ isOpen(false),
+ isOpenError(false),
+ precisionPolicy(QSql::LowPrecisionDouble),
+- dbmsType(QSqlDriver::UnknownDBMS)
++ dbmsType(QSqlDriver::UnknownDbms)
+ { }
+
+ uint isOpen;
+ uint isOpenError;
+ QSqlError error;
+ QSql::NumericalPrecisionPolicy precisionPolicy;
+- QSqlDriver::DBMSType dbmsType;
++ QSqlDriver::DbmsType dbmsType;
+ };
+
+ QT_END_NAMESPACE
+diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
+index d5ccc19..af6dc6b 100644
+--- a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
++++ b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
+@@ -385,7 +385,7 @@ public:
+ bool wasDropped;
+ QSqlQuery q( db );
+ QStringList dbtables=db.tables();
+- QSqlDriver::DBMSType dbType = getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = getDatabaseType(db);
+ foreach(const QString &tableName, tableNames)
+ {
+ wasDropped = true;
+@@ -462,7 +462,7 @@ public:
+ // blobSize is only used if the db doesn't have a generic blob type
+ static QString blobTypeName( QSqlDatabase db, int blobSize = 10000 )
+ {
+- const QSqlDriver::DBMSType dbType = getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = getDatabaseType(db);
+ if (dbType == QSqlDriver::MySqlServer)
+ return "longblob";
+
+@@ -491,7 +491,7 @@ public:
+
+ static QString dateTimeTypeName(QSqlDatabase db)
+ {
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::PostgreSQL)
+ return QLatin1String("timestamp");
+ if (dbType == QSqlDriver::Oracle && getOraVersion(db) >= 9)
+@@ -501,7 +501,7 @@ public:
+
+ static QString autoFieldName( QSqlDatabase db )
+ {
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::MySqlServer)
+ return "AUTO_INCREMENT";
+ if (dbType == QSqlDriver::Sybase || dbType == QSqlDriver::MSSqlServer)
+@@ -538,7 +538,7 @@ public:
+ return result.toLocal8Bit();
+ }
+
+- static QSqlDriver::DBMSType getDatabaseType(QSqlDatabase db)
++ static QSqlDriver::DbmsType getDatabaseType(QSqlDatabase db)
+ {
+ QSqlDriverPrivate *d = static_cast<QSqlDriverPrivate *>(QObjectPrivate::get(db.driver()));
+ return d->dbmsType;
+diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
+index 6faf8b7..c314528 100644
+--- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
++++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
+@@ -234,7 +234,7 @@ struct FieldDef {
+ // excluding the primary key field
+ static int createFieldTable(const FieldDef fieldDefs[], QSqlDatabase db)
+ {
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ const QString tableName = qTableName("qtestfields", __FILE__, db);
+ tst_Databases::safeDropTable(db, tableName);
+ QSqlQuery q(db);
+@@ -281,7 +281,7 @@ void tst_QSqlDatabase::createTestTables(QSqlDatabase db)
+ return;
+ const QString tableName = qTableName("qtest", __FILE__, db);
+ QSqlQuery q(db);
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::MySqlServer) {
+ // ### stupid workaround until we find a way to hardcode this
+ // in the MySQL server startup script
+@@ -318,7 +318,7 @@ void tst_QSqlDatabase::dropTestTables(QSqlDatabase db)
+ if (!db.isValid())
+ return;
+
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::PostgreSQL) {
+ QSqlQuery q(db);
+ QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
+@@ -485,7 +485,7 @@ void tst_QSqlDatabase::open()
+ QVERIFY(!db.isOpenError());
+ }
+
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::SQLite && db.databaseName() == ":memory:") {
+ // tables in in-memory databases don't survive an open/close
+ createTestTables(db);
+@@ -498,7 +498,7 @@ void tst_QSqlDatabase::tables()
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ const QString qtest(qTableName("qtest", __FILE__, db)), qtest_view(qTableName("qtest_view", __FILE__, db)), temp_tab(qTableName("test_tab", __FILE__, db));
+
+@@ -562,7 +562,7 @@ void tst_QSqlDatabase::whitespaceInIdentifiers()
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ if (testWhiteSpaceNames(db.driverName())) {
+ const QString tableName(qTableName("qtest", __FILE__, db) + " test");
+@@ -830,7 +830,7 @@ void tst_QSqlDatabase::recordPSQL()
+
+ QSqlQuery q(db);
+
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::PostgreSQL)
+ QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
+ const QString tableName = qTableName("qtestfields", __FILE__, db);
+@@ -1017,7 +1017,7 @@ void tst_QSqlDatabase::recordSQLServer()
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType != QSqlDriver::MSSqlServer)
+ QSKIP("SQL server specific test");
+
+@@ -1076,7 +1076,7 @@ void tst_QSqlDatabase::transaction()
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ const QString qtest(qTableName("qtest", __FILE__, db));
+
+ if (!db.driver()->hasFeature(QSqlDriver::Transactions))
+@@ -1124,7 +1124,7 @@ void tst_QSqlDatabase::bigIntField()
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ const QString qtest_bigint(qTableName("qtest_bigint", __FILE__, db));
+
+ QSqlQuery q(db);
+@@ -1189,7 +1189,7 @@ void tst_QSqlDatabase::caseSensivity()
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ bool cs = false;
+ if (dbType == QSqlDriver::MySqlServer || dbType == QSqlDriver::SQLite || dbType == QSqlDriver::Sybase
+@@ -1222,7 +1222,7 @@ void tst_QSqlDatabase::noEscapedFieldNamesInRecord()
+ CHECK_DATABASE(db);
+
+ QString fieldname("t_varchar");
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::Oracle || dbType == QSqlDriver::Interbase || dbType == QSqlDriver::DB2)
+ fieldname = fieldname.toUpper();
+
+@@ -1405,7 +1405,7 @@ void tst_QSqlDatabase::precisionPolicy()
+ QString query = QString("SELECT num FROM %1 WHERE id = 1").arg(tableName);
+ QVERIFY_SQL(q, exec(query));
+ QVERIFY_SQL(q, next());
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::SQLite)
+ QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue);
+ QCOMPARE(q.value(0).type(), QVariant::String);
+@@ -1742,7 +1742,7 @@ void tst_QSqlDatabase::odbc_bindBoolean()
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::MySqlServer)
+ QSKIP("MySql has inconsistent behaviour of bit field type across versions.");
+
+@@ -1777,7 +1777,7 @@ void tst_QSqlDatabase::odbc_testqGetString()
+ const QString testqGetString(qTableName("testqGetString", __FILE__, db));
+
+ QSqlQuery q(db);
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::MSSqlServer)
+ QVERIFY_SQL(q, exec("CREATE TABLE " + testqGetString + "(id int, vcvalue varchar(MAX))"));
+ else if(tst_Databases::isMSAccess(db))
+@@ -1957,7 +1957,7 @@ void tst_QSqlDatabase::odbc_uniqueidentifier()
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType != QSqlDriver::MSSqlServer)
+ QSKIP("SQL Server (ODBC) specific test");
+
+diff --git a/tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp b/tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp
+index fa0f7ea..7c0b4eb 100644
+--- a/tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp
++++ b/tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp
+@@ -71,7 +71,7 @@ void tst_QSqlDriver::recreateTestTables(QSqlDatabase db)
+ QSqlQuery q(db);
+ const QString relTEST1(qTableName("relTEST1", __FILE__, db));
+
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::PostgreSQL)
+ QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
+
+@@ -122,7 +122,7 @@ void tst_QSqlDriver::record()
+ QSqlRecord rec = db.driver()->record(tablename);
+ QCOMPARE(rec.count(), 4);
+
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ // QTBUG-1363: QSqlField::length() always return -1 when using QODBC3 driver and QSqlDatabase::record()
+ if (dbType == QSqlDriver::MSSqlServer && db.driverName().startsWith("QODBC"))
+ QCOMPARE(rec.field(1).length(), 20);
+@@ -174,7 +174,7 @@ void tst_QSqlDriver::primaryIndex()
+ QSqlIndex index = db.driver()->primaryIndex(tablename);
+ QCOMPARE(index.count(), 1);
+
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::Interbase || dbType == QSqlDriver::Oracle || dbType == QSqlDriver::DB2)
+ QCOMPARE(index.fieldName(0), QString::fromLatin1("ID"));
+ else
+diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+index b4863d4..f5d71a7 100644
+--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
++++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+@@ -283,7 +283,7 @@ void tst_QSqlQuery::cleanup()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if ( QTest::currentTestFunction() == QLatin1String( "numRowsAffected" )
+ || QTest::currentTestFunction() == QLatin1String( "transactions" )
+ || QTest::currentTestFunction() == QLatin1String( "size" )
+@@ -311,7 +311,7 @@ void tst_QSqlQuery::generic_data(const QString& engine)
+
+ void tst_QSqlQuery::dropTestTables( QSqlDatabase db )
+ {
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ QStringList tablenames;
+ // drop all the table in case a testcase failed
+ tablenames << qtest
+@@ -374,7 +374,7 @@ void tst_QSqlQuery::dropTestTables( QSqlDatabase db )
+ void tst_QSqlQuery::createTestTables( QSqlDatabase db )
+ {
+ QSqlQuery q( db );
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::MySqlServer)
+ // ### stupid workaround until we find a way to hardcode this
+ // in the MySQL server startup script
+@@ -426,7 +426,7 @@ void tst_QSqlQuery::char1Select()
+ QVERIFY_SQL(q, exec("insert into " + tbl + " values ('a')"));
+ QVERIFY_SQL(q, exec("select * from " + tbl));
+ QVERIFY( q.next() );
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::Interbase)
+ QCOMPARE( q.value( 0 ).toString().left( 1 ), QString( "a" ) );
+ else
+@@ -441,7 +441,7 @@ void tst_QSqlQuery::char1SelectUnicode()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::DB2)
+ QSKIP("Needs someone with more Unicode knowledge than I have to fix");
+
+@@ -588,7 +588,7 @@ void tst_QSqlQuery::bindBool()
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+ QSqlQuery q(db);
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ const QString tableName(qTableName("bindBool", __FILE__, db));
+
+ q.exec("DROP TABLE " + tableName);
+@@ -845,7 +845,7 @@ void tst_QSqlQuery::outValues()
+ QSqlQuery q( db );
+
+ q.setForwardOnly( true );
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::Oracle) {
+ QVERIFY_SQL( q, exec( "create or replace procedure " + tst_outValues + "(x out int) is\n"
+ "begin\n"
+@@ -934,7 +934,7 @@ void tst_QSqlQuery::value()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ QSqlQuery q( db );
+ QVERIFY_SQL( q, exec( "select id, t_varchar, t_char from " + qtest + " order by id" ) );
+ int i = 1;
+@@ -1520,7 +1520,7 @@ void tst_QSqlQuery::precision()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::Interbase)
+ QSKIP("DB unable to store high precision");
+
+@@ -1596,7 +1596,7 @@ void tst_QSqlQuery::transaction()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if ( !db.driver()->hasFeature( QSqlDriver::Transactions ) )
+ QSKIP( "DBMS not transaction capable");
+
+@@ -1679,7 +1679,7 @@ void tst_QSqlQuery::joins()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ const QString qtestj1(qTableName("qtestj1", __FILE__, db)), qtestj2(qTableName("qtestj2", __FILE__, db));
+
+ if (dbType == QSqlDriver::Oracle || dbType == QSqlDriver::Sybase
+@@ -1763,7 +1763,7 @@ void tst_QSqlQuery::prepare_bind_exec()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ const QString qtest_prepare(qTableName("qtest_prepare", __FILE__, db));
+
+ if (dbType == QSqlDriver::Interbase && (db.databaseName() == "silence.nokia.troll.no:c:\\ibase\\testdb_ascii" || db.databaseName() == "/opt/interbase/qttest.gdb"))
+@@ -1785,7 +1785,7 @@ void tst_QSqlQuery::prepare_bind_exec()
+ useUnicode = false;
+
+ QString createQuery;
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::PostgreSQL)
+ QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
+
+@@ -2059,7 +2059,7 @@ void tst_QSqlQuery::sqlServerLongStrings()
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType != QSqlDriver::MSSqlServer)
+ QSKIP( "SQL Server specific test");
+
+@@ -2105,7 +2105,7 @@ void tst_QSqlQuery::invalidQuery()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ QSqlQuery q( db );
+
+ QVERIFY( !q.exec() );
+@@ -2442,7 +2442,7 @@ void tst_QSqlQuery::createQueryOnClosedDatabase()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ // Only supported by these drivers
+
+ if (dbType != QSqlDriver::PostgreSQL && dbType != QSqlDriver::Oracle
+@@ -2574,7 +2574,7 @@ void tst_QSqlQuery::nextResult()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if ( !db.driver()->hasFeature( QSqlDriver::MultipleResultSets ) || !db.driver()->hasFeature( QSqlDriver::BatchOperations ) )
+ QSKIP( "DBMS does not support multiple result sets or batch operations");
+
+@@ -2774,7 +2774,7 @@ void tst_QSqlQuery::blobsPreparedQuery()
+
+ // In PostgreSQL a BLOB is not called a BLOB, but a BYTEA! :-)
+ // ... and in SQL Server it can be called a lot, but IMAGE will do.
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ QString typeName( "BLOB" );
+ if (dbType == QSqlDriver::PostgreSQL)
+ typeName = "BYTEA";
+@@ -3053,7 +3053,7 @@ void tst_QSqlQuery::sqlServerReturn0()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType != QSqlDriver::MSSqlServer)
+ QSKIP("SQL Server specific test");
+
+@@ -3169,7 +3169,7 @@ void tst_QSqlQuery::QTBUG_18435()
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType != QSqlDriver::MSSqlServer || !db.driverName().startsWith("QODBC"))
+ QSKIP("SQL Server specific test");
+
+@@ -3251,7 +3251,7 @@ void tst_QSqlQuery::QTBUG_6618()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType != QSqlDriver::MSSqlServer)
+ QSKIP("SQL Server specific test");
+
+@@ -3668,7 +3668,7 @@ void tst_QSqlQuery::sqlite_constraint()
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType != QSqlDriver::SQLite)
+ QSKIP("Sqlite3 specific test");
+
+@@ -3720,7 +3720,7 @@ void tst_QSqlQuery::aggregateFunctionTypes()
+ CHECK_DATABASE(db);
+ QVariant::Type intType = QVariant::Int;
+ // QPSQL uses LongLong for manipulation of integers
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::MySqlServer || dbType == QSqlDriver::PostgreSQL)
+ intType = QVariant::LongLong;
+ else if (dbType == QSqlDriver::Oracle)
+diff --git a/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp b/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp
+index 84e2fd5..fc10f21 100644
+--- a/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp
++++ b/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp
+@@ -150,7 +150,7 @@ void tst_QSqlQueryModel::createTestTables(QSqlDatabase db)
+ {
+ dropTestTables(db);
+ QSqlQuery q(db);
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::PostgreSQL)
+ QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
+ QVERIFY_SQL( q, exec("create table " + qTableName("test", __FILE__, db) + "(id integer not null, name varchar(20), title integer, primary key (id))"));
+@@ -305,7 +305,7 @@ void tst_QSqlQueryModel::insertColumn()
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ DBTestModel model;
+ model.setQuery(QSqlQuery("select * from " + qTableName("test", __FILE__, db), db));
+@@ -409,7 +409,7 @@ void tst_QSqlQueryModel::record()
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ QSqlQueryModel model;
+ model.setQuery(QSqlQuery("select * from " + qTableName("test", __FILE__, db), db));
+@@ -440,7 +440,7 @@ void tst_QSqlQueryModel::setHeaderData()
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ QSqlQueryModel model;
+
+diff --git a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+index e97c391..a32c672 100644
+--- a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
++++ b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+@@ -143,7 +143,7 @@ void tst_QSqlRelationalTableModel::initTestCase()
+ {
+ foreach (const QString &dbname, dbs.dbNames) {
+ QSqlDatabase db=QSqlDatabase::database(dbname);
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::Interbase) {
+ db.exec("SET DIALECT 3");
+ } else if (dbType == QSqlDriver::MSSqlServer) {
+@@ -238,7 +238,7 @@ void tst_QSqlRelationalTableModel::setData()
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ // set the values using OnRowChange Strategy
+ {
+@@ -554,7 +554,7 @@ void tst_QSqlRelationalTableModel::insertWithStrategies()
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+@@ -746,7 +746,7 @@ void tst_QSqlRelationalTableModel::sort()
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+@@ -912,7 +912,7 @@ void tst_QSqlRelationalTableModel::clearDisplayValuesCache()
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ QSqlRelationalTableModel model(0, db);
+
+@@ -966,7 +966,7 @@ void tst_QSqlRelationalTableModel::insertRecordDuplicateFieldNames()
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ QSqlRelationalTableModel model(0, db);
+ model.setTable(reltest3);
+@@ -1088,7 +1088,7 @@ void tst_QSqlRelationalTableModel::casing()
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ if (dbType == QSqlDriver::Interbase || dbType == QSqlDriver::SQLite || dbType == QSqlDriver::MSSqlServer)
+ QSKIP("The casing test for this database is irrelevant since this database does not treat different cases as separate entities");
+@@ -1155,7 +1155,7 @@ void tst_QSqlRelationalTableModel::escapedRelations()
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ recreateTestTables(db);
+
+@@ -1266,7 +1266,7 @@ void tst_QSqlRelationalTableModel::escapedTableName()
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ // set the values using OnRowChange Strategy with an escaped tablename
+ {
+@@ -1455,7 +1455,7 @@ void tst_QSqlRelationalTableModel::psqlSchemaTest()
+ QFETCH_GLOBAL(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ if (dbType != QSqlDriver::PostgreSQL)
+ QSKIP("Postgresql specific test");
+diff --git a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
+index b77b883..f0aaa36 100644
+--- a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
++++ b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
+@@ -160,7 +160,7 @@ void tst_QSqlTableModel::dropTestTables()
+ {
+ for (int i = 0; i < dbs.dbNames.count(); ++i) {
+ QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i));
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ QSqlQuery q(db);
+ if (dbType == QSqlDriver::PostgreSQL)
+ QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
+@@ -189,7 +189,7 @@ void tst_QSqlTableModel::createTestTables()
+ {
+ for (int i = 0; i < dbs.dbNames.count(); ++i) {
+ QSqlDatabase db = QSqlDatabase::database(dbs.dbNames.at(i));
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ QSqlQuery q(db);
+
+ QVERIFY_SQL( q, exec("create table " + test + "(id int, name varchar(20), title int)"));
+@@ -1699,7 +1699,7 @@ void tst_QSqlTableModel::primaryKeyOrder()
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ QSqlQuery q(db);
+
+diff --git a/tests/benchmarks/sql/kernel/qsqlquery/main.cpp b/tests/benchmarks/sql/kernel/qsqlquery/main.cpp
+index 769dbe6..c8375a6 100644
+--- a/tests/benchmarks/sql/kernel/qsqlquery/main.cpp
++++ b/tests/benchmarks/sql/kernel/qsqlquery/main.cpp
+@@ -109,7 +109,7 @@ void tst_QSqlQuery::cleanup()
+ QFETCH( QString, dbName );
+ QSqlDatabase db = QSqlDatabase::database( dbName );
+ CHECK_DATABASE( db );
+- const QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+
+ if ( QTest::currentTestFunction() == QLatin1String( "numRowsAffected" )
+ || QTest::currentTestFunction() == QLatin1String( "transactions" )
+@@ -138,7 +138,7 @@ void tst_QSqlQuery::generic_data(const QString& engine)
+
+ void tst_QSqlQuery::dropTestTables( QSqlDatabase db )
+ {
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ QStringList tablenames;
+ // drop all the table in case a testcase failed
+ tablenames << qtest
+@@ -199,7 +199,7 @@ void tst_QSqlQuery::createTestTables( QSqlDatabase db )
+ {
+ const QString qtestNull = qTableName("qtest_null", __FILE__, db);
+ QSqlQuery q( db );
+- QSqlDriver::DBMSType dbType = tst_Databases::getDatabaseType(db);
++ QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::MySqlServer)
+ // ### stupid workaround until we find a way to hardcode this
+ // in the MySQL server startup script
+--
+2.1.2
+
+
+From 5ed2f422fc3c80731be7a07da3875aaa5572d4e6 Mon Sep 17 00:00:00 2001
+From: Nico Vertriest <nico.vertriest@digia.com>
+Date: Fri, 31 Oct 2014 14:20:20 +0100
+Subject: [PATCH 18/36] Doc: corrected autolink errors corelib/io
+
+Task-number: QTBUG-40362
+Change-Id: I1cdbde1f6b003556ba4b5e97a49c6d918518da0d
+Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
+Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
+
+diff --git a/doc/src/examples/codecs.qdoc b/doc/src/examples/codecs.qdoc
+deleted file mode 100644
+index d9f6956..0000000
+--- a/doc/src/examples/codecs.qdoc
++++ /dev/null
+@@ -1,37 +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 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$
+-**
+-****************************************************************************/
+-
+-/*!
+- \example codecs
+- \title Codecs Example
+-
+- The Codecs example demonstrates the principles behind importing and exporting text
+- using codecs to ensure that characters are encoded properly, avoiding loss of data
+- and retaining the correct symbols used in various scripts.
+-
+- \image codecs-example.png
+-*/
+diff --git a/examples/widgets/tools/codecs/doc/src/codecs.qdoc b/examples/widgets/tools/codecs/doc/src/codecs.qdoc
+new file mode 100644
+index 0000000..e81cc00
+--- /dev/null
++++ b/examples/widgets/tools/codecs/doc/src/codecs.qdoc
+@@ -0,0 +1,37 @@
++/****************************************************************************
++**
++** Copyright (C) 2014 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$
++**
++****************************************************************************/
++
++/*!
++ \example tools/codecs
++ \title Text Codecs Example
++
++ The Text Codecs example demonstrates the principles behind importing and exporting text
++ using codecs to ensure that characters are encoded properly, avoiding loss of data
++ and retaining the correct symbols used in various scripts.
++
++ \image codecs-example.png
++*/
+diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp
+index d2857c0..6eae9e5 100644
+--- a/src/corelib/codecs/qtextcodec.cpp
++++ b/src/corelib/codecs/qtextcodec.cpp
+@@ -380,7 +380,7 @@ QTextCodec::ConverterState::~ConverterState()
+ If Qt is compiled with ICU support enabled, most codecs supported by
+ ICU will also be available to the application.
+
+- QTextCodecs can be used as follows to convert some locally encoded
++ \l {QTextCodec}s can be used as follows to convert some locally encoded
+ string to Unicode. Suppose you have some string encoded in Russian
+ KOI8-R encoding, and want to convert it to Unicode. The simple way
+ to do it is like this:
+@@ -453,7 +453,7 @@ QTextCodec::ConverterState::~ConverterState()
+ \li Converts a Unicode string to an 8-bit character string.
+ \endtable
+
+- \sa QTextStream, QTextDecoder, QTextEncoder, {Codecs Example}
++ \sa QTextStream, QTextDecoder, QTextEncoder, {Text Codecs Example}
+ */
+
+ /*!
+diff --git a/src/corelib/io/qdebug.cpp b/src/corelib/io/qdebug.cpp
+index c1e0125..5c77ccd 100644
+--- a/src/corelib/io/qdebug.cpp
++++ b/src/corelib/io/qdebug.cpp
+@@ -403,8 +403,8 @@ QDebug &QDebug::resetFormat()
+ \brief Convenience class for custom QDebug operators
+
+ Saves the settings used by QDebug, and restores them upon destruction,
+- then calls maybeSpace(), to separate arguments with a space if
+- autoInsertSpaces() was true at the time of constructing the QDebugStateSaver.
++ then calls \l {QDebug::maybeSpace()}{maybeSpace()}, to separate arguments with a space if
++ \l {QDebug::autoInsertSpaces()}{autoInsertSpaces()} was true at the time of constructing the QDebugStateSaver.
+
+ The automatic insertion of spaces between writes is one of the settings
+ that QDebugStateSaver stores for the duration of the current block.
+diff --git a/src/corelib/io/qfiledevice.cpp b/src/corelib/io/qfiledevice.cpp
+index 598347a..29b59f1 100644
+--- a/src/corelib/io/qfiledevice.cpp
++++ b/src/corelib/io/qfiledevice.cpp
+@@ -240,7 +240,7 @@ bool QFileDevice::isSequential() const
+ Returns the file handle of the file.
+
+ This is a small positive integer, suitable for use with C library
+- functions such as fdopen() and fcntl(). On systems that use file
++ functions such as \c fdopen() and \c fcntl(). On systems that use file
+ descriptors for sockets (i.e. Unix systems, but not Windows) the handle
+ can be used with QSocketNotifier as well.
+
+@@ -389,9 +389,9 @@ bool QFileDevice::atEnd() const
+ return false.
+
+ Seeking beyond the end of a file:
+- If the position is beyond the end of a file, then seek() shall not
++ If the position is beyond the end of a file, then seek() will not
+ immediately extend the file. If a write is performed at this position,
+- then the file shall be extended. The content of the file between the
++ then the file will be extended. The content of the file between the
+ previous end of file and the newly written data is UNDEFINED and
+ varies between platforms and file systems.
+ */
+diff --git a/src/corelib/io/qloggingcategory.cpp b/src/corelib/io/qloggingcategory.cpp
+index fef48a9..79d2060 100644
+--- a/src/corelib/io/qloggingcategory.cpp
++++ b/src/corelib/io/qloggingcategory.cpp
+@@ -149,10 +149,10 @@ static void setBoolLane(QBasicAtomicInt *atomic, bool enable, int shift)
+
+ Order of evaluation:
+ \list
+- \li Rules from QtProject/qtlogging.ini
+- \li Rules set by \l setFilterRules()
+- \li Rules from file in \c QT_LOGGING_CONF
+- \li Rules from environment variable QT_LOGGING_RULES
++ \li QtProject/qtlogging.ini
++ \li \l setFilterRules()
++ \li \c QT_LOGGING_CONF
++ \li \c QT_LOGGING_RULES
+ \endlist
+
+ The \c QtProject/qtlogging.ini file is looked up in all directories returned
+diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp
+index e76a836..a234050 100644
+--- a/src/corelib/io/qprocess.cpp
++++ b/src/corelib/io/qprocess.cpp
+@@ -1853,8 +1853,8 @@ void QProcess::setProcessState(ProcessState state)
+
+ /*!
+ This function is called in the child process context just before the
+- program is executed on Unix or Mac OS X (i.e., after \e fork(), but before
+- \e execve()). Reimplement this function to do last minute initialization
++ program is executed on Unix or OS X (i.e., after \c fork(), but before
++ \c execve()). Reimplement this function to do last minute initialization
+ of the child process. Example:
+
+ \snippet code/src_corelib_io_qprocess.cpp 4
+@@ -1864,7 +1864,7 @@ void QProcess::setProcessState(ProcessState state)
+ execution, your workaround is to emit finished() and then call
+ exit().
+
+- \warning This function is called by QProcess on Unix and Mac OS X
++ \warning This function is called by QProcess on Unix and OS X
+ only. On Windows and QNX, it is not called.
+ */
+ void QProcess::setupChildProcess()
+@@ -2272,7 +2272,7 @@ void QProcess::setArguments(const QStringList &arguments)
+
+ On Windows, terminate() posts a WM_CLOSE message to all toplevel windows
+ of the process and then to the main thread of the process itself. On Unix
+- and Mac OS X the SIGTERM signal is sent.
++ and OS X the \c SIGTERM signal is sent.
+
+ Console applications on Windows that do not run an event loop, or whose
+ event loop does not handle the WM_CLOSE message, can only be terminated by
+@@ -2289,7 +2289,7 @@ void QProcess::terminate()
+ /*!
+ Kills the current process, causing it to exit immediately.
+
+- On Windows, kill() uses TerminateProcess, and on Unix and Mac OS X, the
++ On Windows, kill() uses TerminateProcess, and on Unix and OS X, the
+ SIGKILL signal is sent to the process.
+
+ \sa terminate()
+diff --git a/src/corelib/io/qstandardpaths.cpp b/src/corelib/io/qstandardpaths.cpp
+index c206e43..538292f 100644
+--- a/src/corelib/io/qstandardpaths.cpp
++++ b/src/corelib/io/qstandardpaths.cpp
+@@ -588,11 +588,11 @@ QString QStandardPaths::displayName(StandardLocation type)
+ GenericCacheLocation, CacheLocation.
+ Other locations are not affected.
+
+- On Unix, XDG_DATA_HOME is set to ~/.qttest/share, XDG_CONFIG_HOME is
+- set to ~/.qttest/config, and XDG_CACHE_HOME is set to ~/.qttest/cache.
++ On Unix, \c XDG_DATA_HOME is set to \e ~/.qttest/share, \c XDG_CONFIG_HOME is
++ set to \e ~/.qttest/config, and \c XDG_CACHE_HOME is set to \e ~/.qttest/cache.
+
+- On Mac, data goes to "~/.qttest/Application Support", cache goes to
+- ~/.qttest/Cache, and config goes to ~/.qttest/Preferences.
++ On OS X, data goes to \e ~/.qttest/Application Support, cache goes to
++ \e ~/.qttest/Cache, and config goes to \e ~/.qttest/Preferences.
+
+ On Windows, everything goes to a "qttest" directory under Application Data.
+ */
+diff --git a/src/corelib/io/qtemporarydir.cpp b/src/corelib/io/qtemporarydir.cpp
+index 7ce37fd..5e0def7 100644
+--- a/src/corelib/io/qtemporarydir.cpp
++++ b/src/corelib/io/qtemporarydir.cpp
+@@ -180,7 +180,7 @@ void QTemporaryDirPrivate::create(const QString &templateName)
+ \snippet code/src_corelib_io_qtemporarydir.cpp 0
+
+ It is very important to test that the temporary directory could be
+- created, using isValid(). Do not use exists(), since a default-constructed
++ created, using isValid(). Do not use \l {QDir::exists()}{exists()}, since a default-constructed
+ QDir represents the current directory, which exists.
+
+ The path to the temporary dir can be found by calling path().
+diff --git a/src/corelib/io/qtextstream.cpp b/src/corelib/io/qtextstream.cpp
+index 66727e7..089a915 100644
+--- a/src/corelib/io/qtextstream.cpp
++++ b/src/corelib/io/qtextstream.cpp
+@@ -85,8 +85,8 @@ static const int QTEXTSTREAM_BUFFERSIZE = 16384;
+
+ \li Chunk by chunk, by calling readLine() or readAll().
+
+- \li Word by word. QTextStream supports streaming into QStrings,
+- QByteArrays and char* buffers. Words are delimited by space, and
++ \li Word by word. QTextStream supports streaming into \l {QString}s,
++ \l {QByteArray}s and char* buffers. Words are delimited by space, and
+ leading white space is automatically skipped.
+
+ \li Character by character, by streaming into QChar or char types.
+@@ -158,7 +158,7 @@ static const int QTEXTSTREAM_BUFFERSIZE = 16384;
+ parameter: qSetFieldWidth(), qSetPadChar(), and
+ qSetRealNumberPrecision().
+
+- \sa QDataStream, QIODevice, QFile, QBuffer, QTcpSocket, {Codecs Example}
++ \sa QDataStream, QIODevice, QFile, QBuffer, QTcpSocket, {Text Codecs Example}
+ */
+
+ /*! \enum QTextStream::RealNumberNotation
+@@ -1531,7 +1531,7 @@ bool QTextStream::atEnd() const
+ QString. Avoid this function when working on large files, as it
+ will consume a significant amount of memory.
+
+- Calling readLine() is better if you do not know how much data is
++ Calling \l {QTextStream::readLine()}{readLine()} is better if you do not know how much data is
+ available.
+
+ \sa readLine()
+@@ -1556,9 +1556,9 @@ QString QTextStream::readAll()
+ The returned line has no trailing end-of-line characters ("\\n"
+ or "\\r\\n"), so calling QString::trimmed() is unnecessary.
+
+- If the stream has read to the end of the file, readLine() will return a
+- null QString. For strings, or for devices that support it, you can
+- explicitly test for the end of the stream using atEnd().
++ If the stream has read to the end of the file, \l {QTextStream::readLine()}{readLine()}
++ will return a null QString. For strings, or for devices that support it,
++ you can explicitly test for the end of the stream using atEnd().
+
+ \sa readAll(), QIODevice::readLine()
+ */
+@@ -2790,7 +2790,7 @@ QTextStream &endl(QTextStream &stream)
+ /*!
+ \relates QTextStream
+
+- Calls QTextStream::flush() on \a stream and returns \a stream.
++ Calls \l{QTextStream::flush()}{flush()} on \a stream and returns \a stream.
+
+ \sa endl(), reset(), {QTextStream manipulators}
+ */
+diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
+index d4c5e03..d4c5a34 100644
+--- a/src/corelib/io/qurl.cpp
++++ b/src/corelib/io/qurl.cpp
+@@ -2671,8 +2671,8 @@ void QUrl::setQuery(const QUrlQuery &query)
+ Sets the query string of the URL to an encoded version of \a
+ query. The contents of \a query are converted to a string
+ internally, each pair delimited by the character returned by
+- queryPairDelimiter(), and the key and value are delimited by
+- queryValueDelimiter().
++ \l {QUrlQuery::queryPairDelimiter()}{queryPairDelimiter()}, and the key and value are delimited by
++ \l {QUrlQuery::queryValueDelimiter()}{queryValueDelimiter()}
+
+ \note This method does not encode spaces (ASCII 0x20) as plus (+) signs,
+ like HTML forms do. If you need that kind of encoding, you must encode
+@@ -2691,8 +2691,8 @@ void QUrl::setQuery(const QUrlQuery &query)
+ Sets the query string of the URL to the encoded version of \a
+ query. The contents of \a query are converted to a string
+ internally, each pair delimited by the character returned by
+- queryPairDelimiter(), and the key and value are delimited by
+- queryValueDelimiter().
++ \l {QUrlQuery::queryPairDelimiter()}{queryPairDelimiter()}, and the key and value are delimited by
++ \l {QUrlQuery::queryValueDelimiter()}{queryValueDelimiter()}.
+
+ \obsolete Use QUrlQuery and setQuery().
+
+@@ -2709,8 +2709,9 @@ void QUrl::setQuery(const QUrlQuery &query)
+ The key-value pair is encoded before it is added to the query. The
+ pair is converted into separate strings internally. The \a key and
+ \a value is first encoded into UTF-8 and then delimited by the
+- character returned by queryValueDelimiter(). Each key-value pair is
+- delimited by the character returned by queryPairDelimiter().
++ character returned by \l {QUrlQuery::queryValueDelimiter()}{queryValueDelimiter()}.
++ Each key-value pair is delimited by the character returned by
++ \l {QUrlQuery::queryPairDelimiter()}{queryPairDelimiter()}
+
+ \note This method does not encode spaces (ASCII 0x20) as plus (+) signs,
+ like HTML forms do. If you need that kind of encoding, you must encode
+--
+2.1.2
+
+
+From b7f6e6282b9220c28a2f0b3e703ba9b9aceac52b Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Wed, 26 Nov 2014 16:04:13 -0800
+Subject: [PATCH 19/36] Removed wrong task number from changelog entry
+
+See http://lists.qt-project.org/pipermail/development/2014-November/019331.html
+
+Change-Id: I54876dd210c87690117b6aacf78aef0961e704ef
+Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
+
+diff --git a/dist/changes-5.4.0 b/dist/changes-5.4.0
+index 2b6cd2b..48c2507 100644
+--- a/dist/changes-5.4.0
++++ b/dist/changes-5.4.0
+@@ -439,7 +439,7 @@ OS X
+ - The Qt binary packages are now configured with C++11 enabled.
+ - [QTBUG-41208] Fixed detection of writing system support in fonts for
+ some scripts such as Mkhedruli.
+- - [QTBUG-41192] Fixed menu item shortcuts without keyboard modifiers.
++ - Fixed menu item shortcuts without keyboard modifiers.
+ - [QTBUG-31301] Drag-and-drop QMimeData requests are now delayed until
+ drop time.
+ - [QTBUG-10899] Added support for ApplicationState
+--
+2.1.2
+
+
+From 7c539579b9e883c87e5f7fb3bbec80847fc83ae2 Mon Sep 17 00:00:00 2001
+From: BogDan Vatra <bogdan@kde.org>
+Date: Wed, 26 Nov 2014 14:55:51 +0200
+Subject: [PATCH 20/36] Use Holo theme on Android 5.0.
+
+This is a temporary "fix" until we'll fix all the problems with the new
+Android Material theme.
+
+Task-number: QTBUG-42900
+Change-Id: I5485cfd5ac5fdd66cb85da423fe2e63e65be010f
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
+Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
+
+diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
+index 0c52bc7..75f10ad 100644
+--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
++++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
+@@ -187,7 +187,7 @@ public class QtActivity extends Activity
+ QT_ANDROID_THEMES = new String[] {"Theme_Light"};
+ QT_ANDROID_DEFAULT_THEME = "Theme_Light";
+ }
+- else if (Build.VERSION.SDK_INT >= 11 && Build.VERSION.SDK_INT <= 13) {
++ else if ((Build.VERSION.SDK_INT >= 11 && Build.VERSION.SDK_INT <= 13) || Build.VERSION.SDK_INT == 21){
+ QT_ANDROID_THEMES = new String[] {"Theme_Holo_Light"};
+ QT_ANDROID_DEFAULT_THEME = "Theme_Holo_Light";
+ } else {
+--
+2.1.2
+
+
+From 7b33faa1e97353d658fc7cd13ca789fccfa7ec1f Mon Sep 17 00:00:00 2001
+From: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
+Date: Wed, 26 Nov 2014 14:54:33 +0100
+Subject: [PATCH 21/36] changes-5.4.0: additional changes for iOS
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Change-Id: Ie8dc10be7ac8a73857a2b47e9bfb00954a7421a9
+Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
+
+diff --git a/dist/changes-5.4.0 b/dist/changes-5.4.0
+index 48c2507..2cdf52e 100644
+--- a/dist/changes-5.4.0
++++ b/dist/changes-5.4.0
+@@ -418,6 +418,13 @@ iOS
+ Applications making use of DataLocation should move these data to the
+ new location. This can be done using the path provided by
+ DocumentLocation as the source path.
++ - [QTBUG-41458] screen resolution update after device rotation now works.
++ - [QTBUG-42345] fixed crash on startup on iOS 7.1
++ - iOS is now using fat builds with both 32-, and 64-bit support.
++ - New launch screen added to support iPhone6/6+.
++ - QtQuick Controls now support native text selection and popup menus.
++ - Virtual keyboard visibility is now automatically managed by the platform plugin.
++ - Default theme fonts now uses Dynamic Type, which is based on user system settings.
+
+ Linux/XCB
+ ---------
+--
+2.1.2
+
+
+From 38d3a7bb6eec46f1bab5ed53334ff2639e9b6eea Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20Str=C3=B8mme?=
+ <christian.stromme@theqtcompany.com>
+Date: Thu, 27 Nov 2014 11:47:42 +0100
+Subject: [PATCH 22/36] changes-5.4.0: Additional changes for Android
+
+Mention the new bearer plugin.
+
+Change-Id: Icf5f53ef1f920a13a1820dedceb0fa64f0155887
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
+
+diff --git a/dist/changes-5.4.0 b/dist/changes-5.4.0
+index 2cdf52e..efd5d91 100644
+--- a/dist/changes-5.4.0
++++ b/dist/changes-5.4.0
+@@ -402,7 +402,8 @@ Android
+ - [QTBUG-41817] QClipboard::mimeData() now returns an empty object instead
+ of null pointer from QClipboard when clipboard is empty for consistency
+ with other platforms.
+-
++ - New bearer plugin. It's now possible to get more information about the
++ different network configurations on Android.
+ - Important Behavior Changes:
+ * [QTBUG-36274] The main event loop is now stopped when the app is
+ suspended
+--
+2.1.2
+
+
+From a2da88712f1e057747f68a28361b300faac5e605 Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Mon, 24 Nov 2014 23:41:00 -0800
+Subject: [PATCH 23/36] Make QtDBus compile without libdbus-1 headers, if
+ dlopening
+
+Most of QtDBus already needs very little from libdus-1, so create an
+extra header containing the minimum API we actually need.
+
+One large advantage of this solution is that now QtDBus can always be
+enabled, even if the system doesn't have libdbus-1 installed. This is
+interesting on OS X, where libdbus-1 is often installed by Homebrew or
+MacPorts, which may include extra libraries we don't want in our
+packaging.
+
+Change-Id: I1b397121ec12eeca333ef778cf8e1c7b64d6b223
+Reviewed-by: Lars Knoll <lars.knoll@digia.com>
+
+diff --git a/configure b/configure
+index d95d8a2..6f21ba7 100755
+--- a/configure
++++ b/configure
+@@ -4642,8 +4642,8 @@ if [ "$CFG_DBUS" != "no" ]; then
+ fi
+ QMakeVar set QT_HOST_CFLAGS_DBUS "$QT_CFLAGS_DBUS"
+ else
+- if [ "$CFG_DBUS" = "auto" ]; then
+- CFG_DBUS=no
++ if [ "$CFG_DBUS" != "linked" ]; then
++ CFG_DBUS=runtime
+ elif [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ # CFG_DBUS is "yes" or "linked" here
+
+diff --git a/src/dbus/dbus.pro b/src/dbus/dbus.pro
+index c5afe8c..3ef8e6c 100644
+--- a/src/dbus/dbus.pro
++++ b/src/dbus/dbus.pro
+@@ -61,7 +61,8 @@ HEADERS += $$PUB_HEADERS \
+ qdbusintegrator_p.h \
+ qdbuspendingcall_p.h \
+ qdbus_symbols_p.h \
+- qdbusintrospection_p.h
++ qdbusintrospection_p.h \
++ dbus_minimal_p.h
+ SOURCES += qdbusconnection.cpp \
+ qdbusconnectioninterface.cpp \
+ qdbuserror.cpp \
+diff --git a/src/dbus/dbus_minimal_p.h b/src/dbus/dbus_minimal_p.h
+new file mode 100644
+index 0000000..862e820
+--- /dev/null
++++ b/src/dbus/dbus_minimal_p.h
+@@ -0,0 +1,275 @@
++/****************************************************************************
++**
++** Copyright (C) 2014 Intel Corporation
++** Contact: http://www.qt-project.org/legal
++**
++** This file is part of the QtDBus module of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:LGPL21$
++** 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 or version 3 as published by the Free
++** Software Foundation and appearing in the file LICENSE.LGPLv21 and
++** LICENSE.LGPLv3 included in the packaging of this file. Please review the
++** following information to ensure the GNU Lesser General Public License
++** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
++** 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.
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++#ifndef DBUS_MINIMAL_P_H
++#define DBUS_MINIMAL_P_H
++
++extern "C" {
++
++// Equivalent to dbus-arch-deps.h
++typedef qint64 dbus_int64_t;
++typedef quint64 dbus_uint64_t;
++typedef qint32 dbus_int32_t;
++typedef quint32 dbus_uint32_t;
++typedef qint16 dbus_int16_t;
++typedef quint16 dbus_uint16_t;
++
++// simulate minimum version we support
++#define DBUS_MAJOR_VERSION 1
++#define DBUS_MINOR_VERSION 2
++#define DBUS_VERSION ((1 << 16) | (2 << 8))
++
++// forward declaration to opaque types we use
++struct DBusConnection;
++struct DBusMessage;
++struct DBusPendingCall;
++struct DBusServer;
++struct DBusTimeout;
++struct DBusWatch;
++
++// This file contains constants and typedefs from libdbus-1 headers,
++// which carry the following copyright:
++/*
++ * Copyright (C) 2002, 2003 CodeFactory AB
++ * Copyright (C) 2004, 2005 Red Hat, Inc.
++ *
++ * Licensed under the Academic Free License version 2.1
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
++ *
++ */
++
++/* dbus-types.h */
++typedef dbus_uint32_t dbus_unichar_t;
++typedef dbus_uint32_t dbus_bool_t;
++
++/* dbus-shared.h */
++#define DBUS_SERVICE_DBUS "org.freedesktop.DBus"
++#define DBUS_PATH_DBUS "/org/freedesktop/DBus"
++#define DBUS_INTERFACE_DBUS "org.freedesktop.DBus"
++#define DBUS_INTERFACE_INTROSPECTABLE "org.freedesktop.DBus.Introspectable"
++#define DBUS_INTERFACE_PROPERTIES "org.freedesktop.DBus.Properties"
++
++#define DBUS_NAME_FLAG_ALLOW_REPLACEMENT 0x1 /**< Allow another service to become the primary owner if requested */
++#define DBUS_NAME_FLAG_REPLACE_EXISTING 0x2 /**< Request to replace the current primary owner */
++#define DBUS_NAME_FLAG_DO_NOT_QUEUE 0x4 /**< If we can not become the primary owner do not place us in the queue */
++
++#define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1 /**< Service has become the primary owner of the requested name */
++#define DBUS_REQUEST_NAME_REPLY_IN_QUEUE 2 /**< Service could not become the primary owner and has been placed in the queue */
++#define DBUS_REQUEST_NAME_REPLY_EXISTS 3 /**< Service is already in the queue */
++#define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4 /**< Service is already the primary owner */
++
++#define DBUS_RELEASE_NAME_REPLY_RELEASED 1 /**< Service was released from the given name */
++#define DBUS_RELEASE_NAME_REPLY_NON_EXISTENT 2 /**< The given name does not exist on the bus */
++#define DBUS_RELEASE_NAME_REPLY_NOT_OWNER 3 /**< Service is not an owner of the given name */
++
++typedef enum
++{
++ DBUS_BUS_SESSION, /**< The login session bus */
++ DBUS_BUS_SYSTEM, /**< The systemwide bus */
++ DBUS_BUS_STARTER /**< The bus that started us, if any */
++} DBusBusType;
++
++typedef enum
++{
++ DBUS_HANDLER_RESULT_HANDLED, /**< Message has had its effect - no need to run more handlers. */
++ DBUS_HANDLER_RESULT_NOT_YET_HANDLED, /**< Message has not had any effect - see if other handlers want it. */
++ DBUS_HANDLER_RESULT_NEED_MEMORY /**< Need more memory in order to return #DBUS_HANDLER_RESULT_HANDLED or #DBUS_HANDLER_RESULT_NOT_YET_HANDLED. Please try again later with more memory. */
++} DBusHandlerResult;
++
++/* dbus-memory.h */
++typedef void (* DBusFreeFunction) (void *memory);
++
++/* dbus-connection.h */
++typedef enum
++{
++ DBUS_WATCH_READABLE = 1 << 0, /**< As in POLLIN */
++ DBUS_WATCH_WRITABLE = 1 << 1, /**< As in POLLOUT */
++ DBUS_WATCH_ERROR = 1 << 2, /**< As in POLLERR (can't watch for
++ * this, but can be present in
++ * current state passed to
++ * dbus_watch_handle()).
++ */
++ DBUS_WATCH_HANGUP = 1 << 3 /**< As in POLLHUP (can't watch for
++ * it, but can be present in current
++ * state passed to
++ * dbus_watch_handle()).
++ */
++ /* Internal to libdbus, there is also _DBUS_WATCH_NVAL in dbus-watch.h */
++} DBusWatchFlags;
++
++typedef enum
++{
++ DBUS_DISPATCH_DATA_REMAINS, /**< There is more data to potentially convert to messages. */
++ DBUS_DISPATCH_COMPLETE, /**< All currently available data has been processed. */
++ DBUS_DISPATCH_NEED_MEMORY /**< More memory is needed to continue. */
++} DBusDispatchStatus;
++
++typedef dbus_bool_t (* DBusAddWatchFunction) (DBusWatch *watch,
++ void *data);
++typedef void (* DBusWatchToggledFunction) (DBusWatch *watch,
++ void *data);
++typedef void (* DBusRemoveWatchFunction) (DBusWatch *watch,
++ void *data);
++typedef dbus_bool_t (* DBusAddTimeoutFunction) (DBusTimeout *timeout,
++ void *data);
++typedef void (* DBusTimeoutToggledFunction) (DBusTimeout *timeout,
++ void *data);
++typedef void (* DBusRemoveTimeoutFunction) (DBusTimeout *timeout,
++ void *data);
++typedef void (* DBusDispatchStatusFunction) (DBusConnection *connection,
++ DBusDispatchStatus new_status,
++ void *data);
++typedef void (* DBusWakeupMainFunction) (void *data);
++typedef void (* DBusPendingCallNotifyFunction) (DBusPendingCall *pending,
++ void *user_data);
++typedef DBusHandlerResult (* DBusHandleMessageFunction) (DBusConnection *connection,
++ DBusMessage *message,
++ void *user_data);
++
++/* dbus-errors.h */
++struct DBusError
++{
++ const char *name; /**< public error name field */
++ const char *message; /**< public error message field */
++
++ unsigned int dummy1 : 1; /**< placeholder */
++ unsigned int dummy2 : 1; /**< placeholder */
++ unsigned int dummy3 : 1; /**< placeholder */
++ unsigned int dummy4 : 1; /**< placeholder */
++ unsigned int dummy5 : 1; /**< placeholder */
++
++ void *padding1; /**< placeholder */
++};
++
++/* dbus-message.h */
++struct DBusMessageIter
++{
++ void *dummy1; /**< Don't use this */
++ void *dummy2; /**< Don't use this */
++ dbus_uint32_t dummy3; /**< Don't use this */
++ int dummy4; /**< Don't use this */
++ int dummy5; /**< Don't use this */
++ int dummy6; /**< Don't use this */
++ int dummy7; /**< Don't use this */
++ int dummy8; /**< Don't use this */
++ int dummy9; /**< Don't use this */
++ int dummy10; /**< Don't use this */
++ int dummy11; /**< Don't use this */
++ int pad1; /**< Don't use this */
++ int pad2; /**< Don't use this */
++ void *pad3; /**< Don't use this */
++};
++
++/* dbus-protocol.h */
++#define DBUS_TYPE_INVALID ((int) '\0')
++#define DBUS_TYPE_INVALID_AS_STRING "\0"
++#define DBUS_TYPE_BYTE ((int) 'y')
++#define DBUS_TYPE_BYTE_AS_STRING "y"
++#define DBUS_TYPE_BOOLEAN ((int) 'b')
++#define DBUS_TYPE_BOOLEAN_AS_STRING "b"
++#define DBUS_TYPE_INT16 ((int) 'n')
++#define DBUS_TYPE_INT16_AS_STRING "n"
++#define DBUS_TYPE_UINT16 ((int) 'q')
++#define DBUS_TYPE_UINT16_AS_STRING "q"
++#define DBUS_TYPE_INT32 ((int) 'i')
++#define DBUS_TYPE_INT32_AS_STRING "i"
++#define DBUS_TYPE_UINT32 ((int) 'u')
++#define DBUS_TYPE_UINT32_AS_STRING "u"
++#define DBUS_TYPE_INT64 ((int) 'x')
++#define DBUS_TYPE_INT64_AS_STRING "x"
++#define DBUS_TYPE_UINT64 ((int) 't')
++#define DBUS_TYPE_UINT64_AS_STRING "t"
++#define DBUS_TYPE_DOUBLE ((int) 'd')
++#define DBUS_TYPE_DOUBLE_AS_STRING "d"
++#define DBUS_TYPE_STRING ((int) 's')
++#define DBUS_TYPE_STRING_AS_STRING "s"
++#define DBUS_TYPE_OBJECT_PATH ((int) 'o')
++#define DBUS_TYPE_OBJECT_PATH_AS_STRING "o"
++#define DBUS_TYPE_SIGNATURE ((int) 'g')
++#define DBUS_TYPE_SIGNATURE_AS_STRING "g"
++#define DBUS_TYPE_UNIX_FD ((int) 'h')
++#define DBUS_TYPE_UNIX_FD_AS_STRING "h"
++#define DBUS_TYPE_ARRAY ((int) 'a')
++#define DBUS_TYPE_ARRAY_AS_STRING "a"
++#define DBUS_TYPE_VARIANT ((int) 'v')
++#define DBUS_TYPE_VARIANT_AS_STRING "v"
++
++#define DBUS_TYPE_STRUCT ((int) 'r')
++#define DBUS_TYPE_STRUCT_AS_STRING "r"
++#define DBUS_TYPE_DICT_ENTRY ((int) 'e')
++#define DBUS_TYPE_DICT_ENTRY_AS_STRING "e"
++
++#define DBUS_STRUCT_BEGIN_CHAR ((int) '(')
++#define DBUS_STRUCT_BEGIN_CHAR_AS_STRING "("
++#define DBUS_STRUCT_END_CHAR ((int) ')')
++#define DBUS_STRUCT_END_CHAR_AS_STRING ")"
++#define DBUS_DICT_ENTRY_BEGIN_CHAR ((int) '{')
++#define DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING "{"
++#define DBUS_DICT_ENTRY_END_CHAR ((int) '}')
++#define DBUS_DICT_ENTRY_END_CHAR_AS_STRING "}"
++
++#define DBUS_MESSAGE_TYPE_INVALID 0
++#define DBUS_MESSAGE_TYPE_METHOD_CALL 1
++#define DBUS_MESSAGE_TYPE_METHOD_RETURN 2
++#define DBUS_MESSAGE_TYPE_ERROR 3
++#define DBUS_MESSAGE_TYPE_SIGNAL 4
++
++#define DBUS_MAXIMUM_NAME_LENGTH 255
++
++#define DBUS_INTROSPECT_1_0_XML_NAMESPACE "http://www.freedesktop.org/standards/dbus"
++#define DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
++#define DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"
++#define DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE "<!DOCTYPE node PUBLIC \"" DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER "\"\n\"" DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER "\">\n"
++
++/* dbus-server.h */
++typedef void (* DBusNewConnectionFunction) (DBusServer *server,
++ DBusConnection *new_connection,
++ void *data);
++
++} // extern "C"
++
++#endif // DBUS_MINIMAL_P_H
++
+diff --git a/src/dbus/qdbus_symbols_p.h b/src/dbus/qdbus_symbols_p.h
+index 71658f84..88c5194 100644
+--- a/src/dbus/qdbus_symbols_p.h
++++ b/src/dbus/qdbus_symbols_p.h
+@@ -47,10 +47,15 @@
+ #define QDBUS_SYMBOLS_P_H
+
+ #include <QtCore/qglobal.h>
+-#include <dbus/dbus.h>
+
+ #ifndef QT_NO_DBUS
+
++#ifdef QT_LINKED_LIBDBUS
++# include <dbus/dbus.h>
++#else
++# include "dbus_minimal_p.h"
++#endif
++
+ QT_BEGIN_NAMESPACE
+
+ #if !defined QT_LINKED_LIBDBUS
+diff --git a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
+index 6372fbb..9722055 100644
+--- a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
++++ b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
+@@ -33,14 +33,16 @@
+ #include <QtCore/QtCore>
+ #include <QtTest/QtTest>
+ #include <QtDBus/QtDBus>
+-#include <QtDBus/private/qdbusutil_p.h>
+-#include <QtDBus/private/qdbusconnection_p.h>
+
+ #include "common.h"
+ #include <limits>
+
+ #include <dbus/dbus.h>
+
++#define QT_LINKED_LIBDBUS
++#include <QtDBus/private/qdbusutil_p.h>
++#include <QtDBus/private/qdbusconnection_p.h>
++
+ static const char serviceName[] = "org.qtproject.autotests.qpong";
+ static const char objectPath[] = "/org/qtproject/qpong";
+ static const char *interfaceName = serviceName;
+--
+2.1.2
+
+
+From 03b5ecce4ab8dc879e27dc8f07d6f3ef846efde0 Mon Sep 17 00:00:00 2001
+From: Eike Ziller <eike.ziller@theqtcompany.com>
+Date: Mon, 1 Dec 2014 09:10:43 +0100
+Subject: [PATCH 24/36] FSEvents file system watcher: Do not watch whole parent
+ hierarchies.
+
+Unfortunately the FSEvents implementation for watching parent
+hierarchies has the major flaw, that watching a path will then
+create watches for the whole parent hierarchy even if that
+hierarchy is already watched. Watching /A/B/C and /A/B/D will
+create two watches each for /A and /A/B. This leads to an explosion
+of open file handles.
+Luckily we do not need to watch the parent hierarchy since this
+is not a supported usecase of QFileSystemWatcher anyhow, so just don't
+do it.
+
+Task-number: QTCREATORBUG-13531
+Change-Id: I9ecb5f08e4be35e4fbd58a7ca3155867fcb1589f
+Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
+
+diff --git a/src/corelib/io/qfilesystemwatcher_fsevents.mm b/src/corelib/io/qfilesystemwatcher_fsevents.mm
+index eebca1c..90ef7a6 100644
+--- a/src/corelib/io/qfilesystemwatcher_fsevents.mm
++++ b/src/corelib/io/qfilesystemwatcher_fsevents.mm
+@@ -518,7 +518,6 @@ bool QFseventsFileSystemWatcherEngine::startStream()
+ NULL
+ };
+ const CFAbsoluteTime latency = .5; // in seconds
+- FSEventStreamCreateFlags flags = kFSEventStreamCreateFlagWatchRoot;
+
+ // Never start with kFSEventStreamEventIdSinceNow, because this will generate an invalid
+ // soft-assert in FSEventStreamFlushSync in CarbonCore when no event occurred.
+@@ -530,7 +529,7 @@ bool QFseventsFileSystemWatcherEngine::startStream()
+ reinterpret_cast<CFArrayRef>(pathsToWatch),
+ lastReceivedEvent,
+ latency,
+- flags);
++ FSEventStreamCreateFlags(0));
+
+ if (!stream) {
+ DEBUG() << "Failed to create stream!";
+--
+2.1.2
+
+
+From 2903db0469487944f035aff1c44e69605d48fa8f Mon Sep 17 00:00:00 2001
+From: Andrew Knight <andrew.knight@theqtcompany.com>
+Date: Mon, 1 Dec 2014 09:57:15 +0200
+Subject: [PATCH 25/36] winrt: Fix Windows Store Certification
+
+WinRT requires that IDXGIDevice3::Trim() is called on application
+suspend in order to pass Store Certification.
+
+Task-number: QTBUG-38481
+Change-Id: Ia3cb5d3f6a2db8f11e4bfa4fd5c7791e18d6c36d
+Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
+
+diff --git a/src/plugins/platforms/winrt/qwinrtscreen.cpp b/src/plugins/platforms/winrt/qwinrtscreen.cpp
+index fadcd01..612a50f 100644
+--- a/src/plugins/platforms/winrt/qwinrtscreen.cpp
++++ b/src/plugins/platforms/winrt/qwinrtscreen.cpp
+@@ -37,6 +37,9 @@
+ #include <EGL/eglext.h>
+ #include <d3d11.h>
+ #include <dxgi1_2.h>
++#ifndef Q_OS_WINPHONE
++#include <dxgi1_3.h>
++#endif
+
+ #include "qwinrtbackingstore.h"
+ #include "qwinrtinputcontext.h"
+@@ -1113,6 +1116,16 @@ HRESULT QWinRTScreen::onActivated(ICoreWindow *, IWindowActivatedEventArgs *args
+
+ HRESULT QWinRTScreen::onSuspended(IInspectable *, ISuspendingEventArgs *)
+ {
++#ifndef Q_OS_WINPHONE
++ Q_D(QWinRTScreen);
++ ComPtr<ID3D11Device> d3dDevice;
++ const EGLBoolean ok = eglQuerySurfacePointerANGLE(d->eglDisplay, EGL_NO_SURFACE, EGL_DEVICE_EXT, (void **)d3dDevice.GetAddressOf());
++ if (ok && d3dDevice) {
++ ComPtr<IDXGIDevice3> dxgiDevice;
++ if (SUCCEEDED(d3dDevice.As(&dxgiDevice)))
++ dxgiDevice->Trim();
++ }
++#endif
+ QWindowSystemInterface::handleApplicationStateChanged(Qt::ApplicationSuspended);
+ QWindowSystemInterface::flushWindowSystemEvents();
+ return S_OK;
+--
+2.1.2
+
+
+From f9f270a6c85fbf42de1e7bf34cc1887e90a0dcf1 Mon Sep 17 00:00:00 2001
+From: Leena Miettinen <riitta-leena.miettinen@digia.com>
+Date: Fri, 28 Nov 2014 12:13:19 +0100
+Subject: [PATCH 26/36] Doc: add navigation info to qmake Manual
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add the navigation.landingpage variable to the
+qdocconf file.
+
+Task-number: QTBUG-42965
+Change-Id: Ia5ee411fc0dbd5cd8c2d238f346b0f1818b54289
+Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
+Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
+
+diff --git a/qmake/doc/qmake.qdocconf b/qmake/doc/qmake.qdocconf
+index bfdf1d1..1a23237 100644
+--- a/qmake/doc/qmake.qdocconf
++++ b/qmake/doc/qmake.qdocconf
+@@ -73,3 +73,5 @@ depends += \
+ qtx11extras \
+ qtxml \
+ qtxmlpatterns
++
++navigation.landingpage = "qmake Manual"
+--
+2.1.2
+
+
+From 2dbcaf5d96ffc2bbd41a6bd6b7d3d36131edb69b Mon Sep 17 00:00:00 2001
+From: Andrew Knight <andrew.knight@digia.com>
+Date: Wed, 26 Nov 2014 11:13:16 +0200
+Subject: [PATCH 27/36] QOpenGLFramebufferObject: pass sized format also with
+ dynamic GL
+
+The GL_RGBA8_OES define is not in scope for dynamic OpenGL builds, so
+pass in GL_RGBA8 instead (it is defined as the same value, 0x8058) when
+in ES mode. The functionality check already ensures the extension is
+available, so the ifdef guards can be removed.
+
+This fixes default multisampled FBO creation under ANGLE when using
+-opengl dynamic.
+
+Task-number: QTBUG-40921
+Change-Id: Iac4b7e230a463c27b61af75c3307421f9deac856
+Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
+
+diff --git a/src/gui/opengl/qopenglframebufferobject.cpp b/src/gui/opengl/qopenglframebufferobject.cpp
+index b185e33..cbc992b 100644
+--- a/src/gui/opengl/qopenglframebufferobject.cpp
++++ b/src/gui/opengl/qopenglframebufferobject.cpp
+@@ -479,11 +479,9 @@ void QOpenGLFramebufferObjectPrivate::init(QOpenGLFramebufferObject *, const QSi
+ GLenum storageFormat = internal_format;
+ // ES requires a sized format. The older desktop extension does not. Correct the format on ES.
+ if (ctx->isOpenGLES() && internal_format == GL_RGBA) {
+-#ifdef GL_RGBA8_OES
+ if (funcs.hasOpenGLExtension(QOpenGLExtensions::Sized8Formats))
+- storageFormat = GL_RGBA8_OES;
++ storageFormat = GL_RGBA8;
+ else
+-#endif
+ storageFormat = GL_RGBA4;
+ }
+
+--
+2.1.2
+
+
+From 1ed09b486eaca10c11aa454d648ad857f819b183 Mon Sep 17 00:00:00 2001
+From: Topi Reinio <topi.reinio@digia.com>
+Date: Wed, 3 Dec 2014 10:12:18 +0100
+Subject: [PATCH 28/36] Doc: Update external links to point to doc.qt.io
+
+Task-number: QTBUG-43062
+Change-Id: Ic630f0c7af20ab5ffa88a71a6ab99d42250cf272
+Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
+
+diff --git a/doc/global/externalsites/qch-urls.qdoc b/doc/global/externalsites/qch-urls.qdoc
+index f8ff8df..53ab940 100644
+--- a/doc/global/externalsites/qch-urls.qdoc
++++ b/doc/global/externalsites/qch-urls.qdoc
+@@ -38,7 +38,7 @@
+ \title external: Publishing Applications to Ovi Store
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator
++ \externalpage http://doc.qt.io/qtcreator
+ \title external: Qt Creator Manual
+ */
+ /*!
+@@ -50,31 +50,31 @@
+ \title external: Qt Mobility QML Plugins
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-managing.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-managing.html
+ \title external: Creating Qt Projects in Creator
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-building-running.html
++ \externalpage http://doc.qt.io/qtcreator/creator-building-running.html
+ \title external: Building and Running Applications in Creator
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-running-targets.html
++ \externalpage http://doc.qt.io/qtcreator/creator-running-targets.html
+ \title external: Set Compiler Targets in Creator
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-build-settings.html
++ \externalpage http://doc.qt.io/qtcreator/creator-build-settings.html
+ \title external: Build Settings in Creator
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-run-settings.html
++ \externalpage http://doc.qt.io/qtcreator/creator-run-settings.html
+ \title external: Run Settings in Creator
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-using-qt-designer.html
++ \externalpage http://doc.qt.io/qtcreator/creator-using-qt-designer.html
+ \title external: Designer in Creator
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-debugging.html
++ \externalpage http://doc.qt.io/qtcreator/creator-debugging.html
+ \title external: Debugging Applications in Creator
+ */
+ /*!
+@@ -90,6 +90,6 @@
+ \title external: Qt Mobility Examples
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-overview.html
++ \externalpage http://doc.qt.io/qtcreator/creator-overview.html
+ \title external: Qt Creator Overview
+ */
+diff --git a/doc/global/externalsites/qtcreator.qdoc b/doc/global/externalsites/qtcreator.qdoc
+index a98fbd0..c2eed07 100644
+--- a/doc/global/externalsites/qtcreator.qdoc
++++ b/doc/global/externalsites/qtcreator.qdoc
+@@ -26,472 +26,472 @@
+ ****************************************************************************/
+
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-deployment-qnx.html
++ \externalpage http://doc.qt.io/qtcreator/creator-deployment-qnx.html
+ \title Qt Creator: Deploying Applications to QNX Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-developing-baremetal.html
++ \externalpage http://doc.qt.io/qtcreator/creator-developing-baremetal.html
+ \title Qt Creator: Connecting Bare Metal Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-developing-bb10.html
++ \externalpage http://doc.qt.io/qtcreator/creator-developing-bb10.html
+ \title Qt Creator: Connecting BlackBerry 10 Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-developing-qnx.html
++ \externalpage http://doc.qt.io/qtcreator/creator-developing-qnx.html
+ \title Qt Creator: Connecting QNX Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-deployment-bb10.html
++ \externalpage http://doc.qt.io/qtcreator/creator-deployment-bb10.html
+ \title Qt Creator: Deploying Applications to BlackBerry 10 Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-developing-generic-linux.html
++ \externalpage http://doc.qt.io/qtcreator/creator-developing-generic-linux.html
+ \title Qt Creator: Connecting Embedded Linux Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-deployment-embedded-linux.html
++ \externalpage http://doc.qt.io/qtcreator/creator-deployment-embedded-linux.html
+ \title Qt Creator: Deploying Applications to Embedded Linux Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-faq.html
++ \externalpage http://doc.qt.io/qtcreator/creator-faq.html
+ \title Qt Creator: FAQ
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-tips.html
++ \externalpage http://doc.qt.io/qtcreator/creator-tips.html
+ \title Qt Creator: Tips and Tricks
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-help.html
++ \externalpage http://doc.qt.io/qtcreator/creator-help.html
+ \title Qt Creator: Using the Help Mode
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-quick-tour.html
++ \externalpage http://doc.qt.io/qtcreator/creator-quick-tour.html
+ \title Qt Creator: User Interface
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-cli.html
++ \externalpage http://doc.qt.io/qtcreator/creator-cli.html
+ \title Qt Creator: Using Command Line Options
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-task-lists.html
++ \externalpage http://doc.qt.io/qtcreator/creator-task-lists.html
+ \title Qt Creator: Showing Task List Files in Issues Pane
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-managing-sessions.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-managing-sessions.html
+ \title Qt Creator: Managing Sessions
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-editor-external.html
++ \externalpage http://doc.qt.io/qtcreator/creator-editor-external.html
+ \title Qt Creator: Using External Tools
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-version-control.html
++ \externalpage http://doc.qt.io/qtcreator/creator-version-control.html
+ \title Qt Creator: Using Version Control Systems
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-keyboard-shortcuts.html
++ \externalpage http://doc.qt.io/qtcreator/creator-keyboard-shortcuts.html
+ \title Qt Creator: Keyboard Shortcuts
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/quick-screens.html
++ \externalpage http://doc.qt.io/qtcreator/quick-screens.html
+ \title Qt Creator: Creating Screens
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-qml-application.html
++ \externalpage http://doc.qt.io/qtcreator/creator-qml-application.html
+ \title Qt Creator: Creating a Qt Quick Application
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/quick-export-to-qml.html
++ \externalpage http://doc.qt.io/qtcreator/quick-export-to-qml.html
+ \title Qt Creator: Exporting Designs from Graphics Software
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-qml-modules-with-plugins.html
++ \externalpage http://doc.qt.io/qtcreator/creator-qml-modules-with-plugins.html
+ \title Qt Creator: Using QML Modules with Plugins
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-visual-editor.html
++ \externalpage http://doc.qt.io/qtcreator/creator-visual-editor.html
+ \title Qt Creator: Developing Qt Quick Applications
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-using-qt-quick-designer.html
++ \externalpage http://doc.qt.io/qtcreator/creator-using-qt-quick-designer.html
+ \title Qt Creator: Using Qt Quick Designer
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/quick-projects.html
++ \externalpage http://doc.qt.io/qtcreator/quick-projects.html
+ \title Qt Creator: Creating Qt Quick Projects
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/quick-components.html
++ \externalpage http://doc.qt.io/qtcreator/quick-components.html
+ \title Qt Creator: Creating Components
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/qt-quick-toolbars.html
++ \externalpage http://doc.qt.io/qtcreator/qt-quick-toolbars.html
+ \title Qt Creator: Using Qt Quick Toolbars
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/quick-buttons.html
++ \externalpage http://doc.qt.io/qtcreator/quick-buttons.html
+ \title Qt Creator: Creating Buttons
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/quick-scalable-image.html
++ \externalpage http://doc.qt.io/qtcreator/quick-scalable-image.html
+ \title Qt Creator: Creating Scalable Buttons and Borders
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-editor-options.html
++ \externalpage http://doc.qt.io/qtcreator/creator-editor-options.html
+ \title Qt Creator: Configuring the Editor
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-editor-functions.html
++ \externalpage http://doc.qt.io/qtcreator/creator-editor-functions.html
+ \title Qt Creator: Writing Code
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-coding-navigating.html
++ \externalpage http://doc.qt.io/qtcreator/creator-coding-navigating.html
+ \title Qt Creator: Working in Edit Mode
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-highlighting.html
++ \externalpage http://doc.qt.io/qtcreator/creator-highlighting.html
+ \title Qt Creator: Semantic Highlighting
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-checking-code-syntax.html
++ \externalpage http://doc.qt.io/qtcreator/creator-checking-code-syntax.html
+ \title Qt Creator: Checking Code Syntax
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-completing-code.html
++ \externalpage http://doc.qt.io/qtcreator/creator-completing-code.html
+ \title Qt Creator: Completing Code
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-editor-codepasting.html
++ \externalpage http://doc.qt.io/qtcreator/creator-editor-codepasting.html
+ \title Qt Creator: Pasting and Fetching Code Snippets
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-macros.html
++ \externalpage http://doc.qt.io/qtcreator/creator-macros.html
+ \title Qt Creator: Using Text Editing Macros
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-editor-fakevim.html
++ \externalpage http://doc.qt.io/qtcreator/creator-editor-fakevim.html
+ \title Qt Creator: Using FakeVim Mode
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-indenting-code.html
++ \externalpage http://doc.qt.io/qtcreator/creator-indenting-code.html
+ \title Qt Creator: Indenting Text or Code
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-editor-finding.html
++ \externalpage http://doc.qt.io/qtcreator/creator-editor-finding.html
+ \title Qt Creator: Finding and Replacing
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-editor-refactoring.html
++ \externalpage http://doc.qt.io/qtcreator/creator-editor-refactoring.html
+ \title Qt Creator: Refactoring
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-editor-locator.html
++ \externalpage http://doc.qt.io/qtcreator/creator-editor-locator.html
+ \title Qt Creator: Searching with the Locator
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-coding.html
++ \externalpage http://doc.qt.io/qtcreator/creator-coding.html
+ \title Qt Creator: Coding
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-editor-options-text.html
++ \externalpage http://doc.qt.io/qtcreator/creator-editor-options-text.html
+ \title Qt Creator: Specifying Text Editor Settings
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-finding-overview.html
++ \externalpage http://doc.qt.io/qtcreator/creator-finding-overview.html
+ \title Qt Creator: Finding
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-mime-types.html
++ \externalpage http://doc.qt.io/qtcreator/creator-mime-types.html
+ \title Qt Creator: Editing MIME Types
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-qml-debugging-example.html
++ \externalpage http://doc.qt.io/qtcreator/creator-qml-debugging-example.html
+ \title Qt Creator: Debugging a Qt Quick Example Application
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-debugging-example.html
++ \externalpage http://doc.qt.io/qtcreator/creator-debugging-example.html
+ \title Qt Creator: Debugging a C++ Example Application
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-debugger-engines.html
++ \externalpage http://doc.qt.io/qtcreator/creator-debugger-engines.html
+ \title Qt Creator: Setting Up Debugger
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-debugging-qml.html
++ \externalpage http://doc.qt.io/qtcreator/creator-debugging-qml.html
+ \title Qt Creator: Debugging Qt Quick Projects
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-debugging.html
++ \externalpage http://doc.qt.io/qtcreator/creator-debugging.html
+ \title Qt Creator: Debugging
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-debugger-operating-modes.html
++ \externalpage http://doc.qt.io/qtcreator/creator-debugger-operating-modes.html
+ \title Qt Creator: Launching the Debugger
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-debug-mode.html
++ \externalpage http://doc.qt.io/qtcreator/creator-debug-mode.html
+ \title Qt Creator: Interacting with the Debugger
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-debugging-helpers.html
++ \externalpage http://doc.qt.io/qtcreator/creator-debugging-helpers.html
+ \title Qt Creator: Using Debugging Helpers
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-troubleshooting-debugging.html
++ \externalpage http://doc.qt.io/qtcreator/creator-troubleshooting-debugging.html
+ \title Qt Creator: Troubleshooting Debugger
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/index.html
++ \externalpage http://doc.qt.io/qtcreator/index.html
+ \title Qt Creator Manual
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-advanced.html
++ \externalpage http://doc.qt.io/qtcreator/creator-advanced.html
+ \title Qt Creator: Advanced Use
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-os-supported-platforms.html
++ \externalpage http://doc.qt.io/qtcreator/creator-os-supported-platforms.html
+ \title Qt Creator: Supported Platforms
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-connecting-mobile.html
++ \externalpage http://doc.qt.io/qtcreator/creator-connecting-mobile.html
+ \title Qt Creator: Connecting Mobile Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-usability.html
++ \externalpage http://doc.qt.io/qtcreator/creator-usability.html
+ \title Qt Creator: Optimizing Applications for Mobile Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-acknowledgements.html
++ \externalpage http://doc.qt.io/qtcreator/creator-acknowledgements.html
+ \title Qt Creator: Acknowledgements
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-help-overview.html
++ \externalpage http://doc.qt.io/qtcreator/creator-help-overview.html
+ \title Qt Creator: Getting Help
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/technical-support.html
++ \externalpage http://doc.qt.io/qtcreator/technical-support.html
+ \title Qt Creator: Technical Support
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-overview.html
++ \externalpage http://doc.qt.io/qtcreator/creator-overview.html
+ \title Qt Creator: IDE Overview
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-testing.html
++ \externalpage http://doc.qt.io/qtcreator/creator-testing.html
+ \title Qt Creator: Debugging and Analyzing
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-deployment.html
++ \externalpage http://doc.qt.io/qtcreator/creator-deployment.html
+ \title Qt Creator: Deploying to Mobile Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-tutorials.html
++ \externalpage http://doc.qt.io/qtcreator/creator-tutorials.html
+ \title Qt Creator: Tutorials
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-known-issues.html
++ \externalpage http://doc.qt.io/qtcreator/creator-known-issues.html
+ \title Qt Creator: Known Issues
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-design-mode.html
++ \externalpage http://doc.qt.io/qtcreator/creator-design-mode.html
+ \title Qt Creator: Designing User Interfaces
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-publish-ovi.html
++ \externalpage http://doc.qt.io/qtcreator/creator-publish-ovi.html
+ \title Qt Creator: Publishing
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-glossary.html
++ \externalpage http://doc.qt.io/qtcreator/creator-glossary.html
+ \title Qt Creator: Glossary
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-getting-started.html
++ \externalpage http://doc.qt.io/qtcreator/creator-getting-started.html
+ \title Qt Creator: Getting Started
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-analyzer.html
++ \externalpage http://doc.qt.io/qtcreator/creator-analyzer.html
+ \title Qt Creator: Detecting Memory Leaks
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-cache-profiler.html
++ \externalpage http://doc.qt.io/qtcreator/creator-cache-profiler.html
+ \title Qt Creator: Profiling Function Execution
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-running-valgrind-remotely.html
++ \externalpage http://doc.qt.io/qtcreator/creator-running-valgrind-remotely.html
+ \title Qt Creator: Running Valgrind Tools Remotely
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-valgrind-overview.html
++ \externalpage http://doc.qt.io/qtcreator/creator-valgrind-overview.html
+ \title Qt Creator: Using Valgrind Code Analysis Tools
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-analyze-mode.html
++ \externalpage http://doc.qt.io/qtcreator/creator-analyze-mode.html
+ \title Qt Creator: Analyzing Code
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-qml-performance-monitor.html
++ \externalpage http://doc.qt.io/qtcreator/creator-qml-performance-monitor.html
+ \title Qt Creator: Profiling QML Applications
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-deploying-android.html
++ \externalpage http://doc.qt.io/qtcreator/creator-deploying-android.html
+ \title Qt Creator: Deploying Applications to Android Devices
+ */
+
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-developing-ios.html
++ \externalpage http://doc.qt.io/qtcreator/creator-developing-ios.html
+ \title Qt Creator: Connecting iOS devices
+ */
+
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-developing-android.html
++ \externalpage http://doc.qt.io/qtcreator/creator-developing-android.html
+ \title Qt Creator: Connecting Android Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-build-example-application.html
++ \externalpage http://doc.qt.io/qtcreator/creator-build-example-application.html
+ \title Qt Creator: Building and Running an Example
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-generic.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-generic.html
+ \title Qt Creator: Setting Up a Generic Project
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-sharing-project-settings.html
++ \externalpage http://doc.qt.io/qtcreator/creator-sharing-project-settings.html
+ \title Qt Creator: Sharing Project Settings
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-opening.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-opening.html
+ \title Qt Creator: Opening Projects
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-managing.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-managing.html
+ \title Qt Creator: Managing Projects
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-cmake.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-cmake.html
+ \title Qt Creator: Setting Up a CMake Project
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-targets.html
++ \externalpage http://doc.qt.io/qtcreator/creator-targets.html
+ \title Qt Creator: Adding Kits
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-tool-chains.html
++ \externalpage http://doc.qt.io/qtcreator/creator-tool-chains.html
+ \title Qt Creator: Adding Compilers
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-qbs.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-qbs.html
+ \title Qt Creator: Setting Up a Qbs Project
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-creating.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-creating.html
+ \title Qt Creator: Creating Projects
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-wizards.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-wizards.html
+ \title Qt Creator: Adding New Custom Wizards
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-projects-autotools.html
++ \externalpage http://doc.qt.io/qtcreator/creator-projects-autotools.html
+ \title Qt Creator: Setting Up an Autotools Project
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-configuring-projects.html
++ \externalpage http://doc.qt.io/qtcreator/creator-configuring-projects.html
+ \title Qt Creator: Configuring Projects
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-build-process-customizing.html
++ \externalpage http://doc.qt.io/qtcreator/creator-build-process-customizing.html
+ \title Qt Creator: Customizing the Build Process
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-build-settings.html
++ \externalpage http://doc.qt.io/qtcreator/creator-build-settings.html
+ \title Qt Creator: Specifying Build Settings
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-code-style-settings.html
++ \externalpage http://doc.qt.io/qtcreator/creator-code-style-settings.html
+ \title Qt Creator: Specifying Code Style Settings
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-run-settings.html
++ \externalpage http://doc.qt.io/qtcreator/creator-run-settings.html
+ \title Qt Creator: Specifying Run Settings
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-qmake-libraries.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html
+ \title Qt Creator: Adding Libraries to Projects
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-other.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-other.html
+ \title Qt Creator: Using Other Build Systems
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-running-targets.html
++ \externalpage http://doc.qt.io/qtcreator/creator-running-targets.html
+ \title Qt Creator: Running on Multiple Platforms
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-build-dependencies.html
++ \externalpage http://doc.qt.io/qtcreator/creator-build-dependencies.html
+ \title Qt Creator: Specifying Dependencies
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-building-running.html
++ \externalpage http://doc.qt.io/qtcreator/creator-building-running.html
+ \title Qt Creator: Building and Running
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-editor-settings.html
++ \externalpage http://doc.qt.io/qtcreator/creator-editor-settings.html
+ \title Qt Creator: Specifying Editor Settings
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-project-qmake.html
++ \externalpage http://doc.qt.io/qtcreator/creator-project-qmake.html
+ \title Qt Creator: Adding Qt Versions
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-building-targets.html
++ \externalpage http://doc.qt.io/qtcreator/creator-building-targets.html
+ \title Qt Creator: Building for Multiple Platforms
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-using-qt-designer.html
++ \externalpage http://doc.qt.io/qtcreator/creator-using-qt-designer.html
+ \title Qt Creator: Developing Widget Based Applications
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-writing-program.html
++ \externalpage http://doc.qt.io/qtcreator/creator-writing-program.html
+ \title Qt Creator: Creating a Qt Widget Based Application
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/adding-plugins.html
++ \externalpage http://doc.qt.io/qtcreator/adding-plugins.html
+ \title Qt Creator: Adding Qt Designer Plugins
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-configuring.html
++ \externalpage http://doc.qt.io/qtcreator/creator-configuring.html
+ \title Qt Creator: Configuring Qt Creator
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-debuggers.html
++ \externalpage http://doc.qt.io/qtcreator/creator-debuggers.html
+ \title Qt Creator: Adding Debuggers
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-mobile-app-tutorial.html
++ \externalpage http://doc.qt.io/qtcreator/creator-mobile-app-tutorial.html
+ \title Qt Creator: Creating a Mobile Application
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-diff-editor.html
++ \externalpage http://doc.qt.io/qtcreator/creator-diff-editor.html
+ \title Qt Creator: Comparing Files
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-beautifier.html
++ \externalpage http://doc.qt.io/qtcreator/creator-beautifier.html
+ \title Qt Creator: Beautifying Source Code
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-developing-winrt.html
++ \externalpage http://doc.qt.io/qtcreator/creator-developing-winrt.html
+ \title Qt Creator: Connecting Windows Runtime Devices
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-clang-codemodel.html
++ \externalpage http://doc.qt.io/qtcreator/creator-clang-codemodel.html
+ \title Qt Creator: Parsing C++ Files
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-quick-ui-forms.html
++ \externalpage http://doc.qt.io/qtcreator/creator-quick-ui-forms.html
+ \title Qt Creator: Qt Quick UI Forms
+ */
+ /*!
+- \externalpage http://qt-project.org/doc/qtcreator/creator-clang-static-analyzer.html
++ \externalpage http://doc.qt.io/qtcreator/creator-clang-static-analyzer.html
+ \title Qt Creator: Using Clang Static Analyzer
+ */
+--
+2.1.2
+
+
+From 457496b83090006b232c56c04042bf6c9b8b2c31 Mon Sep 17 00:00:00 2001
+From: Topi Reinio <topi.reinio@digia.com>
+Date: Tue, 21 Oct 2014 14:57:50 +0200
+Subject: [PATCH 29/36] Doc: new template for qt.io online style
+
+An online documentation template that follows the
+style of qt.io site.
+
+Update the url variable for Qt modules to point
+to doc.qt.io/qt-5/.
+
+Task-number: QTBUG-42086
+Change-Id: I5428a02cd503aef2217efd7361f4c8b7b5895a52
+Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
+
+diff --git a/doc/global/config.qdocconf b/doc/global/config.qdocconf
+index 295a5ed..a6ab546 100644
+--- a/doc/global/config.qdocconf
++++ b/doc/global/config.qdocconf
+@@ -9,8 +9,7 @@ dita.metadata.default.audience = programmer
+
+ #Set the main Qt index.html
+ navigation.homepage = "Qt $QT_VER"
+-buildversion = "Qt $QT_VERSION Reference Documentation"
+
+ sourcedirs += includes
+
+-url = http://qt-project.org/doc/qt-5
++url = http://doc.qt.io/qt-5
+diff --git a/doc/global/fileextensions.qdocconf b/doc/global/fileextensions.qdocconf
+index 0a106d5..88e5159 100644
+--- a/doc/global/fileextensions.qdocconf
++++ b/doc/global/fileextensions.qdocconf
+@@ -1,4 +1,4 @@
+-naturallanguage = en_US
++naturallanguage = en
+ outputencoding = UTF-8
+ sourceencoding = UTF-8
+
+diff --git a/doc/global/html-footer-online.qdocconf b/doc/global/html-footer-online.qdocconf
+new file mode 100644
+index 0000000..3269001
+--- /dev/null
++++ b/doc/global/html-footer-online.qdocconf
+@@ -0,0 +1,84 @@
++# HTML footer for qt.io
++
++HTML.footer += \
++ "</div>\n" \
++ "</div>\n" \
++ "</div>\n" \
++ "</div>\n" \
++ "</div>\n" \
++ "<div id=\"footer\">\n" \
++ "<footer id=\"footerbar\">\n" \
++ " <div class=\"footer-main\">\n" \
++ " <div class=\"container clearfix\">\n" \
++ " <nav class=\"footer-nav clearfix\">\n" \
++ " <div class=\"menu-footer-menu-container\"><ul id=\"menu-footer-menu\" class=\"menu\"><li id=\"menu-item-1350\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-1350\"><a href=\"http://qt.io/about-us/\">About us</a>\n" \
++ "<ul class=\"sub-menu\">\n" \
++ " <li id=\"menu-item-1353\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1353\"><a href=\"http://qt.io/events/\">Events</a></li>\n" \
++ " <li id=\"menu-item-1596\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1596\"><a href=\"http://qt.io/news/\">News</a></li>\n" \
++ " <li id=\"menu-item-1354\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1354\"><a href=\"http://qt.io/resource-center/\">Resource Center</a></li>\n" \
++ " <li id=\"menu-item-1352\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1352\"><a href=\"http://qt.io/partners/\">Partners</a></li>\n" \
++ " <li id=\"menu-item-1349\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1349\"><a href=\"http://qt.io/careers/\">Careers</a></li>\n" \
++ " <li id=\"menu-item-1415\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1415\"><a href=\"http://qt.io/terms-conditions/\">Terms &amp; Conditions</a></li>\n" \
++ "</ul>\n" \
++ "</li>\n" \
++ "<li id=\"menu-item-1355\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-1355\"><a href=\"http://qt.io/product/\">Product</a>\n" \
++ "<ul class=\"sub-menu\">\n" \
++ " <li id=\"menu-item-1358\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1358\"><a href=\"http://qt.io/qt-framework/\">Qt Framework</a></li>\n" \
++ " <li id=\"menu-item-1356\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1356\"><a href=\"http://qt.io/qt-features/\">Qt Features</a></li>\n" \
++ " <li id=\"menu-item-1359\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1359\"><a href=\"http://qt.io/qt-quick/\">Qt Quick</a></li>\n" \
++ " <li id=\"menu-item-1357\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1357\"><a href=\"http://qt.io/qt-for-device-creation/\">Qt for Device Creation</a></li>\n" \
++ " <li id=\"menu-item-34\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-34\"><a href=\"http://qt.io/qt-in-use/\">Qt in Use</a></li>\n" \
++ " <li id=\"menu-item-1366\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-1366\"><a href=\"http://showroom.qt-project.org/\">Showroom</a></li>\n" \
++ "</ul>\n" \
++ "</li>\n" \
++ "<li id=\"menu-item-33\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-33\"><a href=\"http://qt.io/developers/\">Developers</a>\n" \
++ "<ul class=\"sub-menu\">\n" \
++ " <li id=\"menu-item-1365\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-1365\"><a href=\"http://qt-project.org/doc/\">Documentation</a></li>\n" \
++ " <li id=\"menu-item-1364\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-1364\"><a href=\"http://qt-project.org/doc/qt-5/qtexamplesandtutorials.html\">Examples &amp; Tutorials</a></li>\n" \
++ " <li id=\"menu-item-1363\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-1363\"><a href=\"http://qt-project.org/doc/qt-5/topics-app-development.html\">Tools</a></li>\n" \
++ " <li id=\"menu-item-1361\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-1361\"><a href=\"http://qt-project.org/wiki\">Wiki</a></li>\n" \
++ " <li id=\"menu-item-1360\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-1360\"><a href=\"http://qt-project.org/forums\">Forums</a></li>\n" \
++ " <li id=\"menu-item-1362\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-1362\"><a href=\"http://qt-project.org/wiki/Qt-Contribution-Guidelines\">Contribute to Qt</a></li>\n" \
++ "</ul>\n" \
++ "</li>\n" \
++ "<li id=\"menu-item-1347\" class=\"menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children menu-item-1347\"><a href=\"http://qt.io/services/\">Services</a>\n" \
++ "<ul class=\"sub-menu\">\n" \
++ " <li id=\"menu-item-32\" class=\"menu-item menu-item-type-post_type menu-item-object-page page_item page-item-14 menu-item-32\"><a href=\"http://qt.io/support/\">Support</a></li>\n" \
++ " <li id=\"menu-item-4028\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-4028\"><a href=\"http://qt.io/services-technology-evaluation/\">Technology Evaluation</a></li>\n" \
++ " <li id=\"menu-item-4027\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-4027\"><a href=\"http://qt.io/services-proof-of-concept/\">Proof of Concept</a></li>\n" \
++ " <li id=\"menu-item-4026\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-4026\"><a href=\"http://qt.io/services-design-implementation/\">Design &amp; Implementation</a></li>\n" \
++ " <li id=\"menu-item-4025\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-4025\"><a href=\"http://qt.io/services-productization/\">Productization</a></li>\n" \
++ "</ul>\n" \
++ "</li>\n" \
++ "<li id=\"menu-item-1403\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-1403\"><a href=\"http://qt.io/download/\">Download</a>\n" \
++ "<ul class=\"sub-menu\">\n" \
++ " <li id=\"menu-item-1985\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1985\"><a title=\"Professional\" href=\"http://qt.io/buy/\">Professional</a></li>\n" \
++ " <li id=\"menu-item-3346\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-3346\"><a title=\"Indie Mobile\" href=\"http://qt.io/download-mobile/\">Indie Mobile</a></li>\n" \
++ " <li id=\"menu-item-1982\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1982\"><a title=\"Enterprise\" href=\"http://qt.io/download-enterprise-step-2/\">Enterprise</a></li>\n" \
++ " <li id=\"menu-item-3013\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-3013\"><a title=\"Evaluation\" href=\"http://qt.io/download-eval-step-2/\">Evaluation</a></li>\n" \
++ " <li id=\"menu-item-3343\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-3343\"><a href=\"http://qt.io/download-open-source/\">Community</a></li>\n" \
++ "</ul>\n" \
++ "</li>\n" \
++ "</ul></div></nav>\n" \
++ "<a href=\"http://digia.com\" target=\"_blank\" class=\"footer-logo retina\" data-icon=\"\">\n" \
++ " </a>\n" \
++ " <div class=\"footer-social clearfix\">\n" \
++ " <div class=\"facebook\">\n" \
++ " <div class=\"fb-like fb_iframe_widget\" data-href=\"https://www.facebook.com/qtbydigia\" data-layout=\"button_count\" data-action=\"like\" data-show-faces=\"true\" data-share=\"false\" fb-xfbml-state=\"parsed\" fb-iframe-plugin-query=\"action=like&amp;app_id=207346529386114&amp;href=https%3A%2F%2Fwww.facebook.com%2Fqtbydigia&amp;layout=button_count&amp;locale=en_US&amp;sdk=joey&amp;share=false&amp;show_faces=true\" style=\"display: block;\"><iframe style=\"width: 30px; height: 19px; border: 0px;\"></iframe></div>\n" \
++ " </div>\n" \
++ " <div class=\"twitter\">\n" \
++ " <iframe id=\"twitter-widget-0\" scrolling=\"no\" frameborder=\"0\" allowtransparency=\"true\" src=\"http://platform.twitter.com/widgets/follow_button.33b190ea0cba008796487b65df7f6d8e.en.html#_=1414403615717&amp;id=twitter-widget-0&amp;lang=en&amp;screen_name=qtproject&amp;show_count=true&amp;show_screen_name=false&amp;size=m\" class=\"twitter-follow-button twitter-follow-button\" title=\"Twitter Follow Button\" data-twttr-rendered=\"true\" style=\"width: 160px; height: 20px;\"></iframe>\n" \
++ " </div>\n" \
++ " </div>\n" \
++ "</div>\n" \
++ "</div>\n" \
++ "<div class=\"disclaimer\">\n" \
++ "<div class=\"container clearfix no_discs\">\n" \
++ " <ul id=\"menu-footer-submenu\" class=\"right clearfix\"><li id=\"menu-item-1795\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-1795\"><a title=\"Sign into your account.\" href=\"https://account.qt.io/login\">Sign In</a></li>\n" \
++ " <li id=\"menu-item-1494\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1494\"><a href=\"http://qt.io/contact-us/\">Contact us</a></li>\n" \
++ " <li id=\"menu-item-4472\" class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-4472\"><a href=\"http://www.digia.com\">© 2014 Digia Oyj</a></li>\n" \
++ " </ul>\n" \
++ "</div>\n" \
++ "</div>\n" \
++ "</footer>\n" \
++ "</div>\n"
+diff --git a/doc/global/html-header-online.qdocconf b/doc/global/html-header-online.qdocconf
+index 5c21644..7e9aae6 100644
+--- a/doc/global/html-header-online.qdocconf
++++ b/doc/global/html-header-online.qdocconf
+@@ -1,64 +1,149 @@
+-#HTML Header with Qt Project branding and online links
++# HTML Header with qt.io branding and online links
+
+-HTML.stylesheets = template/style/online.css
++HTML.stylesheets = template/style/online.css \
++ template/style/gsc.css \
++ template/style/list_arrow.png \
++ template/style/icomoon.eot \
++ template/style/icomoon.svg \
++ template/style/icomoon.ttf \
++ template/style/icomoon.woff \
++ template/style/doc_search.png
+
+ #for including files into the qch file. Relative to the outputdir of a QDoc build.
+-# $QT_INSTALL_DOCS/qtquick/style/online.css for example
+-qhp.extraFiles += style/online.css
++qhp.extraFiles += style/online.css \
++ style/gsc.css \
++ style/list_arrow.png \
++ style/icomoon.eot \
++ style/icomoon.svg \
++ style/icomoon.ttf \
++ style/icomoon.woff
+
+ HTML.headerstyles = \
+- " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/online.css\" />\n"
++ " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/online.css\" />\n" \
++ " <link rel=\"shortcut icon\" href=\"//d3hp9ud7yvwzy0.cloudfront.net/wp-content/themes/oneqt/images/favicon.ico.gzip\" />\n"
++
++HTML.headerscripts = \
++ " <script type=\"text/javascript\"> wpThemeFolder = \'http://qt.io/wp-content/themes/oneqt\'; </script>\n" \
++ " <script type=\"text/javascript\" src=\"http://d3hp9ud7yvwzy0.cloudfront.net/wp-content/themes/oneqt/js/combo.js.gzip\"></script>\n" \
++ " <script type=\"text/javascript\" src=\"scripts/main.js\"></script>\n" \
++ " <script type=\"text/javascript\" src=\"scripts/extras.js\"></script>\n" \
++ " <script type=\"text/javascript\">\n" \
++ " \$(function(){\n" \
++ " \$(\"#sidebar-content\").load(\"style/qt5-sidebar.html\");\n" \
++ " });\n" \
++ " </script>\n" \
++ " <script type=\"text/javascript\">\n" \
++ " (function (i, s, o, g, r, a, m) {\n" \
++ " i[\'GoogleAnalyticsObject\'] = r; i[r] = i[r] || function () {\n" \
++ " (i[r].q = i[r].q || []).push(arguments)\n" \
++ " }, i[r].l = 1 * new Date(); a = s.createElement(o),\n" \
++ " m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)\n" \
++ " })(window, document, \'script\', \'//www.google-analytics.com/analytics.js\', \'ga\');\n\n" \
++ " ga(\'create\', \'UA-54043535-2\', \'qt.io\');\n" \
++ " ga(\'set\', \'forceSSL\', true);\n" \
++ " ga(\'send\', \'pageview\');\n" \
++ " </script>\n"
++
++HTML.scripts = template/scripts/extras.js \
++ template/scripts/main.js
+
+ HTML.endheader = \
+ "</head>\n"
+
++# minimal header
+ HTML.postheader = \
+ "<body>\n" \
+- "<div class=\"header\" id=\"qtdocheader\"></div>\n" \
+- " <div class=\"nav\" id=\"qt13a-header\">\n" \
+- " <div class=\"qt13a-gradient\">\n" \
+- " <div class=\"qt13a-container qt13a-dynamicREMOVE\" >\n" \
+- " <div id=\"qt13a-register\">\n" \
+- " <a href=\"http://qt-project.org/\">Qt Home</a>\n" \
+- " <a href=\"https://bugreports.qt-project.org/\">Bug Tracker</a>\n" \
+- " <a href=\"https://codereview.qt-project.org/\">Code Review</a>\n" \
+- " </div>\n" \
+- " <div class=\"qt13a-sixCol\">\n" \
+- " <div id=\"qt13a-logo\">\n" \
+- " <a href=\"http://qt-project.org/\" class=\"qt13a-site-logo\">\n" \
+- " <img src=\"images/Qt-logo.png\" alt=\"Qt\"></img>\n" \
+- " </a>\n" \
+- " </div>\n" \
+- " <div id=\"qt13a-title_nav\">\n" \
+- " <div id=\"qt13a-title\">\n" \
+- " <p class=\"qt13a-title\">Qt Documentation Snapshots</p>\n" \
+- " </div>\n" \
+- " <div class=\"qt13a-nav\">\n" \
+- " <ul>\n" \
+- " <li>\n" \
+- " <a href=\"http://doc-snapshot.qt-project.org\">Snapshots</a>\n" \
+- " </li>\n" \
+- " <li>\n" \
+- " <a href=\"http://qt-project.org/doc\">Released</a>\n" \
+- " </li>\n" \
+- " <li>\n" \
+- " <a href=\"http://doc.qt.digia.com\">Archives</a>\n" \
+- " </li>\n" \
+- " </ul>\n" \
+- " </div>\n" \
+- " </div>\n" \
+- " </div>\n" \
+- " </div>\n" \
++ "<div class=\"header\" id=\"header\">\n" \
++ "<header id=\"navbar\" class=\"\">\n" \
++ " <div class=\"cookies_yum\">\n" \
++ " <div>\n" \
++ " <img src=\"http://qt.io/wp-content/themes/oneqt/assets/images/cookie_small.png\" align=\"left\">\n" \
++ " <p class=\"close_button\">\n" \
++ " We bake cookies in your browser for a better experience. Using this site means that you consent. <a href=\"//qt.io/terms-conditions/\">Read More</a>\n" \
++ " </p>\n" \
++ " <a class=\"close\"></a>\n" \
++ " </div>\n" \
+ " </div>\n" \
++ " <div class=\"container\">\n" \
++ " <div class=\"navbar-header clearfix\">\n" \
++ " <a href=\"#\" class=\"navbar-toggle\">\n" \
++ " <figure>\n" \
++ " <span class=\"line\"></span>\n" \
++ " </figure>\n" \
++ " <span>Menu</span>\n" \
++ " </a>\n" \
++ " <ul id=\"menuextras\">\n" \
++ " <li>\n" \
++ " <a href=\"//qt.io/partners/\" data-icon=\"\">\n" \
++ " <span>Partners</span>\n" \
++ " </a>\n" \
++ " </li>\n" \
++ " <li>\n" \
++ " <a target=\"_blank\" href=\"http://blog.qt.digia.com/\" data-icon=\"\">\n" \
++ " <span>Blog</span>\n" \
++ " </a>\n" \
++ " </li>\n" \
++ " <li class=\"sign-in\">\n" \
++ " <a data-icon=\"\" class=\"signin\" href=\"https://account.qt.io/login\"><span>Sign in</span></a>\n" \
++ " </li>\n" \
++ " </ul>\n" \
++ " <a href=\"http://qt.io/\" class=\"navbar-oneQt retina\" data-icon=\"\">\n" \
++ " </a>\n" \
++ " <nav class=\"navbar-menu clearfix\" role=\"navigation\">\n" \
++ " <ul id=\"mainmenu\" class=\"menu\"><li id=\"menu-item-21\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-21\"><a href=\"http://qt.io/product/\">Product</a></li>\n" \
++ "<li id=\"menu-item-1381\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1381\"><a href=\"http://qt.io/services/\">Services</a></li>\n" \
++ "<li id=\"menu-item-22\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-22\"><a href=\"http://qt.io/qt-in-use/\">Qt in Use</a></li>\n" \
++ "<li id=\"menu-item-20\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-20\"><a href=\"http://qt.io/developers/\">Developers</a></li>\n" \
++ "<li id=\"menu-item-4466\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-4466\"><a href=\"http://qt.io/licensing/\">Licensing</a></li>\n" \
++ "<li id=\"menu-item-18\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-18\"><a href=\"http://qt.io/download/\">Download</a></li>\n" \
++ "</ul> <ul class=\"menuextraslanguages\">\n" \
++ " <li class=\"active dark\"><a class=\"dark\" href=\"http://qt.io/support/\">EN</a></li><li class=\"dark\"><a class=\"dark\" href=\"http://qt.io/ru/\">RU</a></li><li class=\"dark\"><a class=\"dark\" href=\"http://qt.io/zh-hans/\">ZH</a></li></ul>\n" \
++ " </nav>\n" \
++ " </div>\n" \
++ " </div>\n" \
++ "<div class=\"big_bar account\" style=\"\">\n" \
++ " <div class=\"container\">\n" \
++ " <h1><!-- mclude oneqt_no_cache_bMrsJxAh /wp-content/themes/oneqt/php_login_info_bottom_header.php --><!-- /mclude oneqt_no_cache_bMrsJxAh -->\n" \
++ " <div class=\"col-1 right big_bar_button account\" style=\"margin-top:5px !important;\"></div>\n" \
++ " </h1>\n" \
+ " </div>\n" \
+- " <div class=\"main\">\n" \
+- " <div class=\"main-rounded\">\n" \
+- " <div class=\"navigationbar\">\n" \
+- " <ul>\n" \
++ "</div>\n" \
++ "</header>\n" \
++ "</div>\n" \
++ "<div class=\"main\">\n" \
++ "<div class=\"main-rounded\">\n" \
++ "<div class=\"navigationbar\">\n" \
++ " <ul class=\"sub-navigation\">\n" \
++ " <li><a href=\"http://qt-project.org/wiki\">Wiki</a></li>\n" \
++ " <li><a href=\"http://doc.qt.io/\" class=\"active\">Documentation</a></li>\n" \
++ " <li><a href=\"http://qt-project.org/forums\">Forum</a></li>\n" \
++ " <li><a href=\"https://bugreports.qt-project.org/\">Bug Reports</a></li>\n" \
++ " <li><a href=\"https://codereview.qt-project.org/\">Code Review</a></li>\n" \
++ " </ul>\n" \
++ " <div id=\"main_title_bar\">\n" \
++ " <h1>Qt Documentation</h1>\n" \
++ " <div class=\"search_bar\">\n" \
++ " <script>\n" \
++ " (function() {\n" \
++ " var cx = \'003672281345882769388:1y4pftuq8so\';\n" \
++ " var gcse = document.createElement(\'script\');\n" \
++ " gcse.type = \'text/javascript\';\n" \
++ " gcse.async = true;\n" \
++ " gcse.src = (document.location.protocol == \'https:\' ? \'https:\' : \'http:\') + \'//www.google.com/cse/cse.js?cx=\' + cx;\n" \
++ " var s = document.getElementsByTagName(\'script\')[0];\n" \
++ " s.parentNode.insertBefore(gcse, s);\n" \
++ " })();\n" \
++ " </script>\n" \
++ " <gcse:searchbox-only resultsUrl=\"search-results.html\"></gcse:searchbox-only>\n" \
++ " </div></div>\n" \
++ " <ul>\n"
+
+ HTML.postpostheader = \
+- " </ul>\n" \
+- " </div>\n" \
++ " </ul>\n" \
++ "</div>\n" \
+ "<div class=\"content\">\n" \
+ " <div class=\"line\">\n" \
+- " <div class=\"content mainContent\">\n" \
++ " <div class=\"content mainContent\">\n"
++
++HTML.prologue = \
++ "<div class=\"context\">\n"
+diff --git a/doc/global/includes-online/search.qdoc b/doc/global/includes-online/search.qdoc
+new file mode 100644
+index 0000000..25c4563
+--- /dev/null
++++ b/doc/global/includes-online/search.qdoc
+@@ -0,0 +1,39 @@
++/****************************************************************************
++**
++** Copyright (C) 2014 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 search-results.html
++\title Search Results
++
++\raw HTML
++<link rel="stylesheet" type="text/css" href="style/gsc.css" />
++<script type="text/javascript">
++$(function(){ $(".title").append(": " + decodeURIComponent(location.search.split('=')[1]).substring(0,32)); });
++</script>
++<gcse:searchresults-only></gcse:searchresults-only>
++\endraw
++*/
+diff --git a/doc/global/qt-html-templates-online.qdocconf b/doc/global/qt-html-templates-online.qdocconf
+index 88abc34..78d0d49 100644
+--- a/doc/global/qt-html-templates-online.qdocconf
++++ b/doc/global/qt-html-templates-online.qdocconf
+@@ -1,23 +1,9 @@
+ #include standard set of HTML header and footer.
+ include(html-config.qdocconf)
+ include(html-header-online.qdocconf)
+-include(html-footer.qdocconf)
++include(html-footer-online.qdocconf)
+
+ #uncomment if navigation bar is not wanted
+ #HTML.nonavigationbar = "true"
+
+-HTML.stylesheets = template/style/online.css
+-HTML.extraimages += template/images/ico_out.png \
+- template/images/ico_note.png \
+- template/images/ico_note_attention.png \
+- template/images/btn_prev.png \
+- template/images/btn_next.png \
+- template/images/bullet_dn.png \
+- template/images/bullet_sq.png \
+- template/images/bgrContent.png \
+- template/images/Qt-logo.png \
+- template/images/Qt-dark_gradient.png \
+- template/images/Qt-footer-bg.jpg \
+- template/images/Qt-footer_shadow.png \
+- template/images/Qt-gradient.png \
+- template/images/Qt-header-bg.jpg
++sourcedirs += includes-online
+diff --git a/doc/global/qt-module-defaults-offline.qdocconf b/doc/global/qt-module-defaults-offline.qdocconf
+index bdca212..af7afdd 100644
+--- a/doc/global/qt-module-defaults-offline.qdocconf
++++ b/doc/global/qt-module-defaults-offline.qdocconf
+@@ -11,3 +11,6 @@ include(qt-html-templates-offline.qdocconf)
+
+ #extra configuration data such as file extensions
+ include(config.qdocconf)
++
++# Show Qt version as part of the navigation bar
++buildversion = "Qt $QT_VERSION Reference Documentation"
+diff --git a/doc/global/qt-module-defaults-online-commercial.qdocconf b/doc/global/qt-module-defaults-online-commercial.qdocconf
+new file mode 100644
+index 0000000..23b0998
+--- /dev/null
++++ b/doc/global/qt-module-defaults-online-commercial.qdocconf
+@@ -0,0 +1,29 @@
++# This template uses the default online template for qt.io
++# and modifies it for a commercial Qt component
++
++# Start of footer - the rest is defined in the default template
++HTML.footer = \
++ " <p class=\"qt_commercial\">Available under certain Qt licenses.<br/><a href=\"http://www.qt.io/download/\">Find out more.</a></p>\n" \
++ " </div>\n"
++
++include(macros.qdocconf)
++include(qt-cpp-defines.qdocconf)
++include(compat.qdocconf)
++#include(manifest-meta.qdocconf)
++include(fileextensions.qdocconf)
++include(qt-html-templates-online.qdocconf)
++
++#extra configuration data DITA information
++include(config.qdocconf)
++
++HTML.prologue = \
++ "<div class=\"context qt_commercial\">\n" \
++ "<a href=\"http://www.qt.io/download/\" title=\"Available under certain Qt licenses.\" ><h1 class=\"qt_commercial\">C</h1></a>\n"
++
++# Turn off single-directory output mode
++HTML.nosubdirs = "false"
++
++# Set navigation homepage
++navigation.homepage = "Qt Documentation"
++
++sourcedirs += includes-online
+diff --git a/doc/global/qt-module-defaults-online.qdocconf b/doc/global/qt-module-defaults-online.qdocconf
+index 258295b..fcff197 100644
+--- a/doc/global/qt-module-defaults-online.qdocconf
++++ b/doc/global/qt-module-defaults-online.qdocconf
+@@ -1,7 +1,20 @@
+ #The online onfiguration for a Qt 5 module, including Add-Ons and Tools.
+-#Online version contains a different header.
+ #Include this file for a standard Qt 5 module; builds with the online style.
+
++# Start of footer - the rest is defined in qt-html-templates-online.qdocconf
++HTML.footer = \
++ " </div>\n" \
++ " <p class=\"copy-notice\">\n" \
++ " <acronym title=\"Copyright\">&copy;</acronym> 2014 Digia Plc and/or its\n" \
++ " subsidiaries. Documentation contributions included herein are the copyrights of\n" \
++ " their respective owners. " \
++ " The documentation provided herein is licensed under the terms of the" \
++ " <a href=\"http://www.gnu.org/licenses/fdl.html\">GNU Free Documentation" \
++ " License version 1.3</a> as published by the Free Software Foundation. " \
++ " Digia, Qt and their respective logos are trademarks of Digia Plc " \
++ " in Finland and/or other countries worldwide. All other trademarks are property\n" \
++ " of their respective owners. </p>\n"
++
+ #include standard set of macros and C++ defines and ignores
+ include(macros.qdocconf)
+ include(qt-cpp-defines.qdocconf)
+@@ -12,3 +25,7 @@ include(qt-html-templates-online.qdocconf)
+
+ #extra configuration data DITA information
+ include(config.qdocconf)
++
++# single-directory output mode
++HTML.nosubdirs = "true"
++HTML.outputsubdir = "html"
+diff --git a/doc/global/template/scripts/extras.js b/doc/global/template/scripts/extras.js
+new file mode 100644
+index 0000000..cb1102d
+--- /dev/null
++++ b/doc/global/template/scripts/extras.js
+@@ -0,0 +1,23 @@
++var vOffset = 65;
++
++$(function () {
++ $('a[href*=#]:not([href=#])').on('click', function () {
++ var target = $(this.hash);
++ target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
++ if (target.length) {
++ setTimeout(function () {
++ $('html, body').animate({scrollTop: target.offset().top - vOffset}, 50);}, 50);
++ // return false;
++ }
++ });
++});
++
++$(window).load(function () {
++ var h = window.location.hash;
++ var re = /[^a-z0-9_\#\-]/i
++ if (h.length > 1 && !re.test(h)) {
++ setTimeout(function () {
++ $(window).scrollTop($(h).offset().top - vOffset);
++ }, 0);
++ }
++});
+diff --git a/doc/global/template/scripts/main.js b/doc/global/template/scripts/main.js
+new file mode 100644
+index 0000000..79de4ea
+--- /dev/null
++++ b/doc/global/template/scripts/main.js
+@@ -0,0 +1,241 @@
++"use strict";
++
++function createCookie(name, value, days) {
++ var expires;
++ if (days) {
++ var date = new Date();
++ date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
++ expires = "; expires=" + date.toGMTString();
++ } else {
++ expires = "";
++ }
++ document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/";
++ $('.cookies_yum').click(function() {
++ $(this).fadeOut()
++ });
++}
++function readCookie(name) {
++ var nameEQ = escape(name) + "=";
++ var ca = document.cookie.split(';');
++ for (var i = 0; i < ca.length; i++) {
++ var c = ca[i];
++ while (c.charAt(0) === ' ') c = c.substring(1, c.length);
++ if (c.indexOf(nameEQ) === 0) return unescape(c.substring(nameEQ.length, c.length));
++ }
++ return null;
++}
++function eraseCookie(name) {
++ createCookie(name, "", -1);
++}
++function load_sdk(s, id, src) {
++ var js, fjs = document.getElementsByTagName(s)[0];
++ if (document.getElementById(id)) return;
++ js = document.createElement(s);
++ js.id = id;
++ js.src = src;
++ fjs.parentNode.insertBefore(js, fjs);
++}
++$(document).ready(function($) {
++ if (document.documentElement.clientWidth < 1220) {
++ oneQt.extraLinksToMain();
++ }
++
++ $('#menuextras .search').click(function(e){
++ e.preventDefault();
++ $('.big_bar.account').slideUp();
++ $('.big_bar.search').slideToggle();
++ $('.big_bar_search').focus();
++ $(this).toggleClass('open');
++ });
++ $('.cookies_yum').click(function() {
++ $('.cookies_yum').fadeOut();
++ createCookie("cookies_nom", "yum", 180);
++ var cookie_added = 1;
++ });
++ if (!(readCookie('cookies_nom') == 'yum')) {
++ $('.cookies_yum').fadeIn();
++ } else {
++ var cookie_added = 1;
++ }
++
++ Modernizr.load({test: Modernizr.input.placeholder,
++ nope: wpThemeFolder + '/js/placeholders.min.js'});
++
++ $('#navbar .navbar-toggle').click(function(e) {
++ e.preventDefault();
++ if ($(this).hasClass('opened')) {
++ $(this).removeClass('opened');
++ $('#navbar .navbar-menu').css('max-height', '0px');
++ }
++ else {
++ $(this).addClass('opened');
++ $('#navbar .navbar-menu').css('max-height', $('#navbar .navbar-menu ul').outerHeight() + 'px');
++ }
++ });
++
++ $(window).resize(function() {
++ oneQt.stickySidebar();
++ oneQt.footerPosition();
++ if (document.documentElement.clientWidth < 1220) {
++ oneQt.extraLinksToMain();
++ } else {
++ oneQt.mainLinkstoExtra();
++ }
++ });
++
++ $(window).scroll(function() {
++ oneQt.stickySidebar();
++ oneQt.stickyHeader();
++ });
++
++ oneQt.stickySidebar();
++ oneQt.footerPosition();
++ oneQt.tabContents();
++});
++
++$( window ).load(function() {
++ load_sdk('script', 'facebook-jssdk','//connect.facebook.net/en_US/sdk.js#xfbml=1&appId=207346529386114&version=v2.0');
++ load_sdk('script', 'twitter-wjs', '//platform.twitter.com/widgets.js');
++ $.getScript("//www.google.com/jsapi", function(){
++ google.load("feeds", "1", {"callback": oneQt.liveFeeds});
++ });
++});
++
++var oneQt = {
++ stickySidebar: function() {
++ if ($('#sidebar').length && $('#sidebar').outerHeight() > 20) {
++ var $sidebar = $('#sidebar');
++ var $win = $(window);
++ var $sidebarContainer = $sidebar.parent();
++ var headerHeight = $('#navbar').outerHeight();
++ if ($win.outerHeight() - headerHeight > $sidebar.innerHeight() &&
++ $win.scrollTop() > $sidebarContainer.offset().top) {
++ var newTop = headerHeight + $win.scrollTop() - $sidebarContainer.offset().top;
++ if (newTop + $sidebar.innerHeight() > $sidebarContainer.innerHeight())
++ newTop = $sidebarContainer.innerHeight() - $sidebar.innerHeight();
++
++ $sidebar.css({top: newTop +'px'})
++ }
++ else {
++ $sidebar.css({top: '0'})
++ }
++ }
++ },
++
++ footerPosition: function () {
++ $('#footerbar').removeClass('fixed');
++ if (($('.hbspt-form').length > 0) || ($('#customerInfo').length > 0) || ($('.purchase_bar').length > 0)) {
++ var footerBottomPos = $('#footerbar').offset().top + $('#footerbar').outerHeight();
++ if (footerBottomPos < $(window).height())
++ $('#footerbar').addClass('fixed');
++ }
++ },
++
++ stickyHeader: function () {
++ var originalHeaderHeight = 79;
++ if ($(window).scrollTop() > originalHeaderHeight) {
++ $('#navbar').addClass('fixed');
++ $('#bottom_header').fadeOut();
++
++ if (!(cookie_added == 1)) {
++ $('.cookies_yum').fadeOut();
++ createCookie("cookies_nom", "yum", 180);
++ var cookie_added = 1;
++ }
++ }
++ else {
++ $('#navbar').removeClass('fixed');
++ $('#bottom_header').fadeIn();
++ }
++ },
++
++ tabContents: function () {
++ $('.tab-container').each(function(i) {
++ var $el = $(this);
++ $el.find('.tab-titles li:eq(0)').addClass('active');
++ $el.find('.tab-contents .tab:eq(0)').addClass('active');
++ $el.find('.tab-titles a').click(function(e) {
++ e.preventDefault();
++ var index = $(this).parent().index();
++ $el.find('.tab-titles li').removeClass('active');
++ $el.find('.tab-contents .tab').removeClass('active');
++ $(this).parent().addClass('active');
++ $el.find('.tab-contents .tab').eq(index).addClass('active');
++ })
++ });
++ },
++
++ liveFeeds: function () {
++ $('.feed-container').each(function(i) {
++ var feedUrl = $(this).data('url');
++ if (feedUrl != "") oneQt.blogFeed($(this), feedUrl);
++ });
++ },
++
++ blogFeed: function ($container, feedUrl) {
++ var feed = new google.feeds.Feed(feedUrl);
++ feed.setNumEntries(3);
++ feed.load(function(result) {
++ $container.html('');
++ if (!result.error) {
++ for (var i = 0; i < result.feed.entries.length; i++) {
++ var entry = result.feed.entries[i];
++ var $article = $('<article class="discussion-tile cf"></article>');
++ $container.append($article);
++ var html = ' <div class="author retina">';
++ html += ' <img src="'+wpThemeFolder+'/assets/images/author_placeholder.png" alt="">';
++ html += ' </div>';
++ html += ' <div class="discussion-item">';
++ html += ' <h4><a href="'+encodeURI(entry.link)+'"></a></h4>'
++ html += ' <h3><a href="'+encodeURI(entry.link)+'" target="_blank"></a></h3>'
++ html += ' <p><a href="'+encodeURI(entry.link)+'" target="_blank"></a></p>';
++ html += ' <ul class="taglist cf">';
++ html += ' </ul>';
++ html += ' </div>';
++ $article.append(html);
++ $article.find('h4 a').text(result.feed.title);
++ $article.find('h3 a').text(entry.title);
++ $article.find('p a').text(entry.author);
++ try {
++ for (var j=0; j<entry.categories.length; j++) {
++ var $li = $('<li><a href="'+encodeURI(entry.link)+'" target="_blank" class="btn btn-tag"></a></li>');
++ $li.find('a').text(entry.categories[j]);
++ $article.find('.taglist').append($li);
++ }
++ } catch(e) {}
++ }
++ if (result.feed.link && result.feed.link != "") {
++ var linkHtml = '<a href="'+encodeURI(result.feed.link)+'" class="text-lightgrey" target="_blank">Show all</a>';
++ $container.append(linkHtml);
++ }
++ }
++ });
++ },
++
++ extraLinksToMain: function() {
++ var extramenuLinks = $('#menuextras').find('li');
++ var mainmenu = $('#mainmenu');
++ var count = 0;
++ if ($(extramenuLinks).length > 3) {
++ $(extramenuLinks).each(function() {
++ if (count < 3) {
++ var newLink = $(this);
++ $(newLink).addClass('dynamic-add');
++ $(mainmenu).append(newLink);
++ }
++ count++;
++ });
++ }
++ },
++
++ mainLinkstoExtra: function() {
++ var mainmenuLinks = $('#mainmenu').find('.dynamic-add');
++ var extramenu = $('#menuextras');
++ var count = 0;
++ $(mainmenuLinks).each(function() {
++ var newLink = $(this);
++ $(extramenu).prepend(newLink);
++ count++;
++ });
++ }
++}
+diff --git a/doc/global/template/style/doc_search.png b/doc/global/template/style/doc_search.png
+new file mode 100644
+index 0000000000000000000000000000000000000000..0d7bccd46f95748946bad81b2cecb8d0df7f6ca2
+GIT binary patch
+literal 2151
+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
+MG+%0+XLQDY0RK2*5&!@I
+
+literal 0
+HcmV?d00001
+
+diff --git a/doc/global/template/style/gsc.css b/doc/global/template/style/gsc.css
+new file mode 100644
+index 0000000..e3d6391
+--- /dev/null
++++ b/doc/global/template/style/gsc.css
+@@ -0,0 +1,192 @@
++.gsc-control-cse table, table td, table th {
++ border: none !important;
++ margin-bottom: 10px !important
++}
++.gsc-control-cse {
++ width: 100% !important;
++ box-sizing: border-box !important
++}
++.gsc-control-cse * {
++ font-family: 'Open Sans', Arial, Helvetica, sans-serif !important;
++ line-height: 1.5 !important;
++ font-weight: 300 !important
++}
++.gsc-control-cse,
++.gsc-control-cse .gsc-table-result {
++ width: 100% !important;
++ font-family: 'Open Sans', Arial, Helvetica, sans-serif !important;
++ font-weight: 300 !important;
++ font-size: 13px !important
++}
++.gsc-resultsHeader {
++ width: 100% !important;
++ clear: both !important
++}
++.gsc-resultsHeader td.gsc-twiddleRegionCell {
++ width: 75% !important
++}
++.gsc-resultsbox-visible {
++ display: block !important
++}
++.gsc-resultsbox-invisible {
++ display: none !important
++}
++.gsc-results {
++ padding-bottom: 2px !important;
++ width: 99% !important
++}
++.gsc-result {
++ margin-bottom: 10px !important
++}
++.gsc-result .gs-title {
++ height: 1.4em !important;
++ overflow: hidden !important
++}
++.gsc-result div.gs-watermark {
++ display: none !important
++}
++.gsc-results .gsc-result img.gs-ad-marker {
++ display: none !important
++}
++.gsc-webResult:after {
++ content: "." !important;
++ display: block !important;
++ height: 0 !important;
++ clear: both !important;
++ visibility: hidden !important
++}
++.gsc-webResult {
++ zoom: 1 !important
++}
++.gsc-webResult .gsc-result {
++ margin: 0 !important;
++ padding: .5em 0 !important;
++ border-bottom: 1px solid #ebebeb !important
++}
++.gsc-above-wrapper-area {
++ border-bottom: 1px solid #E9E9E9 !important;
++ padding: 5px 0 5px 0 !important
++}
++.gsc-above-wrapper-area-invisible {
++ display: none !important
++}
++.gsc-above-wrapper-area-container {
++ width: 100% !important
++}
++.gsc-result-info {
++ text-align: left !important;
++ color: #676767 !important;
++ font-size: 13px !important;
++ padding-left: 8px !important;
++ margin: 10px 0 10px 0 !important
++}
++.gsc-result-info-container {
++ text-align: left !important
++}
++.gsc-result-info-invisible {
++ display: none !important
++}
++.gsc-orderby-container {
++ text-align: right !important;
++ background: transparent !important
++}
++.gsc-orderby-invisible {
++ display: none !important
++}
++.gsc-orderby-label {
++ color: #676767 !important;
++ padding: 5px 5px 6px 0 !important
++}
++.gsc-selected-option-container {
++ background-color: transparent !important;
++ border: 1px solid #eee !important;
++ border: 1px solid rgba(0, 0, 0, 0.1) !important;
++ border-radius: 2px !important;
++ box-shadow: none !important;
++ color: #444 !important;
++ cursor: default !important;
++ font-size: 11px !important;
++ font-weight: bold !important;
++ height: 20px !important;
++ line-height: 20px !important;
++ max-width: 90% !important;
++ min-width: 54px !important;
++ outline: 0 !important;
++ padding: 0 28px 0 6px !important;
++ position: relative !important;
++ text-align: center !important;
++ width: 50px !important !important
++}
++.gsc-selected-option {
++ position: relative !important;
++ width: 100% !important;
++}
++.gsc-control-cse .gsc-option-selector {
++ border: none !important;
++ height: 11px !important;
++ margin-top: -4px !important;
++ position: absolute !important;
++ right: 5px !important;
++ top: 8px !important;
++ width: 7px !important;
++ padding: 0 5px 0 5px !important;
++ background: url(//ssl.gstatic.com/ui/v1/disclosure/small-grey-disclosure-arrow-down.png) center no-repeat
++}
++.gsc-results .gsc-cursor-box .gsc-trailing-more-results {
++ margin-bottom: 0 !important;
++ display: inline !important
++}
++.gsc-results .gsc-cursor {
++ display: inline !important
++}
++.gsc-results .gsc-cursor-box {
++ margin: 10px 5px 10px !important
++}
++.gsc-results .gsc-cursor-box .gsc-cursor-page {
++ cursor: pointer !important;
++ color: #000000 !important;
++ text-decoration: underline !important;
++ margin-right: 8px !important;
++ display: inline !important
++}
++.gsc-results .gsc-cursor-box .gsc-cursor-current-page {
++ cursor: default !important;
++ color: white !important;
++ background-color: #5caa15 !important;
++ font-weight: bold !important;
++ text-decoration: none !important;
++ padding: 0 3px 0 3px !important;
++ margin-top: 10px !important;
++ cursor: pointer !important
++}
++.gs-result .gs-title,
++.gs-result .gs-title * {
++ color: #5caa15 !important;
++ text-decoration: underline !important
++}
++.gs-webResult div.gs-visibleUrl-long,
++.gs-promotion div.gs-visibleUrl-long {
++ overflow: hidden !important;
++ display: none !important
++}
++.gs-webResult div.gs-per-result-labels a.gs-label {
++ text-decoration: underline !important;
++ cursor: pointer !important;
++ padding: 3px !important;
++ color: #26282a !important
++}
++.gs-webResult div.gs-per-result-labels a.gs-label.gs-labelActive {
++ cursor: default !important;
++ text-decoration: none !important
++}
++.gsc-control-cse:after {
++ content: "." !important;
++ display: block !important;
++ clear: both !important;
++ height: 0 !important;
++ visibility: hidden !important
++}
++
++*:first-child + html .gsc-inline-block {
++ display: inline !important
++}
+diff --git a/doc/global/template/style/icomoon.eot b/doc/global/template/style/icomoon.eot
+new file mode 100755
+index 0000000000000000000000000000000000000000..68f0fa6ae6f0c2e28b928f3cb3d8b78abeede398
+GIT binary patch
+literal 4624
+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
+
+literal 0
+HcmV?d00001
+
+diff --git a/doc/global/template/style/icomoon.svg b/doc/global/template/style/icomoon.svg
+new file mode 100755
+index 0000000..3246f83
+--- /dev/null
++++ b/doc/global/template/style/icomoon.svg
+@@ -0,0 +1,20 @@
++<?xml version="1.0" standalone="no"?>
++<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
++<svg xmlns="http://www.w3.org/2000/svg">
++<metadata>Generated by IcoMoon</metadata>
++<defs>
++<font id="icomoon" horiz-adv-x="512">
++<font-face units-per-em="512" ascent="480" descent="-32" />
++<missing-glyph horiz-adv-x="512" />
++<glyph unicode="&#x20;" d="" horiz-adv-x="256" />
++<glyph unicode="&#xe600;" d="M70.281 478.981c-38.026 6.451-70.281-21.729-70.281-62.472v-448.51l347.671 58.398c24.106 4.075 42.78 32.255 42.78 62.812v337.486l-320.17 52.286zM232.233 147.608c-10.185-23.767-25.464-39.045-46.175-46.514 2.037-10.865 5.433-17.655 9.506-21.729 2.376-2.037 5.772-3.735 9.846-3.735h11.544c-2.376 0-4.414-0.679-6.451-0.679l0.339-0.339c2.037 0 3.055 0 6.451 0.339v-31.915l-14.939-2.037c-4.414-0.679-8.488-0.679-12.223-0.679-12.902 0-23.088 3.055-30.897 9.507-10.185 8.149-17.994 24.106-22.748 47.533-22.409 4.753-39.724 19.014-51.608 42.78-12.223 24.106-18.334 59.416-18.334 105.931 0 49.91 8.488 86.578 25.124 110.005 14.26 19.692 33.953 29.538 58.737 29.538 4.075 0 8.149-0.339 12.223-0.679 29.199-3.395 50.25-16.976 64.17-41.082 13.581-23.427 20.032-56.7 20.032-100.838 0-40.403-4.754-71.979-14.6-95.406zM346.313 125.199c-13.581-5.433-24.785-8.827-37.008-9.846-1.697 0-3.395-0.339-5.093-0.339-10.865 0-19.692 3.055-25.464 9.507-6.791 7.469-10.525 19.353-10.525 35.65v125.623l-13.581 0.679v33.273l17.994-1.358 11.884 49.57 27.841-3.055v-49.231l30.557-2.376v-30.897l-30.557 1.358v-113.061c0-9.846 1.019-16.297 3.055-19.014s5.093-3.735 9.167-3.735c0.339 0 1.019 0 1.358 0 6.111 0.339 13.581 2.377 20.372 5.772v-28.52zM162.631 347.586c-1.018 0-1.697 0-2.716 0-10.525 0-18.673-6.111-24.446-18.673-6.112-13.581-9.167-41.422-9.167-84.202 0-41.082 3.055-70.281 9.167-87.257 5.772-16.297 14.26-24.445 25.803-24.445 0.339 0 1.018 0 1.358 0 11.204 0.679 19.692 8.488 25.464 23.427 5.772 14.599 8.488 43.798 8.488 86.918 0 38.706-2.716 65.528-8.488 80.127-5.433 14.939-13.921 23.088-25.464 24.106zM206.090 75.289v0zM206.090 75.289c1.358 0 2.716 0 4.414 0 2.037 0 4.075 0.679 6.451 0.679h-11.544l0.679-0.679z" horiz-adv-x="391" />
++<glyph unicode="&#xe601;" d="M511.589 224.206c0-141.272-114.523-255.794-255.794-255.794s-255.794 114.523-255.794 255.794c0 141.271 114.523 255.794 255.794 255.794s255.794-114.523 255.794-255.794zM192.565 127.717c0-18.066-14.781-32.436-32.436-32.436s-32.847 14.37-32.847 32.436c0 18.066 14.781 32.436 32.436 32.436s32.847-14.37 32.847-32.436zM127.281 367.91v-50.502c133.030 0 221.716-89.097 221.716-222.127h50.502c0 165.466-107.163 272.628-272.218 272.628zM142.473 262.8c-3.696 0-11.496 0-15.192-0.411v-45.164c3.695 0.411 11.497 0.411 15.192 0.411 61.999 0 107.163-45.164 107.163-107.163 0-3.695 0-11.907-0.411-15.192h45.575c0.411 3.695 0.411 11.497 0.411 15.192-0.411 94.024-58.714 152.327-152.738 152.327z" />
++<glyph unicode="&#xe602;" d="M511.589 224.206c0-141.272-114.523-255.794-255.794-255.794s-255.794 114.523-255.794 255.794c0 141.271 114.523 255.794 255.794 255.794s255.794-114.523 255.794-255.794zM382.666 298.111h-253.331c-8.212 0-14.781 6.57-14.781 14.781v18.887c0 8.212 6.57 14.781 14.781 14.781h253.331c8.212 0 14.781-6.57 14.781-14.781v-18.887c0-8.212-6.57-14.781-14.781-14.781zM382.666 199.981h-253.331c-8.212 0-14.781 6.57-14.781 14.781v18.887c0 8.212 6.57 14.781 14.781 14.781h253.331c8.212 0 14.781-6.57 14.781-14.781v-18.887c0-8.212-6.57-14.781-14.781-14.781zM382.666 101.44h-253.331c-8.212 0-14.781 6.57-14.781 14.781v18.887c0 8.212 6.57 14.781 14.781 14.781h253.331c8.212 0 14.781-6.57 14.781-14.781v-18.887c0-7.801-6.57-14.781-14.781-14.781z" />
++<glyph unicode="&#xe603;" d="M511.795 224c0-141.272-114.524-255.795-255.795-255.795s-255.795 114.524-255.795 255.795c0 141.272 114.523 255.795 255.795 255.795s255.795-114.524 255.795-255.795zM405.529 256.947l-103.168 14.797-46.566 92.646-46.080-92.646-103.245-14.797 74.471-71.68-17.664-101.581 92.416 47.974 93.056-48.051-17.69 101.657z" />
++<glyph unicode="&#xe604;" d="M511.589 224.206c0-141.272-114.523-255.794-255.794-255.794s-255.794 114.523-255.794 255.794c0 141.271 114.523 255.794 255.794 255.794s255.794-114.523 255.794-255.794zM379.381 126.486l-74.726 75.137c12.728 17.245 20.118 39.005 20.118 61.998 0 29.152-11.907 55.429-30.794 74.316-18.887 19.298-45.575 31.204-74.726 31.204s-55.429-11.907-74.316-30.794c-18.887-18.887-30.794-45.575-30.794-74.316 0-29.151 11.907-55.429 30.794-74.316s45.575-30.794 74.316-30.794c20.119 0 38.595 5.748 54.608 15.192l75.959-75.959c5.337-5.337 13.96-5.337 19.298 0l9.854 9.854c5.748 4.517 5.748 13.139 0.411 18.476zM165.055 209.424c-13.96 13.96-22.582 32.847-22.582 54.197s8.623 40.238 22.582 54.197c13.96 13.96 32.847 22.582 54.197 22.582s40.238-8.623 54.197-22.582c13.96-13.96 22.582-32.847 22.582-54.197s-8.623-40.238-22.582-54.197c-13.96-13.96-32.847-22.582-54.197-22.582-20.94 0-40.238 8.623-54.197 22.582z" />
++<glyph unicode="&#xe605;" d="M511.589 224.206c0-141.272-114.523-255.794-255.794-255.794s-255.794 114.523-255.794 255.794c0 141.271 114.523 255.794 255.794 255.794s255.794-114.523 255.794-255.794zM255.794-22.557c67.746 0 129.335 27.509 174.088 71.442-5.748 4.106-11.907 8.623-18.887 13.55-22.993 15.602-52.966 34.9-92.382 59.535-1.642 1.232-2.874 2.464-3.284 3.695-0.821 1.232-1.232 2.464-1.232 3.284-0.411 2.053-0.821 4.106-0.821 6.159 0 4.927 0.821 10.264 2.874 16.423 1.642 6.159 4.517 12.317 7.801 18.476 2.053 3.695 4.927 9.854 7.39 17.655s4.927 17.655 7.39 28.741c4.517 22.172 7.39 49.681 7.39 79.243 0 13.138-5.337 29.973-14.781 45.575-9.854 15.602-23.404 29.972-39.827 38.595-11.086 5.748-22.993 9.033-35.721 9.033v0 0c-18.476-0.411-35.31-7.801-49.681-19.708s-25.867-27.92-32.847-43.933c-4.517-10.675-6.57-20.94-6.57-29.562 0-22.171 1.643-43.112 4.517-61.588s6.57-34.489 10.264-45.986c2.464-7.801 5.338-13.96 7.391-17.655 3.696-5.748 6.159-12.317 7.801-18.476s2.874-11.497 2.874-16.423c0-1.642 0-2.874-0.411-4.517s-0.821-3.284-1.643-4.927c-0.821-1.232-1.643-2.464-3.285-3.695-51.323-32.026-87.044-55.429-111.679-73.084 43.933-44.343 105.52-71.853 173.267-71.853z" />
++<glyph unicode="&#xe606;" d="M511.087 224.411c0-141.109-114.392-255.502-255.501-255.502s-255.501 114.392-255.501 255.501c0 141.109 114.392 255.501 255.501 255.501s255.501-114.392 255.501-255.501zM369.577 360.185h-227.981c-2.263-0.003-4.095-1.838-4.098-4.098v-263.767c0.003-2.263 1.838-4.095 4.098-4.098h227.981c2.263 0.003 4.095 1.838 4.098 4.098v263.767c-0.007 2.263-1.838 4.095-4.098 4.098zM291.959 165.217c0-4.507-3.688-8.197-8.197-8.197h-112.482c-4.507 0-8.196 3.688-8.196 8.197v2.263c0 4.507 3.689 8.197 8.197 8.197h112.482c4.507 0 8.197-3.688 8.197-8.197v-2.263zM348.089 210.007c0-4.507-3.688-8.197-8.197-8.197h-168.612c-4.507 0-8.196 3.688-8.196 8.197v2.263c0 4.507 3.689 8.197 8.197 8.197h168.608c4.507 0 8.197-3.688 8.197-8.197v-2.263zM348.089 254.796c0-4.507-3.688-8.197-8.197-8.197h-168.612c-4.507 0-8.196 3.689-8.196 8.197v2.263c0 4.508 3.689 8.197 8.197 8.197h168.608c4.507 0 8.197-3.688 8.197-8.197v-2.263zM348.089 299.584c0-4.507-3.688-8.197-8.197-8.197h-168.612c-4.507 0-8.196 3.689-8.196 8.197v2.263c0 4.508 3.689 8.197 8.197 8.197h168.608c4.507 0 8.197-3.688 8.197-8.197v-2.263z" />
++<glyph unicode="&#xe607;" d="M0 139.988v153.96c0 19.471 0.36 36.417 3.966 50.84 36.056 11.538 85.093 18.389 127.279 18.389 23.797 0 53.724-2.524 75.719-5.409v122.231h55.166v-340.012c0-18.389-0.361-35.335-3.966-51.56-34.254-11.538-86.535-18.389-126.918-18.389-42.547 0-89.059 6.49-126.197 17.668-3.606 16.947-5.048 34.253-5.048 52.281zM57.33 308.372c-1.443-7.572-2.163-19.471-2.163-34.974v-113.578c0-18.389 0.721-29.927 2.163-34.974 20.191-5.409 49.758-7.933 73.916-7.933 27.042 0 56.248 3.245 73.555 8.293 1.442 5.048 2.163 16.586 2.163 34.614v150.355c-21.634 3.606-51.921 5.769-76.44 5.769-23.436 0.361-51.56-3.245-73.195-7.572zM389.048 360.293v-287.009h-55.887v287.009h55.887zM658.028 28.214c1.442 6.49 2.163 15.144 2.163 24.879v29.566c-22.355-2.524-50.479-4.327-72.112-4.327-41.826 0-89.059 6.13-123.673 17.668-2.885 16.947-4.327 33.893-4.327 51.2v146.75c0 18.028 1.442 34.974 4.327 50.839 34.254 11.538 81.848 18.389 123.673 18.389 41.465 0 87.256-6.851 123.673-18.389 3.606-16.586 3.966-32.812 3.966-50.839v-271.865c-15.865-46.512-64.18-54.084-124.034-54.084-25.961 0-62.377 4.327-91.583 10.096v43.988c29.206-5.769 72.834-9.735 108.169-7.933 19.11 0.721 40.383 5.769 49.758 14.062zM660.192 129.533v143.865c0 16.586-0.361 27.403-2.524 34.975-19.471 4.327-45.792 7.933-69.588 7.933-23.437 0-50.119-3.245-69.588-7.933-1.803-7.572-2.885-19.471-2.885-34.975v-107.087c0-15.865 1.082-27.403 2.885-34.974 18.389-5.409 45.431-7.933 69.228-7.933 23.076 0.361 50.479 2.163 72.473 6.13zM842.276 360.293v-287.009h-55.888v287.009h55.888zM1159.211 344.067c-36.417 12.62-73.555 18.75-115.741 18.75-36.057 0-91.583-5.769-123.673-15.144v-51.2h27.403c5.048 4.327 9.014 10.096 11.899 16.226 10.457 2.524 32.812 5.048 74.637 5.048 23.797 0 51.2-3.966 71.752-8.293 1.443-13.341 2.524-26.681 2.524-38.941v-23.076h-120.067c-22.355 0-51.2-3.245-75.357-12.619-3.606-15.143-4.688-32.451-5.048-44.71v-50.118c0-18.028 1.442-35.335 5.048-51.921 36.778-11.538 84.011-17.668 126.557-17.668 40.383 0 85.814 6.13 120.068 17.668 3.605 15.865 3.966 32.812 3.966 51.2v143.504c0 15.504-0.361 34.974-3.966 61.296zM998.039 206.693h110.333v-35.696c0-14.423 0.361-34.614-1.803-46.152-17.307-5.048-40.023-7.572-66.704-7.572-1.443 0-2.884 0-3.966 0-23.076 0-52.282 2.524-71.391 7.572-1.803 10.817-2.885 26.321-2.885 35.696v3.606c0 8.293 0.361 27.043 3.606 38.581 8.293 2.885 19.11 3.966 32.812 3.966zM912.586 234.817c-3.606-15.144-5.048-44.71-5.048-44.71v-50.118zM387.966 476.034v-59.493h-55.887v59.493h55.887zM842.276 476.034v-59.493h-55.888v59.493h55.888z" horiz-adv-x="1163" />
++<glyph unicode="&#xe608;" d="M512.419 224.922c0-141.385-114.615-256-256-256s-256 114.615-256 256c0 141.385 114.615 256 256 256s256-114.615 256-256zM414.157 260.356l-108.984 15.832-48.921 98.764-7.456-15.246-41.047-83.519-108.984-15.832 78.744-76.9-18.597-108.565 97.424 51.267 97.759-51.267-18.597 108.565 78.659 76.9zM256.252 145.005l-75.142-39.539 14.409 83.769-60.817 59.309 84.189 12.314 37.362 76.231 37.78-76.231 84.188-12.231-60.817-59.309 14.409-83.853-75.56 39.539z" horiz-adv-x="513" />
++<glyph unicode="&#xe609;" d="M511.795 224c0-141.272-114.524-255.795-255.795-255.795s-255.795 114.524-255.795 255.795c0 141.272 114.523 255.795 255.795 255.795s255.795-114.524 255.795-255.795zM418.457 266.368l-112.435 16.128-50.279 100.070-11.392-22.912-38.4-77.159-112.409-16.102 81.229-78.183-19.174-110.157 100.224 51.993 100.582-51.942-19.175 110.106 81.229 78.157z" />
++</font></defs></svg>
+\ No newline at end of file
+diff --git a/doc/global/template/style/icomoon.ttf b/doc/global/template/style/icomoon.ttf
+new file mode 100755
+index 0000000000000000000000000000000000000000..4518527c8b4cadba1fdb54c4f9987cb5877e605d
+GIT binary patch
+literal 4460
+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
+
+literal 0
+HcmV?d00001
+
+diff --git a/doc/global/template/style/icomoon.woff b/doc/global/template/style/icomoon.woff
+new file mode 100755
+index 0000000000000000000000000000000000000000..5c8466c40fbeb6d98c53192c2e9fcfc0507f8c83
+GIT binary patch
+literal 4536
+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
+GmHz=YMFm9w
+
+literal 0
+HcmV?d00001
+
+diff --git a/doc/global/template/style/list_arrow.png b/doc/global/template/style/list_arrow.png
+new file mode 100644
+index 0000000000000000000000000000000000000000..a6a6be665bfea5a4f202d2981db3211eb3158f68
+GIT binary patch
+literal 1115
+zcmaJ=OK8+U7>+KMrCO|tqD3*pQXlK))x_<_uI-w%cEyykF1QDUW|L_f+ho#Y>TY{+
+zD?Sf}s#Ub8R8jGw9`sP~;6+6dQ9(gPK}1nO@E}+ap-#5l)`M$cGBZE__x-PLj<vOJ
+zt0=E3CkUb<(V`^rUg@u38UC;SF{$Bg1!_v8ov;ICH5U+Z17-l3u(VE)1e(#``v}w%
+zL|~nnN~5&8L(-u|YrYSivmA^ji28<{qv_oMkr~iw+A-?;ox2oi8Zl~@sIsafgD$gW
+zzy&)8T2uN!w;na9hAm`$PQnBhKpL5|dTdY1#i#<WgwMX2p~!*@>W)!UNu|{`Qid)d
+zMOqB&EYFdVD9wptB*Jebd6p9xmSecuFc*~sL1I~Q`lE0(*XWRvO7nCqe2Y<C2sskN
+zWV2a1TT4T?li{M#D8up$&xf%`*z32EmJ8e7nj(V&Jl!=NWI~(t8MO@TLoo_xI#q(@
+z%+T82benL)n4IP?9L@SA6&+Re|E`ub<L#j&n9cW}#9pf30ZbBju+P=;;5yd$p&Ute
+zfrg-)g0QF9#kMYppw|T*QkDx{BiE^#ZrZ+aeF3GaQo{C-X6qoK#3;-|o2DVjLUdCz
+z8{H%-VlBrt32`B!C~-Mn*IZZEB(w1%R)Kn-1#DEr8nf6)Nvtmj%fXQq;F|k@(d<Ht
+zEEF!8rE?KV@=arn(z%Ewu?$Xz@yGkuxQiyNA^$idUVNF6Kd`apT`casyW_v{!+4ZX
+z;;G!5%&*DGh5&EZeX9=M`}F0*IJ+cJGd};`s-bP?HZMO)yjqa1xbk@L@OUMkU-WSS
+zB3=aDLyJd3DR^rlww@;D>=KycALo^g4Nc@z^F~5J^n62d55Zqv(sKTgD-RwXIcX5f
+zZss!&&Qu4+29K=FAE;hI-0rP8arI?mV4`yAP}>vo^Myh8`y4TJvZ}0e_*G5y{khM6
+zzI!;D*xu6k<YHs_>4TyC=+hIU!|lg977F3vb7vcS_b<El`qY`X!OC{x{iW{ErLWi5
+P`p-Sl)T-Rr+J4{<_^4~I
+
+literal 0
+HcmV?d00001
+
+diff --git a/doc/global/template/style/online.css b/doc/global/template/style/online.css
+index 5d0cd7e..d558137 100644
+--- a/doc/global/template/style/online.css
++++ b/doc/global/template/style/online.css
+@@ -1,1073 +1,1590 @@
+-img {
+- -moz-box-shadow: 3px 3px 3px #ccc;
+- -webkit-box-shadow: 3px 3px 3px #ccc;
+- box-shadow: 3px 3px 3px #ccc;
+- border: #8E8D8D 2px solid;
+- margin-left: 0px;
+- max-width: 800px;
+- height: auto;
+-}
+-
+-.content {
+- margin: 15px
+-}
+-
+-.content .indexboxcont li {
+- font: normal bold 13px/1 Verdana
+- }
+-
+-.content .normallist li {
+- font: normal 13px/1 Verdana
+- }
+-
+-.descr {
+- margin-top: 35px;
+- /*max-width: 75%;*/
+- margin-left: 5px;
+- text-align: left;
+- vertical-align: top;
+-}
+-
+-.name {
+- max-width: 75%;
+- font-weight: 100;
+-}
+-
+-tt {
+- text-align: left
+-}
+-
+-/*
+------------
+-links
+------------
+-*/
+-
+-.flags {
+- text-decoration: none;
+- text-height: 24px;
+-}
+-
+-.flags:target {
+- background-color: #FFFFD6;
+-}
+-
+-/*
+--------------------------------
+-NOTE styles
+--------------------------------
+-*/
+-
+-.notetitle, .tiptitle, .fastpathtitle {
+- font-weight: bold
+-}
+-
+-.attentiontitle, .cautiontitle, .dangertitle, .importanttitle, .remembertitle, .restrictiontitle {
+- font-weight: bold
+-}
+-
+-.note, .tip, .fastpath {
+- background: #F2F2F2 url('../images/ico_note.png');
+- background-repeat: no-repeat;
+- background-position: top left;
+- padding: 5px;
+- padding-left: 40px;
+- padding-bottom: 10px;
+- border: #999 1px dotted;
+- color: #666666;
+- margin: 5px;
+-}
+-
+-.attention, .caution, .danger, .important, .remember, .restriction {
+- background: #F2F2F2 url('../images/ico_note_attention.png');
+- background-repeat: no-repeat;
+- background-position: top left;
+- padding: 5px;
+- padding-left: 40px;
+- padding-bottom: 10px;
+- border: #999 1px dotted;
+- color: #666666;
+- margin: 5px;
+-}
+-
+-.qtref {
+- display: block;
+- top: -76px;
+- z-index: 1;
+- font-size: 11px;
+- padding-right: 10px;
+- float: right;
+-}
+-
+-.naviNextPrevious {
+- display: block;
+- text-align: right;
+- float: right;
+- z-index: 1;
+- padding-right: 10px;
+- padding-top: 4px;
+-}
+-
+-.naviNextPrevious > a.nextPage {
+- background-image: url('../images/btn_next.png');
+- background-repeat: no-repeat;
+- background-position: right;
+- padding-right: 20px;
+- height: 20px;
+- margin-left: 30px;
+- }
+-
+-.naviNextPrevious > a.prevPage {
+- background-image: url('../images/btn_prev.png');
+- background-repeat: no-repeat;
+- background-position: left;
+- padding-left: 20px;
+- height: 20px;
+- padding-left: 20px;
++#navbar {
++ position:fixed;
++ top:0;
++ left:0;
++ z-index:100;
++ background:#fff;
++ width:100%
++}
++#navbar .container {
++ overflow:visible
++}
++.fixed .container {
++ overflow:visible
++}
++.box-shadowed-nav #navbar {
++ border-bottom:1px solid #eee
++}
++#navbar .navbar-header {
++ position:relative
++}
++#navbar .navbar-toggle {
++ display:none;
++ float:right;
++ line-height:18px;
++ min-width:95px;
++ position:relative;
++ text-align:center;
++ margin:10px 0 0 0
++}
++#navbar .navbar-toggle:hover figure {
++ background:#5caa15
++}
++#navbar .navbar-toggle span {
++ color:#bdbebf;
++ font-weight:300
++}
++#navbar .navbar-toggle figure {
++ background:#7fc241;
++ border-radius:100%;
++ -webkit-border-radius:100%;
++ -moz-border-radius:100%;
++ transition:all 0.2s ease-in-out;
++ -webkit-transition:all 0.2s ease-in-out;
++ -moz-transition:all 0.2s ease-in-out;
++ -ms-transition:all 0.2s ease-in-out;
++ -o-transition:all 0.2s ease-in-out;
++ height:26px;
++ width:34px;
++ padding:8px 0 0 0;
++ margin-top:3px;
++ margin-left:auto;
++ margin-right:auto;
++ text-align:center
++}
++#navbar .navbar-toggle figure span.line {
++ display:inline-block;
++ width:1.125em;
++ height:0.1875em;
++ background:#fff;
++ transition:0.3s;
++ position:relative;
++ vertical-align:middle;
++ margin-top:-3px
++}
++#navbar .navbar-toggle figure span.line:before,#navbar .navbar-toggle figure span.line:after {
++ display:inline-block;
++ width:1.125em;
++ height:0.1875em;
++ background:#fff;
++ position:absolute;
++ left:0;
++ content:'';
++ -webkit-transform-origin:0.28571rem center;
++ transform-origin:0.28571rem center;
++ transition:0.3s;
++ -webkit-transition:0.3s;
++ -moz-transition:0.3s;
++ -ms-transition:0.3s;
++ -o-transition:0.3s
++}
++#navbar .navbar-toggle figure span.line:before {
++ top:6px
++}
++#navbar .navbar-toggle figure span.line:after {
++ top:-6px
++}
++#navbar .navbar-toggle.opened figure {
++ background:#5caa15
++}
++#navbar .navbar-toggle.opened span {
++ color:#5caa15
++}
++#navbar .navbar-toggle.opened span.line {
++ background:transparent
++}
++#navbar .navbar-toggle.opened span.line:before,#navbar .navbar-toggle.opened span.line:after {
++ -webkit-transform-origin:50% 50%;
++ -moz-transform-origin:50% 50%;
++ transform-origin:50% 50%;
++ top:0;
++ width:23px;
++ margin-left:-2px
++}
++#navbar .navbar-toggle.opened span.line:before {
++ transform:rotate3d(0, 0, 1, 45deg);
++ -webkit-transform:rotate3d(0, 0, 1, 45deg);
++ -moz-transform:rotate3d(0, 0, 1, 45deg);
++ -ms-transform:rotate3d(0, 0, 1, 45deg);
++ -o-transform:rotate3d(0, 0, 1, 45deg);
++ left:0
++}
++#navbar .navbar-toggle.opened span.line:after {
++ transform:rotate3d(0, 0, 1, -45deg);
++ -webkit-transform:rotate3d(0, 0, 1, -45deg);
++ -moz-transform:rotate3d(0, 0, 1, -45deg);
++ -ms-transform:rotate3d(0, 0, 1, -45deg);
++ -o-transform:rotate3d(0, 0, 1, -45deg)
++}
++#navbar .navbar-oneQt {
++ display:inline;
++ float:left;
++ width:31px;
++ padding:20px 8px;
++ margin:0 15px 0 0
++}
++#navbar .navbar-oneQt:before {
++ content:attr(data-icon);
++ position:absolute;
++ top:15px;
++ left:0;
++ color:#80c342;
++ font-family:'Qt Icons';
++ line-height:1;
++ font-size:3.125em;
++ transition:all 0.2s ease-in-out;
++ -webkit-transition:all 0.2s ease-in-out;
++ -moz-transition:all 0.2s ease-in-out;
++ -ms-transition:all 0.2s ease-in-out;
++ -o-transition:all 0.2s ease-in-out
++}
++.navbar-oneQt {
++ color: #80c342 !important;
++}
++.navbar-oneQt:hover {
++ color: #80c342;
++}
++#navbar .navbar-menu {
++ width:auto;
++ float:left
++}
++.lt-ie9 #navbar {
++ border-bottom:1px solid #ddd
++}
++#mainmenu {
++ float:left;
++ list-style:none
++}
++#mainmenu li {
++ float:left;
++ margin-left:0;
++ list-style-type:none !important
++}
++#mainmenu li a {
++ display:block;
++ padding:29px 0.7em;
++ font-size:1.125em;
++ font-weight:300;
++ line-height:20px;
++ height:80px;
++ color:#26282a;
++ text-decoration:none;
++ border:0px solid #80c342;
++ -webkit-transition:all 0.2s ease-in-out;
++ box-sizing:border-box;
++ -webkit-box-sizing:border-box;
++ -moz-box-sizing:border-box;
++ *behavior:url(boxsizing.htc)
++}
++#mainmenu li a:hover {
++ color:#5caa15;
++ border-bottom:4px solid #80C342
++}
++#mainmenu li.current-menu-item a {
++ color:#5caa15;
++ border-bottom:4px solid #80C342
++}
++#menuextras, #mainmenu, #menuextraslanguages {
++ margin-bottom:0
+ }
+-
+-.navigationbar {
+- background-repeat: no-repeat;
+- height: 33px;
+- margin: 0px !important;
+- padding: 0px !important;
+- border-bottom: 1px solid rgb(209, 209, 209);
+- background-image: -moz-linear-gradient(center top , rgb(246, 245, 245), rgb(239, 239, 239));
+- background-image: -webkit-gradient( linear, left bottom, left top, color-stop(0.0, #efefef), color-stop(0.5, #f6f5f5) );
+- border-radius: 10px 10px 0px 0px;
+-}
+-
+-.navigationbar ul {
+- margin: 0px;
+- padding: 8px 0px 15px 15px;
+- height: 20px;
+- }
+-
+-.navigationbar li {
+- list-style-type: none;
+- float: left;
+- font-size: 15px;
+- }
+-
+- .navigationbar li a {
+- display: block;
+- text-decoration: none;
+- background: url('../images/arrow_bc.png');
+- background-repeat: no-repeat;
+- background-position: right;
+- padding-right: 25px;
+- font-size: inherit;
++#menuextras {
++ display:inline-block;
++ float:right;
++ list-style-type:none;
++ margin-right:0;
++ margin-left:0;
++ letter-spacing:-0.31em;
++ line-height:0
++}
++#menuextras li {
++ letter-spacing:normal;
++ float:left;
++ display:inline-block
++}
++#menuextras li a {
++ display:inline-block;
++ text-align:center;
++ height:80px;
++ border-left:1px solid #eee;
++ padding-top:14px;
++ box-sizing:border-box;
++ overflow:hidden;
++ min-width:85px;
++ font-weight:100
++}
++#menuextras li a:before {
++ display:inline-block;
++ font-family:'Qt Icons';
++ content:attr(data-icon);
++ font-size:2.125em;
++ width:100%;
++ color:#80c342;
++ line-height:1;
++ transition:all 0.2s ease-in-out;
++ -webkit-transition:all 0.2s ease-in-out;
++ -moz-transition:all 0.2s ease-in-out;
++ -ms-transition:all 0.2s ease-in-out;
++ -o-transition:all 0.2s ease-in-out
++}
++#menuextras li a:hover:before {
++ color:#5caa15
++}
++#menuextras .search.open a {
++ color:#006325
++}
++#menuextras .search a {
++ border-right:1px solid #eee
++}
++#menuextras li a span {
++ color:#bdbebf;
++ display:inline-block;
++ overflow:hidden;
++ max-height:30px;
++ transition:max-height 0.2s ease-in-out;
++ -webkit-transition:max-height 0.2s ease-in-out;
++ -moz-transition:max-height 0.2s ease-in-out;
++ -ms-transition:max-height 0.2s ease-in-out;
++ -o-transition:max-height 0.2s ease-in-out;
++ line-height:1.4;
++ font-size:0.875em
++}
++@media (min-width: 1120px) {
++ #navbar.fixed,#navbar.shadow_bottom {
++ -moz-box-shadow:0px 0px 8px rgba(0,0,0,0.2);
++ -webkit-box-shadow:0px 0px 8px rgba(0,0,0,0.2);
++ box-shadow:0px 0px 8px rgba(0,0,0,0.2)
++ }
++ #navbar.fixed #menuextras li a,#navbar.shadow_bottom #menuextras li a {
++ padding-top:9px;
++ height:50px
++ }
++ #navbar.fixed #menuextras li a span,#navbar.shadow_bottom #menuextras li a span {
++ max-height:0
++ }
++ #navbar.fixed #menuextras li a:before,#navbar.shadow_bottom #menuextras li a:before {
++ font-size:30px
++ }
++ #navbar.fixed #mainmenu li a {
++ height:50px;
++ padding:14px 0.7em
++ }
++ #navbar.fixed #mainmenu li a:hover {
++ border-bottom:4px solid #5caa15
++ }
++ #navbar.fixed .navbar-toggle {
++ padding:13px 14px 9px
++ }
++ #navbar.fixed #menuextras li.navbar-search {
++ padding:0px 0
++ }
++ #navbar.fixed #menuextras ul.menuextraslinks,#navbar.fixed #menuextras ul.menuextraslanguages {
++ display:none
++ }
++ #navbar.fixed .navbar-oneQt:before {
++ font-size:35px;
++ top:7px
++ }
++ #navbar.fixed #mainmenu li.current-menu-item a {
++ border-bottom:4px solid #80C342
+ }
+-
+-#buildversion {
+- font-style: italic;
+- font-size: small;
+- float: right;
+- margin-right: 5px;
+-}
+-
+-/*
+------------
+-headers
+------------
+-*/
+-
+-@media screen {
+- .title {
+- color: #313131;
+- font-size: 18px;
+- font-weight: normal;
+- left: 0;
+- padding-bottom: 20px;
+- padding-left: 10px;
+- padding-top: 20px;
+- border-bottom: 1px #CCC solid;
+- font-weight: bold;
+- margin-left: 0px;
+- margin-right: 0px;
+- }
+-}
+-
+-h1 {
+- margin: 0
+-}
+-
+-h2, p.h2 {
+- font: 500 16px/1.2 Arial;
+- font-weight: 100;
+- background-color: #F2F3F4;
+- padding: 4px;
+- padding-left: 14px;
+- margin-bottom: 30px;
+- margin-top: 30px;
+- margin-left: -10px;
+- margin-right: -5px;
+- border-top: #E0E0DE 1px solid;
+- border-bottom: #E0E0DE 1px solid;
+- max-width: 99%;
+- overflow: hidden;
+-}
+-
+-h2:target {
+- background-color: #F2F3D4;
+ }
+-
+-h3 {
+- font: 500 14px/1.2 Arial;
+- font-weight: 100;
+- text-decoration: underline;
+- margin-bottom: 30px;
+- margin-top: 30px;
++@media (max-width: 1120px) {
++ #navbar {
++ padding:0;
++ position:relative
++ }
++ #navbar .container {
++ max-width:100%
++ }
++ #navbar .menuextraslanguages {
++ bottom:10px !important;
++ right:0
++ }
++ #navbar .menuextraslanguages li a {
++ color:#7fc241 !important
++ }
++ #navbar .menuextraslanguages li.active a,#navbar .menuextraslanguages li a:hover {
++ border-color:#7fc241 !important
++ }
++ #navbar .container {
++ padding:0
++ }
++ #navbar .navbar-toggle {
++ display:block
++ }
++ #navbar .navbar-oneQt,#navbar.fixed .navbar-oneQt,#navbar .navbar-oneQt:hover {
++ margin-left:0;
++ height:26px;
++ width:22px;
++ padding:7px 20px 7px 15px
++ }
++ #navbar .navbar-oneQt:before {
++ left:20px
++ }
++ #navbar .navbar-menu {
++ max-height:0;
++ overflow:hidden;
++ width:100%;
++ border-top:1px solid #eee;
++ -webkit-transition:all 600ms ease-in-out;
++ -moz-transition:all 600ms ease-in-out;
++ -o-transition:all 600ms ease-in-out;
++ transition:all 600ms ease-in-out;
++ position:relative
++ }
++ #mainmenu {
++ float:none;
++ width:100%;
++ padding:0;
++ margin:0
++ }
++ #mainmenu li {
++ float:none;
++ list-style:none
++ }
++ #mainmenu li:nth-child(odd) {
++ background:rgba(0,0,0,0)
++ }
++ #mainmenu li a,#navbar.fixed #mainmenu li a {
++ padding:10px;
++ border-left:3px solid #fff;
++ height:auto;
++ width:100%
++ }
++ #mainmenu li.current-menu-item a,#navbar.fixed #mainmenu li.current-menu-item a {
++ border-bottom:none;
++ border-left:3px solid #5caa15;
++ padding:10px
++ }
++ #mainmenu li a:hover {
++ border-bottom:0;
++ padding:10px;
++ border-left:3px solid #5caa15
++ }
++ #navbar.fixed {
++ -moz-box-shadow:0px 0px 0px rgba(0,0,0,0);
++ -webkit-box-shadow:0px 0px 0px rgba(0,0,0,0);
++ box-shadow:0px 0px 0px rgba(0,0,0,0)
++ }
++ .lt-ie9 #navbar.fixed {
++ border-bottom:none
++ }
++ #menuextras li.navbar-search {
++ padding:5px 0
++ }
++ .container {
++ padding:0 2%
++ }
++ body .main {
++ margin-top:0px
++ }
+ }
+-
+-h3.fn:target {
+- background-color: #F6F6D6;
++.in-page-nav {
++ width:100%;
++ background:#eeeeee
++}
++.in-page-nav ul {
++ margin:0 auto;
++ letter-spacing:-0.31em;
++ max-width:1180px;
++ text-align:center
++}
++.in-page-nav ul li {
++ display:inline-block;
++ letter-spacing:normal
++}
++.in-page-nav ul li a {
++ color:#26282a;
++ padding:25px 10px;
++ display:inline-block
++}
++body.qt-account #navbar .navbar-oneQt {
++ width:auto;
++ height:auto
++}
++body.qt-account #navbar .navbar-oneQt:before {
++ left:0;
++ position:relative;
++ display:inline-block;
++ vertical-align:middle;
++ top:0;
++ margin-right:20px
++}
++body.qt-account #navbar .navbar-oneQt h2 {
++ margin:0;
++ color:#000;
++ display:inline-block;
++ vertical-align:middle
++}
++.landing header[role="banner"] {
++ background:#26282a
++}
++.landing header[role="banner"] figure {
++ max-width:1180px;
++ margin:auto;
++ position:relative
++}
++.landing header[role="banner"] figure img {
++ max-width:100%
++}
++.landing header[role="banner"] figcaption {
++ color:#fff;
++ position:absolute;
++ left:0px;
++ width:100%;
++ text-align:center
++}
++.landing header[role="banner"] figcaption.top {
++ top:0
++}
++.landing header[role="banner"] figcaption.bottom {
++ bottom:0
++}
++.landing header[role="banner"] figcaption h1 {
++ margin:50px auto 0 auto;
++ max-width:70%;
++ font-weight:600
++}
++.landing header[role="banner"] figcaption h3 {
++ margin-bottom:40px
++}
++.cookies_yum {
++ background-color:#006325;
++ display:none;
++ width:100%
++}
++.cookies_yum img {
++ width:25px;
++ top:6px;
++ display:inline-block;
++ position:absolute;
++ left:6px
++}
++.cookies_yum div {
++ margin:0 auto;
++ max-width:1180px;
++ min-height:30px;
++ padding:6px 0px 6px 0px;
++ position:relative
++}
++.cookies_yum p {
++ color:white;
++ margin:0px;
++ font-size:0.79em;
++ display:inline-block;
++ line-height:1.2;
++ padding:0 30px 0 40px
++}
++.cookies_yum p a {
++ white-space:nowrap
++}
++.cookies_yum a:hover {
++ color:white
++}
++.cookies_yum .close {
++ width:15px;
++ height:15px;
++ background-image:url("../images/cookiebar-x.png");
++ background-size:15px 30px;
++ background-position:top left;
++ cursor:pointer;
++ top:6px;
++ right:6px;
++ position:absolute
++}
++.cookies_yum .close:hover {
++ background-position:bottom left
++}
++#bottom_header {
++ display:block;
++ position:absolute;
++ width:100%;
++ z-index:50;
++ padding-top:15px
++}
++#bottom_header .container {
++ overflow:visible
++}
++#bottom_header .left {
++ font-weight:bolder
++}
++#bottom_header a {
++ color:white;
++ transition-duration:0.3s
++}
++#bottom_header .left a:hover {
++ padding-left:10px
++}
++.fixed .menuextraslanguages {
++ opacity:0;
++ visibility:hidden
++}
++@media (max-width: 1120px) {
++ .fixed .menuextraslanguages {
++ opacity:1 !important;
++ visibility:visible !important
++ }
+ }
+-
+-h3.fn, span.fn {
+- border-width: 1px;
+- border-style: solid;
+- border-color: #E6E6E6;
+- -moz-border-radius: 7px 7px 7px 7px;
+- -webkit-border-radius: 7px 7px 7px 7px;
+- border-radius: 7px 7px 7px 7px;
+- background-color: #F6F6F6;
+- word-spacing: 3px;
+- padding: 5px 5px;
+- text-decoration: none;
+- font-weight: bold;
+- max-width: 75%;
+- font-size: 14px;
+- margin: 0px;
+- margin-top: 45px;
++#navbar .menuextraslanguages {
++ position:absolute;
++ right:0;
++ bottom:-35px;
++ transition:all 0.2s ease-in-out;
++ -webkit-transition:all 0.2s ease-in-out;
++ -moz-transition:all 0.2s ease-in-out;
++ -ms-transition:all 0.2s ease-in-out;
++ -o-transition:all 0.2s ease-in-out
++}
++#navbar .menuextraslanguages li {
++ display:inline;
++ list-style:none;
++ margin-left:3px;
++ padding:0px 4px;
++ font-size:0.6875em
++}
++#navbar .menuextraslanguages li.dark a {
++ color:#868482
++}
++#navbar .menuextraslanguages li.dark a:hover {
++ border:2px solid #868482
++}
++#navbar .menuextraslanguages li.active.dark a {
++ border-color:#868482;
++ color:#868482
++}
++#navbar .menuextraslanguages a {
++ color:#fff;
++ padding:2px 4px;
++ border:2px solid transparent
++}
++#navbar .menuextraslanguages a:hover,#navbar .menuextraslanguages li.active a {
++ border:2px solid #fff;
++ color:#fff
++}
++#bottom_header .dark,#bottom_header .dark.active {
++ color:#868482;
++ transition-duration:0.3s;
++ border-color:#868482 !important
++}
++#navbar .big_bar {
++ width:100%;
++ height:100px;
++ background-color:#80C342;
++ display:none;
++ position:relative
++}
++#navbar .big_bar.search {
++ height:auto;
++ overflow:hidden;
++ display:none
++}
++#navbar .big_bar ::-webkit-input-placeholder {
++ color:#fff
++}
++#navbar .big_bar :-moz-input-placeholder {
++ color:#fff
++}
++#navbar .big_bar ::-moz-input-placeholder {
++ color:#fff
++}
++#navbar .big_bar :-ms-input-placeholder {
++ color:#fff
++}
++#navbar .big_bar:hover>div .big_bar_button.account {
++ background-position:right bottom
++}
++#navbar .big_bar.account h1 {
++ padding-top:20px
++}
++#navbar .big_bar.account h1,#navbar .big_bar.account h1 a {
++ color:#FFF;
++ margin-bottom:5px
++}
++#navbar .big_bar.account h1 a:hover {
++ color:#328930
++}
++#navbar .big_bar_button:hover {
++ background-position:left bottom;
++ cursor:pointer
++}
++#navbar .big_bar_button.account {
++ background-position:right top
++}
++#navbar .big_bar input.big_bar_search {
++ background:none repeat scroll 0 0 transparent;
++ border:medium none;
++ color:#fff;
++ display:block;
++ float:left;
++ font-size:4em;
++ outline:0 none;
++ width:70%;
++ line-height:1.3;
++ height:auto;
++ margin:10px 5%;
++ padding:0;
++ box-sizing:border-box;
++ -webkit-box-sizing:border-box;
++ -moz-box-sizing:border-box;
++ *behavior:url(boxsizing.htc)
++}
++#navbar .big_bar_button {
++ background-color:transparent;
++ border:none;
++ width:18%;
++ transition-duration:0.3s;
++ display:block;
++ float:left;
++ position:relative;
++ font-family:'QT Icons';
++ font-size:3.5em;
++ color:#fff;
++ margin:15px 2% 0 0 !important;
++ text-align:right;
++ padding-right:2px !important;
++ transition:all 0.2s ease-in-out;
++ -webkit-transition:all 0.2s ease-in-out;
++ -moz-transition:all 0.2s ease-in-out;
++ -ms-transition:all 0.2s ease-in-out;
++ -o-transition:all 0.2s ease-in-out
++}
++#navbar .big_bar_button:focus,#navbar .big_bar_button:hover {
++ outline:0;
++ color:#ebebeb
++}
++.hero_slide>div {
++ width:80%;
++ margin:0 auto
++}
++.hero_slide>div:first-child>div {
++ width:80%;
++ margin:0 auto
++}
++.hero_slide .content {
++ margin-top:70px
++}
++.hero_bar {
++ padding-top:50px;
++ padding-bottom:18px
++}
++.hero_bar p {
++ font-size:0.875em;
++ text-align:center
++}
++.hero_bar .arrow {
++ bottom:65px;
++ display:block;
++ margin:0 auto;
++ position:relative;
++ right:260px;
++ width:230px
++}
++.hero_bar .comment {
++ margin:0
++}
++#footerbar {
++ background:#26282a;
++ color:#fff
++}
++#footerbar.fixed {
++ bottom:0;
++ left:0;
++ width:100%
++}
++#footerbar .footer-main .footer-nav {
++ display:inline;
++ float:left
++}
++#footerbar .footer-main .footer-nav li {
++ float:left;
++ margin-right:1em
++}
++#footerbar .footer-main .footer-nav li a {
++ display:block;
++ padding:31px 10px 15px 0;
++ line-height:20px;
++ height:20px;
++ color:#d6d6d6
++}
++#footerbar .footer-main .footer-nav li a:hover,#footerbar .footer-main .footer-nav li.current-menu-item a {
++ color:#eee
++}
++#footerbar .footer-main .footer-nav .sub-menu {
++ margin-left:0;
++ margin-bottom:0
++}
++#footerbar .footer-main .footer-nav .sub-menu li {
++ float:none
++}
++#footerbar .footer-main .footer-nav .sub-menu ul {
++ padding:1px 1em;
++ font-size:0.786em;
++ line-height:8px;
++ float:none;
++ color:#5d5b59;
++ margin-bottom:0
++}
++#footerbar .footer-main .footer-nav .sub-menu li a {
++ padding:1px 0;
++ font-size:0.786em;
++ line-height:8px;
++ float:none;
++ color:#d6d6d6
++}
++#footerbar .footer-main .footer-nav .sub-menu li a:hover,#footerbar .footer-main .footer-nav .sub-menu li.current-menu-item a {
++ color:#eee
++}
++#footerbar .footer-main .footer-logo {
++ display:inline;
++ float:right;
++ padding:29px 0 28px 10px;
++ margin-left:30px;
++ width:56px
++}
++#footerbar .footer-main .footer-logo:before {
++ content:attr(data-icon);
++ font-family:'Qt Icons';
++ width:100%;
++ line-height:1.2;
++ display:inline-block;
++ font-size:1.875em;
++ color:#706e6d
++}
++#footerbar .footer-main .footer-logo:hover {
++ padding:31px 0 26px 10px
++}
++#footerbar .footer-main .footer-social {
++ display:inline;
++ float:right;
++ padding-top:31px
++}
++#footerbar .footer-main .footer-social>div {
++ margin-left:0.1em;
++ margin-bottom:10px
++}
++#footerbar .disclaimer {
++ font-size:0.786em;
++ line-height:2.73;
++ color:#868584;
++ padding-top:20px;
++ padding-bottom:0.5%
++}
++#footerbar .disclaimer a {
++ color:#bdbebf
++}
++#footerbar .disclaimer a:hover {
++ color:#d6d6d6
++}
++#footerbar .disclaimer ul li {
++ float:left;
++ vertical-align:middle;
++ margin-left:1.18em
++}
++#footerbar .disclaimer ul li:first-child {
++ margin-left:0
++}
++#footerbar .disclaimer ul.lang-selector a {
++ color:#506a34;
++ color:rgba(128,195,66,0.3)
++}
++#footerbar .disclaimer ul.lang-selector a:hover {
++ color:#80c342;
++ color:rgba(128,195,66,0.7)
++}
++#menu-footer-menu, #menu-footer-menu ul {
++ margin-left:0;
++ margin-bottom:0
++}
++@font-face {
++ font-family:'Open Sans';
++ font-style:normal;
++ font-weight:300;
++ src:local("Open Sans Light"),local("OpenSans-Light"),url(//fonts.gstatic.com/s/opensans/v10/DXI1ORHCpsQm3Vp6mXoaTYnF5uFdDttMLvmWuJdhhgs.ttf) format("truetype")
++}
++@font-face {
++ font-family:'Open Sans';
++ font-style:normal;
++ font-weight:400;
++ src:local("Open Sans"),local("OpenSans"),url(//fonts.gstatic.com/s/opensans/v10/cJZKeOuBrn4kERxqtaUH3aCWcynf_cDxXwCLxiixG1c.ttf) format("truetype")
++}
++@font-face {
++ font-family:'Open Sans';
++ font-style:normal;
++ font-weight:600;
++ src:local("Open Sans Semibold"),local("OpenSans-Semibold"),url(//fonts.gstatic.com/s/opensans/v10/MTP_ySUJH_bn48VBG8sNSonF5uFdDttMLvmWuJdhhgs.ttf) format("truetype")
++}
++@font-face {
++ font-family:'Open Sans';
++ font-style:normal;
++ font-weight:700;
++ src:local("Open Sans Bold"),local("OpenSans-Bold"),url(//fonts.gstatic.com/s/opensans/v10/k3k702ZOKiLJc3WVjuplzInF5uFdDttMLvmWuJdhhgs.ttf) format("truetype")
++}
++@font-face {
++ font-family:'Open Sans';
++ font-style:normal;
++ font-weight:800;
++ src:local("Open Sans Extrabold"),local("OpenSans-Extrabold"),url(//fonts.gstatic.com/s/opensans/v10/EInbV5DfGHOiMmvb1Xr-honF5uFdDttMLvmWuJdhhgs.ttf) format("truetype")
++}
++@font-face {
++ font-family:'Droid Sans Mono';
++ font-style:normal;
++ font-weight:400;
++ src:local("Droid Sans Mono"),local("DroidSansMono"),url(//fonts.gstatic.com/s/droidsansmono/v7/ns-m2xQYezAtqh7ai59hJUYuTAAIFFn5GTWtryCmBQ4.woff) format("woff")
++}
++@font-face {
++ font-family:'Qt Icons';
++ src:url("../style/icomoon.eot?-tgjuoj");
++ src:url("../style/icomoon.eot?#iefix-tgjuoj") format("embedded-opentype"),url("../style/icomoon.woff?-tgjuoj") format("woff"),url("../style/icomoon.ttf?-tgjuoj") format("truetype"),url("../style/icomoon.svg?-tgjuoj#icomoon") format("svg");
++ font-weight:normal;
++ font-style:normal
++}
++.clearfix:before,.clearfix:after {
++ content:" ";
++ display:table
++}
++.clearfix:after {
++ clear:both
+ }
+-
+-.name {
+- color: #1A1A1A
++.clearfix {
++ *zoom:1
+ }
+-
+-.type {
+- color: #808080
++html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video {
++ margin:0;
++ padding:0;
++ border:0;
++ font-size:100%
+ }
+-
+-@media print {
+- .title {
+- color: #0066CB;
+- font-size: 32px;
+- font-weight: normal;
+- left: 0;
+- position: absolute;
+- right: 0;
+- top: 0;
+- }
++html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,caption,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video {
++ vertical-align:baseline
+ }
+-
+-/*
+------------------
+-table styles
+------------------
+-*/
+-
+-.table img {
+- border: none;
+- margin-left: 0px;
+- -moz-box-shadow: 0px 0px 0px #fff;
+- -webkit-box-shadow: 0px 0px 0px #fff;
+- box-shadow: 0px 0px 0px #fff;
++body {
++ font-family:“Open Sans”, Arial, Helvetica, sans-serif;
++ line-height:1.5;
++ font-weight:300
+ }
+-
+-/* table with border alternative colours*/
+-
+-table, pre {
+- -moz-border-radius: 7px 7px 7px 7px;
+- -webkit-border-radius: 7px 7px 7px 7px;
+- border-radius: 7px 7px 7px 7px;
+- background-color: #F6F6F6;
+- border: 1px solid #E6E6E6;
+- border-collapse: separate;
+- font-size: 12px;
+- line-height: 1.2;
+- margin-bottom: 25px;
+- margin-left: 15px;
+- font-size: 12px;
+- line-height: 1.2;
+- margin-bottom: 25px;
+- margin-left: 15px;
++h1,h2,h3,h4,h5,h6 {
++ font-weight:300
+ }
+-
+- table tr.even {
+- background-color: white;
+- color: #66666E;
+- }
+-
+- table tr.odd {
+- background-color: #F6F6F6;
+- color: #66666E;
+- }
+-
+- table tr:target {
+- background-color: #F6F6D6;
+- }
+-
+- table thead {
+- text-align: left;
+- padding-left: 20px;
+- background-color: #e1e0e0;
+- border-left: none;
+- border-right: none;
+- }
+-
+- table thead th {
+- padding-top: 5px;
+- padding-left: 10px;
+- padding-bottom: 5px;
+- border-bottom: 2px solid #D1D1D1;
+- padding-right: 10px;
+- }
+-
+- table td {
+- padding: 3px 15px 3px 20px;
+- border-bottom: #CCC dotted 1px;
+- }
+-
+- table th {
+- text-align: left;
+- padding-left: 20px;
+- }
+-
+- table p {
+- margin: 0px
+- }
+-
+-/* table bodless & white*/
+-
+-.borderless {
+- border-radius: 0px 0px 0px 0px;
+- background-color: #fff;
+- border: 1px solid #fff;
++.context h2,.context h3,.context h4,.context h5,.context h6 {
++ margin:1.5em 0 1em
+ }
+-
+-.borderless td {
+- border: none;
+- border-bottom: #fff dotted 1px;
+- }
+-
+-.borderless tr {
+- background-color: #FFF;
+- color: #66666E;
+- }
+-
+-/*
+------------
+-List
+------------
+-*/
+-
+-ul {
+- margin-top: 10px;
++.context h1 {
++ margin-bottom:1em;
++ font-size:3.125em
+ }
+-
+-li {
+- margin-bottom: 10px;
+- padding-left: 8px;
+- list-style: outside;
+- list-style-type: square;
+- text-align: left;
++.context h3.fn,.context h3.flags {
++ color:#26282a;
++ font-size:1.46em;
++ padding:15px 0 15px 0;
++ border-bottom:2px #eee solid;
++ word-wrap:break-word
+ }
+-
+-ol {
+- margin: 10px;
+- padding: 0;
++.context h3.fn .name,
++.context h3 span.type,
++.qmlname span.name {
++ font-weight: 400
+ }
+-
+- ol > li {
+- margin-left: 30px;
+- padding-left: 8px;
+- list-style: decimal;
+- }
+-
+-.centerAlign {
+- text-align: left
++.qmlname {
++ font-size:1.46em
+ }
+-
+-.cpp {
+- display: block;
+- margin: 10px;
+- overflow: auto;
+- padding: 20px 20px 20px 20px;
++.qmlproto table {
++ border:none;
++ border-bottom:2px #eee solid
+ }
+-
+-.js {
+- display: block;
+- margin: 10px;
+- overflow: auto;
+- padding: 20px 20px 20px 20px;
++.qmlproto table p {
++ max-width:100%
+ }
+-
+-.footerNavi {
+- width: auto;
+- text-align: right;
+- margin-top: 50px;
+- z-index: 1;
++.qmlproto table tr {
++ background-color:#fff
+ }
+-
+-.memItemLeft {
+- padding-right: 3px
++.qmlname td, .qmlname th {
++ border:none;
++ text-align:left;
++ padding:5px 0 0 0
+ }
+-
+-.memItemRight {
+- padding: 3px 15px 3px 0
++.qmlreadonly,.qmldefault {
++ padding:0 5px 0 5px;
++ font-size:0.75em;
++ background-color:#eee;
++ float:right
+ }
+-
+-.qml {
+- display: block;
+- margin: 10px;
+- overflow: auto;
+- padding: 20px 20px 20px 20px;
++.qmlreadonly {
++ color:#414141
+ }
+-
+ .qmldefault {
+- padding-left: 5px;
+- float: right;
+- color: red;
++ color:#D14141
+ }
+-
+-.qmlreadonly {
+- padding-left: 5px;
+- float: right;
+- color: #254117;
+-}
+-
+ .rightAlign {
+- padding: 3px 5px 3px 10px;
+- text-align: right;
+-}
+-
+-.qmldoc {
+- margin-left: 15px
++ padding:3px 5px 3px 10px;
++ text-align:right
+ }
+-
+-/*
+------------
+-Content table
+------------
+-*/
+-
+-@media print {
+- .toc {
+- float: right;
+- clear: right;
+- padding-bottom: 10px;
+- padding-top: 50px;
+- width: 100%;
+- background-image: url('../images/bgrContent.png');
+- background-position: top;
+- background-repeat: no-repeat;
+- }
++article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
++ display:block
+ }
+-
+-@media screen {
+- .toc {
+- clear: both;
+- clear: right;
+- position: relative;
+- top: 83px;
+- float: right;
+- vertical-align: top;
+- -moz-border-radius: 7px 7px 7px 7px;
+- -webkit-border-radius: 7px 7px 7px 7px;
+- border-radius: 7px 7px 7px 7px;
+- background: #FFF url('../images/bgrContent.png');
+- background-position: top;
+- background-repeat: repeat-x;
+- border: 1px solid #E6E6E6;
+- padding-left: 5px;
+- padding-bottom: 10px;
+- height: auto;
+- width: 200px;
+- text-align: left;
+- margin-left: 20px;
+- }
++body {
++ line-height:1;
++ font-family:"Open Sans", Arial, Helvetica, sans-serif;
++ transition-duration:1s
+ }
+-
+-.toc h3 {
+- text-decoration: none
++ol,ul {
++ list-style:none
+ }
+-
+-.toc h3 {
+- font: 500 14px/1.2 Arial;
+- font-weight: 100;
+- padding: 0px;
+- margin: 0px;
+- padding-top: 5px;
+- padding-left: 5px;
++.context ol,.context ul {
++ margin-top:0.75em;
++ margin-left:20px
+ }
+-
+-.toc ul {
+- padding-left: 10px;
+- padding-right: 5px;
+- padding-top: 10px;
++.mainContent ol>li {
++ list-style-type:decimal
+ }
+-
+-.toc ul li {
+- margin-left: 15px;
+- list-style-image: url('../images/blu_dot.png');
+- list-style: outside;
+- marker-offset: 0px;
+- margin-bottom: 8px;
+- padding-left: 0px;
+- }
+-
+-.toc .level1 {
+- border: none
++blockquote,q {
++ quotes:none
+ }
+-
+-.toc .level2 {
+- border: none;
+- margin-left: 25px;
++blockquote:before,blockquote:after,q:before,q:after {
++ content:'';
++ content:none;
++ width:100%
+ }
+-
+-.level3 {
+- border: none;
+- margin-left: 30px;
++table {
++ border-collapse:collapse;
++ border-spacing:0;
++ margin-bottom:25px;
++ width:100%
+ }
+-
+-.clearfix {
+- clear: both
++a {
++ color:#5caa15;
++ text-decoration:none;
++ transition-duration:0.3s
+ }
+-
+-/* start index box */
+-
+-.indexbox {
+- width: 100%;
+- display: inline-block;
++a:hover {
++ color:#46a2da
+ }
+-
+-.indexbox .indexIcon {
+- width: 11%
+- }
+-
+- .indexbox .indexIcon span {
+- display: block
+- }
+-
+-.indexboxcont {
+- display: block
++.main,.navbar-header,#footerbar>div {
++ max-width:1500px;
++ width:95%;
++ margin:0 auto
+ }
+-
+-.indexboxcont .sectionlist {
+- display: inline-block;
+- vertical-align: top;
+- width: 32.5%;
+- padding: 0;
+- }
+-
+- .indexboxcont .sectionlist ul {
+- margin-bottom: 20px
+- }
+-
+- .indexboxcont .sectionlist ul li {
+- line-height: 1.5
+- }
+-
+-.indexboxcont .indexIcon {
+- width: 11%;
+- *width: 18%;
+- _width: 18%;
+- overflow: hidden;
+- }
+-
+-.indexboxcont .section {
+- float: left
+- }
+-
+-.indexboxcont .section {
+- display: inline-block;
+- width: 49%;
+- *width: 42%;
+- _width: 42%;
+- padding: 0 2% 0 1%;
+- vertical-align: top;
+- }
+-
+- .indexboxcont .section p {
+- padding-top: 20px;
+- padding-bottom: 20px;
+- }
+-
+-.indexboxcont:after {
+- content: ".";
+- display: block;
+- height: 0;
+- clear: both;
+- visibility: hidden;
++.main {
++ margin-top:100px
+ }
+-
+-/*
+------------
+-Landing page
+------------
+-*/
+-
+-.col-group {
+- white-space: nowrap;
+- vertical-align: top;
++.main_index {
++ background-color:#fff
+ }
+-
+-.col-1 {
+- display: inline-block;
+- white-space: normal;
+- width: 70%;
+- height: 100%;
+- float: left;
++.sectionlist {
++ margin-bottom:2em
++}
++[class*="col-"] {
++ letter-spacing:normal
++}
++.landing,.main_index .row {
++ letter-spacing:-0.31em
++}
++.main_index .row>div {
++ letter-spacing:normal
++}
++.col-1,.context {
++ width:80%;
++ display:inline-block;
++ background-color:#fff;
++ padding:35px;
++ -webkit-box-sizing:border-box;
++ -moz-box-sizing:border-box;
++ -ms-box-sizing:border-box;
++ box-sizing:border-box
++}
++.col-1 h2 {
++ font-size:2.1875em;
++ font-weight:300;
++ line-height:1.1;
++ margin-bottom:0.83em;
++ margin-top:1em
++}
++.icons1of3 img {
++ display:inline-block;
++ float:left;
++ margin-right:0.75em;
++ margin-top:-5px;
++ width:2.75em
++}
++div.multi-column {
++ position:relative
++}
++div.multi-column div {
++ display:-moz-inline-box;
++ display:inline-block;
++ vertical-align:top;
++ margin-top:1em;
++ margin-right:2em;
++ width:16em
++}
++.sidebar {
++ display:block;
++ float:right;
++ -webkit-box-sizing:border-box;
++ -moz-box-sizing:border-box;
++ -ms-box-sizing:border-box;
++ box-sizing:border-box;
++ width:20%;
++ padding-left:30px
++}
++.toc,.sectionlist {
++ padding:35px;
++ background-color:#fff;
++ margin-bottom:2em
++}
++.sidebar-content:empty {
++ display:none;
++ visibility:hidden
++}
++.col-2 h2,.toc h3,.sidebar-content h2,.sidebar-content h3,.sectionlist h2 {
++ font-weight:400;
++ margin-bottom:2em
++}
++.toc h3 a {
++ color:#404244
++}
++.title {
++ font-size:3em;
++ font-weight:300;
++ letter-spacing:-1px;
++ line-height:1.15em;
++ margin-bottom:0.5em;
++ word-wrap:break-word
++}
++.navigationbar,col-1 h2 {
++ font-size:0.75em
++}
++.navigationbar h1 {
++ font-size:3.125em;
++ margin-bottom:1em;
++ margin-top:1em
+ }
+-
+-.col-1 h1 {
+- margin: 20px 0 0 0
+- }
+-
+-.col-2 {
+- display: inline-block;
+- white-space: normal;
+- width: 25%;
+- margin: 0 0 0 50px;
++.navigationbar li {
++ display:inline-block;
++ margin-right:5px;
++ position:relative;
++ padding-right:10px;
++ color:#585a5c
+ }
+-
+-.sectionlist {
+- width: 100% !important
++.navigationbar li a {
++ color:#58585c
+ }
+-
+-/*
+-Additions from Qt Project
+-*/
+-
+ body {
+- background: #E8E8E8;
+- margin: 0px;
+- font-family: "Open Sans",sans-serif !important;
++ background-color:#eee;
++ color:#404244
+ }
+-
+-.qt13a-twoCol {
+- width: 23.46939%;
+- float: left;
+- margin-right: 2.04082%;
+- display: inline;
++.sectionlist li {
++ margin-bottom:5px
+ }
+-
+-.qt13a-fourCol {
+- width: 48.97959%;
+- float: left;
+- margin-right: 2.04082%;
+- display: inline;
++dd {
++ padding-bottom:0.25em;
++ padding-left:2em
+ }
+-
+-.qt13a-sixCol {
+- width: 70.4898%;
+- float: left;
+- margin-right: 2.04082%;
+- display: inline;
++.col-1 ul {
++ margin-bottom:1.56em
+ }
+-
+-.qt13a-eightCol {
+- width: 100%;
+- float: left;
+- margin-right: 2.04082%;
+- display: inline;
++.mainContent li {
++ margin-bottom:0.8em;
++ line-height:1.25em
+ }
+-
+-.qt13a-fiveCol {
+- width: 17.35537%;
+- float: left;
+- margin-right: 3.30579%;
+- display: inline;
++.mainContent p {
++ line-height:1.56em;
++ margin-bottom:1.5em;
++ color:#404244;
++ max-width:85%
+ }
+-
+-.qt13a-fiveCol:nth-child(2n) {
+- float: left;
+- margin-right: 3.30579%;
++.mainContent b {
++ font-weight:400
+ }
+-
+-.qt13a-omega {
+- float: right;
+- margin-right: 0;
+- *margin-left: -20px;
+- display: inline;
++.context ul {
++ margin-bottom:1.5em
+ }
+-
+-.qt13a-last {
+- float: right;
+- margin-right: 0;
+- *margin-left: -20px;
+- display: inline;
++.mainContent ul ul {
++ margin-top:0.5em
+ }
+-
+-.qt13a-container {
+- *zoom: 1;
+- padding-left: 20px;
+- padding-right: 20px;
+- margin-left: auto;
+- margin-right: auto;
+- max-width: 1045px;
++.mainContent .naviNextPrevious {
++ margin-top:25px;
++ max-width:100%
+ }
+-
+-.qt13a-container:after {
+- content: "";
+- display: table;
+- clear: both;
++.naviNextPrevious.headerNavi {
++ display:none
+ }
+-
+-.qt13a-container.qt13a-dynamic {
+- max-width: 1295px
++.nextPage {
++ float:right
+ }
+-
+-.qt13a-no-bg-img {
+- background-image: none !important
++.prevPage:before {
++ content:"< "
+ }
+-
+-.qt13a-wrapper {
+- overflow: hidden
++.nextPage:after {
++ content:" >"
+ }
+-
+-.content-view {
+- position: relative;
+- overflow: hidden;
++.navigationbar li:after {
++ color:#404244;
++ content:"›";
++ display:inline-block;
++ font-size:1.5em;
++ line-height:1;
++ position:absolute;
++ right:-2px;
++ top:-4px
+ }
+-
+-#qt13a-header {
+- background: url('../images/Qt-header-bg.jpg') repeat;
+- min-height: 126px;
+- padding: 0;
+- margin: 0;
+- min-width: 1045px;
+- margin-bottom: 18px;
++.navigationbar ul:last li a {
++ color:#80c342
+ }
+-
+- #qt13a-header .qt13a-nav-divider-left {
+- border-left: 1px solid #35322f;
+- padding-left: 10px;
+- margin-left: 5px;
+- font-size: 13px;
+- }
+-
+- #qt13a-header #qt13a-title_nav {
+- padding-top: 34px;
+- width: 87.37374%;
+- float: left;
+- margin-right: 1.0101%;
+- display: inline;
+- float: right;
+- margin-right: 0;
+- *margin-left: -20px;
+- display: inline;
+- }
+-
+- #qt13a-header .qt13a-gradient {
+- background: url('../images/Qt-gradient.png') repeat-x;
+- background-position: bottom;
+- margin: 0;
+- min-height: 126px;
+- padding: 0;
+- }
+-
+- #qt13a-header p.qt13a-title {
+- font-size: 24px;
+- margin: 0 0 0 0px;
+- letter-spacing: -1px;
+- color: #35322f;
+- font-weight: 600;
+- }
+-
+- #qt13a-header p.qt13a-title a {
+- font-weight: 600;
+- color: #35322f;
++.sub-navigation {
++ margin-top:10px
++}
++.navigationbar li:last-child:after,.sub-navigation li:after {
++ content:none
++}
++.navigationbar {
++ margin-bottom:10px
++}
++#buildversion {
++ font-style:italic;
++ font-size:small;
++ float:right
++}
++.copy-notice {
++ width:65%;
++ font-size:0.75em;
++ margin-top:50px;
++ margin-bottom:25px;
++ line-height:1.75em;
++ color:#585a5c
++}
++li a.active {
++ color:#585a5c
++}
++.flowList {
++ padding:25px
++}
++.alphaChar {
++ font-size:2em;
++ position:absolute
++}
++.flowList.odd {
++ background-color:#eee
++}
++.context ul>li,.doc-column ul>li {
++ list-style-image:url("list_arrow.png");
++ margin-left:15px;
++ color:#404244;
++ line-height:1.16em
++}
++.mainContent table p {
++ margin:0px;
++ padding:0px
++}
++.mainContent table p {
++ margin:0px;
++ padding:0px;
++ min-height:2em
++}
++.context h4,.context h3,.context h2 {
++ font-size:2.1875em
++}
++.context p img {
++ margin-top:0.75em;
++ max-width:100%
++}
++.context table {
++ vertical-align:initial
++}
++table .odd {
++ background-color:#eee
++}
++table thead {
++ text-align:left;
++ padding-left:20px
++}
++table,table td,table th {
++ border:1px solid #eee
++}
++table td,table th {
++ padding:5px 20px;
++ line-height:1.3
++}
++table.alignedsummary,table.propsummary {
++ width:initial
++}
++div.main_index .row:first-child {
++ border-bottom:1px solid #eee
++}
++div.main_index .row {
++ position:relative
++}
++div.main_index .row>div {
++ display:inline-block;
++ width:50%;
++ vertical-align:top;
++ padding:50px;
++ -webkit-box-sizing:border-box;
++ -moz-box-sizing:border-box;
++ -ms-box-sizing:border-box;
++ box-sizing:border-box
++}
++div.main_index h2 {
++ font-size:2.1875em;
++ margin-bottom:1em
++}
++#search_bar {
++ width:40%;
++ float:right
++}
++div.main_index .row:after {
++ content:"";
++ position:absolute;
++ top:0;
++ right:50%;
++ height:100%;
++ width:1px;
++ background-color:#eee
++}
++div.table {
++ overflow-x:auto
++}
++p.qt_commercial {
++ border:3px solid #5caa15;
++ margin:0 auto;
++ padding:15px;
++ width:28%;
++ text-align:center;
++ clear:both
++}
++h1.qt_commercial {
++ padding:20px;
++ background-color:#5caa15;
++ display:inline;
++ float:right;
++ font-size:1.25em;
++ line-height:1.25em;
++ height:1.25em;
++ color:#fff
++}
++div.qt_commercial {
++ border-top:5px solid #5caa15;
++ margin-bottom:50px
++}
++pre {
++ background-color:#404244;
++ color:#fff;
++ display:block;
++ font-family:"Droid Sans Mono";
++ line-height:1.5;
++ overflow-x:auto;
++ margin-bottom:25px;
++ overflow-x:auto;
++ padding:25px;
++ margin-top:0.75em
++}
++.copy_text {
++ background-color:#46a2da;
++ color:#fff;
++ border:2px solid #46a2da;
++ padding:10px 16px;
++ margin-left:-10px;
++ margin-top:-50px;
++ position:absolute;
++ opacity:0;
++ cursor:pointer;
++ float:right
++}
++.copy_text:hover {
++ background-color:#fff;
++ color:#46a2da
++}
++code,.codelike {
++ font-family:"Droid Sans Mono"
++}
++h3.fn code {
++ font-size:0.75em;
++ float:right;
++ background-color:#eee;
++ padding:3px;
++ margin: 3px 0 0 20px
++}
++pre:hover>.copy_text {
++ display:inline-block;
++ opacity:1;
++ transition:0.5s ease
++}
++#main_title_bar {
++ letter-spacing:-0.31em
++}
++#main_title_bar .search_bar {
++ letter-spacing:normal;
++ width:50%;
++ display:inline-block;
++ -webkit-box-sizing:border-box;
++ -moz-box-sizing:border-box;
++ -ms-box-sizing:border-box;
++ box-sizing:border-box;
++ vertical-align:middle
++}
++#main_title_bar h1 {
++ letter-spacing:normal;
++ width:50%;
++ display:inline-block;
++ -webkit-box-sizing:border-box;
++ -moz-box-sizing:border-box;
++ -ms-box-sizing:border-box;
++ box-sizing:border-box;
++ vertical-align:middle
++}
++#main_title_bar .search_bar * {
++ letter-spacing:normal;
++ padding:0;
++ margin:0;
++ border:none
++}
++@media (max-width: 980px) {
++ body {
++ font-size:calc-em(14px)
+ }
+-
+- #qt13a-header p.qt13a-title a:hover {
+- color: #35322f;
+- text-decoration: none;
++ #main_title_bar {
++ letter-spacing:-0.31em;
++ width:100%
+ }
+-
+- #qt13a-header #qt13a-title {
+- padding: 0px 0 0 0px;
+- padding-bottom: 0px;
+- }
+-
+- #qt13a-header #qt13a-logo {
+- float: left;
+- width: 11.61616%;
+- float: left;
+- margin-right: 1.0101%;
+- display: inline;
+- margin: 20px 0px 10px 0;
+- min-width: 50px;
+- }
+-
+- #qt13a-header #qt13a-logo .qt13a-site-logo {
+- background: url('../images/Qt-logo.png') no-repeat;
+- text-indent: -100em;
+- overflow: hidden;
+- display: block;
+- height: 90px;
+- -moz-box-shadow: none;
+- -webkit-box-shadow: none;
+- box-shadow: none;
++ #main_title_bar>h1,#main_title_bar .search_bar {
++ display:block;
++ width:100%
+ }
+-
+- #qt13a-header #qt13a-logo img {
+- float: left;
+- border: 0;
+- -moz-box-shadow: none;
+- -webkit-box-shadow: none;
+- box-shadow: none;
++ #main_title_bar .search_bar {
++ margin-bottom:15px
+ }
+-
+- #qt13a-header .qt13a-nav {
+- background: none
+- }
+-
+- #qt13a-header .qt13a-nav .qt13a-nav-divider-left {
+- border-left: 1px solid #35322f;
+- padding-left: 20px;
++ .main {
++ margin-top:0px
+ }
+-
+- #qt13a-header .qt13a-nav .qt13a-nav-small a {
+- font-size: 13px
++ .main_index .row {
++ border:none !important
+ }
+-
+- #qt13a-header .qt13a-nav ul {
+- margin: 0 0 0 0px;
+- padding: 11px 0 0;
+- background: none;
++ .title {
++ font-size:1.5em;
++ font-weight:400;
++ word-wrap:break-word
++ }
++ .col-1,.context,.naviNextPrevious,.sidebar {
++ padding:10px
++ }
++ .sidebar {
++ padding-top:0
++ }
++ .search .sidebar {
++ display:none;
++ visibility:hidden
++ }
++ .col-2 h2,.toc h3,.sidebar-content h2,.sidebar-content h3,.sectionlist h2 {
++ text-align:center
++ }
++ div.main_index .row:after {
++ content:none
++ }
++ div.main_index .row>div {
++ display:block !important;
++ width:100%;
++ padding:0;
++ margin:0
++ }
++ .context,.sidebar,.col-1 {
++ width:100%
++ }
++ .main_index h2,h1 {
++ text-align:center
++ }
++ .context h4,.context h3,.context h2 {
++ text-align:center
++ }
++ .sidebar-content,.col-2,.toc {
++ background-color:#fff;
++ margin-bottom:1em;
++ padding:20px
++ }
++ .mainContent p {
++ line-height:1.56em;
++ margin-bottom:1em;
++ max-width:100%
++ }
++ table td,table th {
++ padding:5px 5px
+ }
+-
+- #qt13a-header .qt13a-nav ul li.devnet-active a {
+- color: #fff
+- }
+-
+- #qt13a-header .qt13a-nav ul li {
+- display: inline-block;
+- width: auto;
+- padding: 0 2.88% 0 0;
+- margin: 0;
+- border: 0;
+- *display: inline;
+- zoom: 1;
+- }
+-
+- #qt13a-header .qt13a-nav ul li a {
+- color: #35322f;
+- margin: 0;
+- padding: 0;
+- line-height: 18px;
+- font-size: 18px;
+- }
+-
+- #qt13a-header .qt13a-nav ul li a:hover, #qt13a-header .qt13a-nav ul li a:active, #qt13a-header .qt13a-nav ul li a.active {
+- color: #fff;
+- text-decoration: none;
+- }
+-
+-#qt13a-register_search {
+- display: block;
+- font-variant: 400;
+- float: right;
+ }
+-
+-#qt13a-register {
+- padding: 34px 0px 0;
+- float: right;
+- text-align: right;
+- color: #1e1b18;
++[id]:target,[name]:target,[name]:target+* {
++ -webkit-animation:highlighter 3s;
++ animation:highlighter 3s
+ }
+-
+- #qt13a-register .qt13a-link-divider {
+- padding: 0 5px
+- }
+-
+- #qt13a-register a {
+- color: #1e1b18;
+- font-weight: 400;
+- font-size: 13px;
+- padding-left: 13px;
+- }
+-
+- #qt13a-register a:visited {
+- color: #1e1b18
+- }
+-
+- #qt13a-register a:hover {
+- color: #fff;
+- text-decoration: none;
+- }
+-
+-#search {
+- margin-top: 23px
++@-webkit-keyframes highlighter {
++ 25% {
++ background-color:#46a2da;
++ color:#fff
++ }
++ 75% {
++ background-color:#46a2da;
++ color:#fff
++ }
+ }
+-
+-#qt13a-footer {
+- background: url('../images/Qt-header-bg.jpg') repeat;
+- margin: 0;
++@keyframes highlighter {
++ 25% {
++ background-color:#46a2da;
++ color:#fff
++ }
++ 75% {
++ background-color:#46a2da;
++ color:#fff
++ }
+ }
+-
+- #qt13a-footer .qt13a-container {
+- padding: 36px 0
+- }
+-
+- #qt13a-footer .qt13a-gradient {
+- background: url('../images/Qt-dark_gradient.png') repeat-x;
+- background-position: bottom;
+- margin: 0;
+- min-height: 126px;
+- padding: 0;
+- }
+-
+- #qt13a-footer .qt13a-shadow {
+- background: transparent url('../images/Qt-footer_shadow.png') repeat-x top center
+- }
+-
+- #qt13a-footer .qt13a-last {
+- float: right;
+- margin-right: 0;
+- *margin-left: -20px;
+- display: inline;
+- }
+-
+- #qt13a-footer ul {
+- width: 17.35537%;
+- float: left;
+- margin-right: 3.30579%;
+- display: inline;
+- padding-left: 0;
+- list-style-type: none;
+- }
+-
+- #qt13a-footer ul li a.qt13a-some-icon {
+- width: 32px;
+- height: 32px;
+- background-repeat: none;
+- text-indent: -300em;
+- overflow: hidden;
+- display: -moz-inline-stack;
+- display: inline-block;
+- vertical-align: middle;
+- *vertical-align: auto;
+- zoom: 1;
+- *display: inline;
++@-webkit-keyframes copypaste {
++ 25% {
++ opacity:1
+ }
+-
+- #qt13a-footer ul li a {
+- font-family: "Open Sans",sans-serif;
+- font-size: 13px;
+- color: #35322f;
+- padding: 0;
+- font-weight: 400;
++ 100% {
++ border-radius:10px;
++ margin-top:-50px;
++ opacity:1
+ }
+-
+- #qt13a-footer ul li a:hover, #qt13a-footer ul li a:active {
+- color: #35322f;
+- text-decoration: underline;
++}
++@keyframes copypaste {
++ 25% {
++ opacity:1
++ }
++ 100% {
++ border-radius:10px;
++ margin-top:-50px;
++ opacity:1
+ }
+-
+- #qt13a-footer .qt13a-title a, #qt13a-footer .qt13a-title {
+- padding: 18px 0 18px;
+- font-weight: 400;
+- letter-spacing: -0.5pt;
+- color: #35322f;
+- font-size: 18px;
+- margin: 0;
+- }
+-
+-.qt13a-copyright {
+- border-top: 1px solid #000;
+- background: url('../images/Qt-footer-bg.jpg') repeat;
+- margin: 0;
+- padding: 36px 0;
+- font-weight: 400;
+- font-size: 0.84615em;
+- line-height: 1.63636em;
++}
++#footer {
++ clear:both
++}
++.menuextraslanguages {
++ display:none;
++ visibility:hidden
++}
++form.gsc-search-box {
++ font-size: 25px !important;
++ margin-top: 0 !important;
++ margin-right: 0 !important;
++ margin-bottom: 4px !important;
++ margin-left: 0 !important;
++ width: 100% !important;
++}
++table.gsc-search-box {
++ border-style: none !important;
++ border-width: 0 !important;
++ border-spacing: 0 0 !important;
++ width: 100% !important;
++ margin-bottom: 2px !important;
+ }
+
+-.qt13a-copyright p {
+- padding: 0;
+- color: #aeadac;
+- font-size: 11px;
+- }
+-
+-.qt13a-copyright a {
+- color: #328930
+- }
++table.gsc-search-box td {
++ vertical-align: middle !important;
++}
+
+-.qt13a-copyright a:visited {
+- color: #328930
+- }
++table.gsc-search-box td.gsc-input {
++ padding-right: 0px !important;
++}
++table.gsc-search-box td.gsc-input input {
++ background-position: 15px center !important;
++}
+
+-.searchbox {
+- display: block;
+- overflow: hidden;
+- padding: 0px 35px 0 5px;
++td.gsc-search-button {
++ width: 1% !important;
+ }
+
+-.content-view {
+- position: relative;
+- overflow: hidden;
++td.gsc-clear-button {
++ width: 14px !important;
++ visibility:hidden !important;
++ display:none !important;
++}
++table.gsc-branding td,
++table.gsc-branding {
++ margin: 0 0 0 0 !important;
++ padding: 0 0 0 0 !important;
++ border: none !important;
+ }
+
+-p, li, p.forum-overview-title, p.forum-description, p.desc, p.forum-lastpost, div.navigationbars li, div.block-profile div {
+- font-size: 13px
++table.gsc-branding {
++ border-style: none !important;
++ border-width: 0 !important;
++ border-spacing: 0 0 !important;
++ width: 100% !important;
+ }
+
+-p.forum-description.desc {
+- font-size: 13px !important
++.gsc-branding-text {
++ color: #676767 !important;
+ }
+
+-.steps li {
+- font-size: 16px
++td.gsc-branding-text {
++ vertical-align: top !important;
++}
++td.gsc-branding-text div.gsc-branding-text {
++ padding-bottom: 2px !important;
++ text-align: right !important;
++ font-size: 11px !important;
++ margin-right: 2px !important;
+ }
+
+-div.license p, div.notes p {
+- font-size: 12px !important
++td.gsc-branding-img {
++ width: 65px !important;
++ vertical-align: bottom !important;
+ }
+
+-a {
+- color: #44a51c;
+- text-decoration: none;
++img.gsc-branding-img {
++ padding-top: 1px !important;
++ margin: 0 0 0 0 !important;
++ padding-right: 0 !important;
++ padding-left: 0 !important;
++ padding-bottom: 0 !important;
++ border: none !important;
++ display: inline !important;
+ }
+
+-.wrap {
+- padding-left: 30px
++input.gsc-search-button {
++ background-color: white !important;
++ height: 35px !important;
++ width: 35px !important;
++ color: transparent !important;
++ background-image: url("doc_search.png") !important;
++ background-size: 25px auto;
++ background-position: 0px 5px;
++ background-repeat: no-repeat;
++ margin-left: -43px !important;
++ overflow: hidden;
++ min-width: 20px !important;
+ }
+
+-a:visited {
+- color: #007330;
+- text-align: left;
++input.gsc-search-button:hover {
++ cursor: pointer;
+ }
+
+-a:hover {
+- color: #44a51c;
+- text-align: left;
++.gsc-search-box-tools .gsc-clear-button {
++ display: none !important;
++ visibility: none !important;
+ }
+
+-a:visited:hover {
+- color: #44a51c;
+- text-align: left;
++.gsc-overflow-hidden {
++ overflow: hidden !important;
+ }
+
+-a:link {
+- color: #007330;
+- text-decoration: none;
+- text-align: left;
++input.gsc-input {
++ background-color: #fff !important;
++ border: 1px solid #d6d6d6 !important;
++ border-radius: 5px !important;
++ box-sizing: border-box !important;
++ color: #868482 !important;
++ outline: 0 none !important;
++ padding: 9px 10px 10px !important;
++ transition: color 0.5s ease 0s, box-shadow 0.5s ease 0s, background-color 0.5s ease 0s !important;
+ }
+
+-.main {
+- padding: 0px 30px 30px 30px
++input {
++ font-family: 'Open Sans', Arial, Helvetica, sans-serif !important;
++ line-height: 1.5 !important;
++ font-weight: 300 !important;
++ vertical-align:middle
+ }
+
+-.main-rounded {
+- display: inline-block;
+- background: none repeat scroll 0% 0% rgb(255,255,255);
+- width: 100%;
+- border: 1px solid #DADADA;
+- border-radius: 10px 10px 10px 10px;
+- box-shadow: 0 0 3px #C4C4C4;
+- padding-bottom: 30px;
++input:focus {
++ border-color: #46a2da;
++ box-shadow: 0 0 5px #46a2da;
++ color: #000;
+ }
+--
+2.1.2
+
+
+From ab6d645850e88f3e351d196bf009135b6189ba8a Mon Sep 17 00:00:00 2001
+From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
+Date: Wed, 26 Nov 2014 13:12:08 +0100
+Subject: [PATCH 30/36] Android: Fix broken system palette
+
+When we overwrite the default palette, we have to make sure
+we don't overwrite default values with black for all the
+colors that are not retrieved from the json file. We would
+for instance get black as both the base color and text
+color which would make some components unusable.
+
+Change-Id: I1079a70a0ac7eb379ed5e8d92c6b39c2ea77ba49
+Task-number: QTBUG-42812
+Task-number: QTBUG-42998
+Reviewed-by: BogDan Vatra <bogdan@kde.org>
+Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
+
+diff --git a/src/plugins/platforms/android/qandroidplatformtheme.cpp b/src/plugins/platforms/android/qandroidplatformtheme.cpp
+index f9f2e4a..3750961 100644
+--- a/src/plugins/platforms/android/qandroidplatformtheme.cpp
++++ b/src/plugins/platforms/android/qandroidplatformtheme.cpp
+@@ -278,7 +278,8 @@ static std::shared_ptr<AndroidStyle> loadAndroidStyle(QPalette *defaultPalette)
+ const int pt = paletteType(key);
+ if (pt > -1 || !qtClassName.isEmpty()) {
+ // Extract palette information
+- QPalette palette;
++ QPalette palette = *defaultPalette;
++
+ attributeIterator = item.find(QLatin1String("defaultTextColorPrimary"));
+ if (attributeIterator != item.constEnd())
+ palette.setColor(QPalette::WindowText, QRgb(int(attributeIterator.value().toDouble())));
+--
+2.1.2
+
+
+From bd5743f1d8472e70aeeccd08858130d4781bde41 Mon Sep 17 00:00:00 2001
+From: Simon Hausmann <simon.hausmann@theqtcompany.com>
+Date: Wed, 3 Dec 2014 12:09:50 +0100
+Subject: [PATCH 31/36] Make tst_qwindow::positioning more reliable
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Don't check for absolute counts of resize events but just check if we
+were resized. Also use QTest::qWaitForWindowExposed instead of QTRY_COMPARE
+and checking for QEvent::Expose.
+
+Change-Id: Ie383493a8ce6d88cad50bd6375d432ad1578449c
+Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
+
+diff --git a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
+index fac16ff..46b33e5 100644
+--- a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
++++ b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
+@@ -233,17 +233,11 @@ void tst_QWindow::resizeEventAfterResize()
+ void tst_QWindow::positioning_data()
+ {
+ QTest::addColumn<int>("windowflags");
+- QTest::addColumn<int>("resizecount");
+
+- QTest::newRow("default") << int(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint | Qt::WindowFullscreenButtonHint)
+-#if defined(Q_OS_OSX) && MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
+- << 4;
+-#else
+- << 3;
+-#endif
++ QTest::newRow("default") << int(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint | Qt::WindowFullscreenButtonHint);
+
+ #ifdef Q_OS_OSX
+- QTest::newRow("fake") << int(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint) << 4;
++ QTest::newRow("fake") << int(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
+ #endif
+ }
+
+@@ -262,7 +256,6 @@ void tst_QWindow::positioning()
+ const QRect geometry(m_availableTopLeft + QPoint(80, 80), m_testWindowSize);
+
+ QFETCH(int, windowflags);
+- QFETCH(int, resizecount);
+ Window window((Qt::WindowFlags)windowflags);
+ window.setGeometry(QRect(m_availableTopLeft + QPoint(20, 20), m_testWindowSize));
+ window.setFramePosition(m_availableTopLeft + QPoint(40, 40)); // Move window around before show, size must not change.
+@@ -273,8 +266,7 @@ void tst_QWindow::positioning()
+ window.showNormal();
+ QCoreApplication::processEvents();
+
+- QTRY_COMPARE(window.received(QEvent::Resize), 1);
+- QTRY_VERIFY(window.received(QEvent::Expose) > 0);
++ QTest::qWaitForWindowExposed(&window);
+
+ QMargins originalMargins = window.frameMargins();
+
+@@ -284,25 +276,22 @@ void tst_QWindow::positioning()
+ QPoint originalPos = window.position();
+ QPoint originalFramePos = window.framePosition();
+
++ window.reset();
+ window.setWindowState(Qt::WindowFullScreen);
+ QCoreApplication::processEvents();
+-#if defined(Q_OS_BLACKBERRY) // "window" is the "root" window and will always be shown fullscreen
+- // so we only expect one resize event
+- Q_UNUSED(resizecount);
+- QTRY_COMPARE(window.received(QEvent::Resize), 1);
+-#else
+- QTRY_COMPARE(window.received(QEvent::Resize), 2);
++ // On BB10 the window is the root window and fullscreen, so nothing is resized.
++#if !defined(Q_OS_BLACKBERRY)
++ QTRY_VERIFY(window.received(QEvent::Resize) > 0);
+ #endif
+
+ QTest::qWait(2000);
+
++ window.reset();
+ window.setWindowState(Qt::WindowNoState);
+ QCoreApplication::processEvents();
+-#if defined(Q_OS_BLACKBERRY) // "window" is the "root" window and will always be shown fullscreen
+- // so we only expect one resize event
+- QTRY_COMPARE(window.received(QEvent::Resize), 1);
+-#else
+- QTRY_COMPARE(window.received(QEvent::Resize), resizecount);
++ // On BB10 the window is the root window and fullscreen, so nothing is resized.
++#if !defined(Q_OS_BLACKBERRY)
++ QTRY_VERIFY(window.received(QEvent::Resize) > 0);
+ #endif
+
+ QTRY_COMPARE(originalPos, window.position());
+--
+2.1.2
+
+
+From 5367fa356233da4c0f28172a8f817791525f5457 Mon Sep 17 00:00:00 2001
+From: Andrew Knight <andrew.knight@theqtcompany.com>
+Date: Thu, 4 Dec 2014 15:21:28 +0200
+Subject: [PATCH 32/36] winrt: Fix window resize
+
+The fixed-size EGL display must be updated on PC as well as Windows Phone.
+
+Task-number: QTBUG-43112
+Change-Id: I0ba90370b67e8c065843e5754579e341b647266d
+Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
+
+diff --git a/src/plugins/platforms/winrt/qwinrtscreen.cpp b/src/plugins/platforms/winrt/qwinrtscreen.cpp
+index 612a50f..37a3ff3 100644
+--- a/src/plugins/platforms/winrt/qwinrtscreen.cpp
++++ b/src/plugins/platforms/winrt/qwinrtscreen.cpp
+@@ -1081,12 +1081,14 @@ HRESULT QWinRTScreen::onSizeChanged(ICoreWindow *, IWindowSizeChangedEventArgs *
+ d->logicalSize = logicalSize;
+ if (d->eglDisplay) {
+ const QRect newGeometry = geometry();
+-#ifdef Q_OS_WINPHONE // Resize the EGL window
+- const int width = newGeometry.width() * (d->orientation == Qt::InvertedPortraitOrientation || d->orientation == Qt::LandscapeOrientation ? -1 : 1);
+- const int height = newGeometry.height() * (d->orientation == Qt::InvertedPortraitOrientation || d->orientation == Qt::InvertedLandscapeOrientation ? -1 : 1);
++ int width = newGeometry.width();
++ int height = newGeometry.height();
++#ifdef Q_OS_WINPHONE // Windows Phone can pass in a negative size to provide orientation information
++ width *= (d->orientation == Qt::InvertedPortraitOrientation || d->orientation == Qt::LandscapeOrientation) ? -1 : 1;
++ height *= (d->orientation == Qt::InvertedPortraitOrientation || d->orientation == Qt::InvertedLandscapeOrientation) ? -1 : 1;
++#endif
+ eglSurfaceAttrib(d->eglDisplay, d->eglSurface, EGL_WIDTH, width);
+ eglSurfaceAttrib(d->eglDisplay, d->eglSurface, EGL_HEIGHT, height);
+-#endif
+ QWindowSystemInterface::handleScreenGeometryChange(screen(), newGeometry, newGeometry);
+ QPlatformScreen::resizeMaximizedWindows();
+ handleExpose();
+--
+2.1.2
+
+
+From a94aaf9332ef7f049e785ed8bc391539b66da69a Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Tue, 26 Feb 2013 13:23:33 +0100
-Subject: [PATCH 1/4] use pkg-config for freetype
+Subject: [PATCH 33/36] use pkg-config for freetype
Change-Id: Id2f78ed9dbdcacd570eb25982cbd700d0437542a
@@ -24,10 +7964,10 @@ index 88be809..8fc19d2 100644
2.1.2
-From 7a83bd3ccb820f1aefbe4043537cb0cc1bc7703b Mon Sep 17 00:00:00 2001
+From 3ba546637346cdbcfe0224dfebdbfb429d293bf5 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Sat, 18 May 2013 23:07:46 +0200
-Subject: [PATCH 2/4] use pkgconfig for icu detection (MXE specific)
+Subject: [PATCH 34/36] use pkgconfig for icu detection (MXE specific)
Change-Id: I874171361fec812cb5a5a56e4d8d90a630be3bf3
@@ -58,10 +7998,10 @@ index 16267ff..dd9fb6c 100644
2.1.2
-From 9d3e83abb9631a772f5ad86ac2f656a69bf3e7a5 Mon Sep 17 00:00:00 2001
+From ac8761c959279f151f4fcfdf0ac08ceacbab9cc7 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Sat, 21 Jun 2014 13:12:49 +0200
-Subject: [PATCH 3/4] use pkg-config for harfbuzz (MXE specific)
+Subject: [PATCH 35/36] use pkg-config for harfbuzz (MXE specific)
Change-Id: Id4e4c37d68b63c9f480d72a561d95d4d2a5ded50
@@ -91,10 +8031,10 @@ index 7443368..c24e684 100644
2.1.2
-From 05c1768c2b5177461a8ccfbc5dd86b4bce74fe3f Mon Sep 17 00:00:00 2001
+From e7cfc640b13a73b2f4097714e1863e02affb2088 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Mon, 8 Dec 2014 14:15:12 +0100
-Subject: [PATCH 4/4] fix oci config test on windows
+Subject: [PATCH 36/36] fix oci config test on windows
Change-Id: If1ce2241682259ca495b0ba68bf18410f8548922