From 8307a6b4f1377622badc34b076d431a16cbff597 Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Tue, 9 Dec 2014 09:42:45 +0100 Subject: qtbase: include post-RC patches Some fixes and a more accurate preview of coming 5.4.0 release. --- src/qtbase-1.patch | 7956 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file 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 +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 + +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 from a QExplicitlySharedDataPointer) ++ 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 +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 +Reviewed-by: Shawn Rutledge + +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() ++ QTest::newRow("time-process") << "<%{time process}>%{message}" << true << (QList() + << "< "); + + #ifdef __GLIBC__ +-- +2.1.2 + + +From d0ef89caaba9ee8c57428447f04a17233b8888f5 Mon Sep 17 00:00:00 2001 +From: Eskil Abrahamsen Blomfeldt +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 + +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 @@ + +- ++ +-- +2.1.2 + + +From f9408cc81c7d3cb3fa212005fb30cd8318ebf247 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20Str=C3=B8mme?= + +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 + +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 + #include + #include ++#include + + 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 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::iterator it = cachedClasses->find(classDotEnc); +- const bool found = (it != cachedClasses->end()); ++ QReadLocker locker(cachedClassesLock); ++ const QHash::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::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 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::iterator it = cachedMethodID->find(key); +- if (it == cachedMethodID->end()) { ++ const QString key = keyBase().arg(size_t(clazz)).arg(QLatin1String(name)).arg(QLatin1String(sig)); ++ QHash::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 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::iterator it = cachedFieldID->find(key); +- if (it == cachedFieldID->end()) { ++ const QString key = keyBase().arg(size_t(clazz)).arg(QLatin1String(name)).arg(QLatin1String(sig)); ++ QHash::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, 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(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::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(env->NewGlobalRef(fclazz)); +@@ -400,7 +434,6 @@ QJNIObjectPrivate::QJNIObjectPrivate(jobject obj) + d->m_jclass = static_cast(env->NewGlobalRef(objectClass)); + env->DeleteLocalRef(objectClass); + } +- + template <> + void QJNIObjectPrivate::callMethodV(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?= +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 + +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 +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 +Reviewed-by: Lars Knoll +Reviewed-by: Richard J. Moore + +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?= +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 + +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 +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 + +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 +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 + +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 +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 +Reviewed-by: hjk + +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 QSslCertificate::verify(QList 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 *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 verify(QList certificateChain, const QString &hostName = QString()); + +- static bool importPKCS12(QIODevice *device, ++ static bool importPkcs12(QIODevice *device, + QSslKey *key, QSslCertificate *cert, + QList *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 QSslSocketBackendPrivate::verify(QList certifi + return errors; + } + +-bool QSslSocketBackendPrivate::importPKCS12(QIODevice *device, ++bool QSslSocketBackendPrivate::importPkcs12(QIODevice *device, + QSslKey *key, QSslCertificate *cert, + QList *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 STACKOFX509_to_QSslCertificates(STACK_OF(X509) *x509); + static QList verify(QList certificateChain, const QString &hostName); + static QString getErrorsFromOpenSsl(); +- static bool importPKCS12(QIODevice *device, ++ static bool importPkcs12(QIODevice *device, + QSslKey *key, QSslCertificate *cert, + QList *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 QSslSocketBackendPrivate::verify(QList certifi + return errors; + } + +-bool QSslSocketBackendPrivate::importPKCS12(QIODevice *device, ++bool QSslSocketBackendPrivate::importPkcs12(QIODevice *device, + QSslKey *key, QSslCertificate *cert, + QList *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 defaultCiphers(); + static QList verify(QList certificateChain, const QString &hostName); +- static bool importPKCS12(QIODevice *device, ++ static bool importPkcs12(QIODevice *device, + QSslKey *key, QSslCertificate *cert, + QList *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 +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 +Reviewed-by: Friedemann Kleint + +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 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 ++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 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 +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 + +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?= +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 + +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 +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 + +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 +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ø + +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 +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 +Reviewed-by: BogDan Vatra +Reviewed-by: Kai Koehne +Reviewed-by: Oswald Buddenhagen + +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 +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 + +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(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 +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 +Reviewed-by: Jerome Pasion + +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 +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 + +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 +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 +Reviewed-by: J-P Nurmi + +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 +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ø + +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?= + +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 + +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 +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 + +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 "\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 +-#include + + #ifndef QT_NO_DBUS + ++#ifdef QT_LINKED_LIBDBUS ++# include ++#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 + #include + #include +-#include +-#include + + #include "common.h" + #include + + #include + ++#define QT_LINKED_LIBDBUS ++#include ++#include ++ + 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 +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 + +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(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 +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 + +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 + #include + #include ++#ifndef Q_OS_WINPHONE ++#include ++#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 d3dDevice; ++ const EGLBoolean ok = eglQuerySurfacePointerANGLE(d->eglDisplay, EGL_NO_SURFACE, EGL_DEVICE_EXT, (void **)d3dDevice.GetAddressOf()); ++ if (ok && d3dDevice) { ++ ComPtr 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 +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 +Reviewed-by: Topi Reiniö + +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 +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 + +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 +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 + +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 +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 + +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 += \ ++ "\n" \ ++ "\n" \ ++ "\n" \ ++ "\n" \ ++ "\n" \ ++ "
\n" \ ++ "\n" \ ++ "
\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 = \ +- " \n" ++ " \n" \ ++ " \n" ++ ++HTML.headerscripts = \ ++ " \n" \ ++ " \n" \ ++ " \n" \ ++ " \n" \ ++ " \n" \ ++ " \n" ++ ++HTML.scripts = template/scripts/extras.js \ ++ template/scripts/main.js + + HTML.endheader = \ + "\n" + ++# minimal header + HTML.postheader = \ + "\n" \ +- "
\n" \ +- "
\n" \ +- "
\n" \ +- "
\n" \ +- "
\n" \ +- " Qt Home\n" \ +- " Bug Tracker\n" \ +- " Code Review\n" \ +- "
\n" \ +- "
\n" \ +- "
\n" \ +- " \n" \ +- " \"Qt\"\n" \ +- " \n" \ +- "
\n" \ +- "
\n" \ +- "
\n" \ +- "

Qt Documentation Snapshots

\n" \ +- "
\n" \ +- "
\n" \ +- "
    \n" \ +- "
  • \n" \ +- " Snapshots\n" \ +- "
  • \n" \ +- "
  • \n" \ +- " Released\n" \ +- "
  • \n" \ +- "
  • \n" \ +- " Archives\n" \ +- "
  • \n" \ +- "
\n" \ +- "
\n" \ +- "
\n" \ +- "
\n" \ +- "
\n" \ ++ "
\n" \ ++ "
\n" \ ++ "
\n" \ ++ "
\n" \ ++ " \n" \ ++ "

\n" \ ++ " We bake cookies in your browser for a better experience. Using this site means that you consent. Read More\n" \ ++ "

\n" \ ++ " \n" \ ++ "
\n" \ + "
\n" \ ++ "
\n" \ ++ "
\n" \ ++ " \n" \ ++ "
\n" \ ++ " \n" \ ++ "
\n" \ ++ " Menu\n" \ ++ "
\n" \ ++ " \n" \ ++ " \n" \ ++ " \n" \ ++ " \n" \ ++ "
\n" \ ++ "
\n" \ ++ "
\n" \ ++ "
\n" \ ++ "

\n" \ ++ "
\n" \ ++ "

\n" \ + "
\n" \ +- "
\n" \ +- "
\n" \ +- "
\n" \ +- "
    \n" \ ++ "
\n" \ ++ "
\n" \ ++ "
\n" \ ++ "
\n" \ ++ "
\n" \ ++ "
\n" \ ++ " \n" \ ++ "
\n" \ ++ "

Qt Documentation

\n" \ ++ "
\n" \ ++ " \n" \ ++ " \n" \ ++ "
\n" \ ++ "
    \n" + + HTML.postpostheader = \ +- "
\n" \ +- "
\n" \ ++ " \n" \ ++ "
\n" \ + "
\n" \ + "
\n" \ +- "
\n" \ ++ "
\n" ++ ++HTML.prologue = \ ++ "
\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 ++ ++ ++ ++\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 = \ ++ "

Available under certain Qt licenses.
Find out more.

\n" \ ++ "
\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 = \ ++ "
\n" \ ++ "

C

\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 = \ ++ "
\n" \ ++ "

\n" \ ++ " © 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" \ ++ " GNU Free Documentation" \ ++ " License version 1.3 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.

\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 = $('
'); ++ $container.append($article); ++ var html = '
'; ++ html += ' '; ++ html += '
'; ++ html += '
'; ++ html += '

' ++ html += '

' ++ html += '

'; ++ html += '
    '; ++ html += '
'; ++ html += '
'; ++ $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'); ++ $li.find('a').text(entry.categories[j]); ++ $article.find('.taglist').append($li); ++ } ++ } catch(e) {} ++ } ++ if (result.feed.link && result.feed.link != "") { ++ var linkHtml = 'Show all'; ++ $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 +zcmaJ?c~lek77mM)Ee4BVM1@H}WhqG}2_h*=LlR7cP&Qd)k&sM6ge)XMmS-(X1Qa}M +zVgW;;6{YqSB7z)1i)?}*778d)z!kBG3$943@)9cc{qcBn&dhH)_xtX5@BPl1Lw>$H +z;D#24Fc=KZpi=|XD_-;J>#4t%9y#^uWxb3RDhm{GWl1av1S4}qF%ZBIuy{}a#NwnR +z^g*sLn2s$!C{z~8^dYfD0t`zNgGm;M)o2*Z)gxKVV#h%;AO_;`g>L9)=P#lGKF19m +z;>5%;#S|!(PfwLVfvLVh?9@263kU7t4!9L +z6e5drL;o!*l<5ahL=p&a!ZZzBpQY21a8OCwo&jz5Tp^w +zG%unj&I?B*Qt&P=pz|`8Dq<%JAfap-%lQZEwIWty2!U9gnF>kx`yh^&L?i%~3McVb +z)9r;5kTB+;Lut3de1+>9X +zRKPV5u8a21F*mk10QLr4LeSHW$)i_ou&TbWM*jL+)uPSp)UAq#zQ>B+oqaNSqikW& +zZC)WA6#h1B-Bp6PqSaEht^g67wzVBL1P{G~Y1aQOqxg>gcKri7Nnd$F?Jry{w>sap +z3`)1abv{sKGr-cG=Uvf8D!4E}%sDoD7r6$vdZW(y2x@hM#1C;mOPT)Jz0c9YSNbX~ +z_ZlM_i?$!AOg~_0#f?VcKWNA5Dq9uz_lR{OR)xH^U%b6?Z$~_uTY@A2)Q& +zTh@WP7vMda*~F-V9b=oA{)NrK9)H&P%A2o@DQagdX|}C{;Z?@_`@%-bBIZxq%5ydd +zrURunp)*BaKcTkARcMt|t#0Js!s=ROu4Wzd(X)2yy?ifH*L=s?bH~!>7sQHf$N>ZE +zYSYT2BQ~Z=Se&(QH~ytJyij0J%m+|`Wduc&)fXXU_1EqMX69Z+psA%$=(>hoT!G~* +zzJ~eo_yVo_M0COQueDX1yF6`tH~ +z!6QFv#9#FMel*W2=z00m)cgfI+XwA!<}U@>fOkvTi-38e!n|&(ThcCX&DZS96E9>o~t8Uo#0~^Iu=Ls@}WurYj22TBcl;D +znF`g +zQh8~Wbblg}34*bIO6R|Q-i +zr$8ly@XsdR2ZPhH9lpWNm|=|_rdCV6jUr=W%cZZ-{=417J5?XfANkk +zRXp*G2Yc;K?J7RHxqnlum0T4wm2GHdzmRKmTHiMT-iH|fe9-_0gK@O4nwOu5(ER!t +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 +zcma)ATWnlM8J?MQX6D>4-aWgHg +zl=cCEC{WZQA|dg>15yz}AR)v<00|*c#N`3?fhVNCG`5KH2o+LAABfF2b9Ogt0H^?kmCX4uA +zCQBF)kh5ftTqj>53uK1e0w+ga2Im&Jjj?J>fsB(;GN#9Foeic^=#sAxgN&Vi=|IIQ +z{^xh#{1*S0XBTHydd|Ol8H0M!p1wYFdj-D{+Vl9et}ncLjV>L37j5wUcjo72uA28A +zzfVZ0)J@ETAr{To&{pGz<`?hW&1XQ7@GVr63(K=J$<_E5X#WxI{>7QQE2M{>LHi-v +zg{7IrxmR}m_#aSdLdU09mT%vIohb3N>L&&x^d8~po2J*md9L~UA=yPNZ*Do48xY(mol~uX}DdM +z6>u&MW}uIox46wsn^S{YzR88(b|VA8gBh3m%-G1sc3INa@diIqVa7o0hFt+4sP)dE~e~QPktQ +zu@p8|t`^TlUua``IsWdWDN~z-B_1_EA^rY~(DL8LY +zpRAni>nl`-he~rtL*^KU!@A2s7}3!ro1Gk5g^=RjE#fXq&&1ZWWPsqF_@G+o>pNRH +zIyY1*-=O)eOE*B>OWk_d_9z7UdxDY-+H#Rn>_74cy)_InEZ3nHgoT5-ijJGjCq0}Z=(3p_VRgTe# +zS~-QKEohVih&rAr6lo+%4=>iW<#^~L^Ys@@3y8o?(*+p6B{-%ju8=<8)^S&+MJTP<-d>rT*ew$f +z$-&?33%a^VR$-i|DZL*WbVnt)i?2iM>- +zP)0H8!NH-7cH54l{3PI~HM*g3H^rL^NZFo_y}%qHV|80sChBo*xP*;;hIZmmV=JTn +zu?)H~QYvmn<6>##+Ygn|j6KBq=qYa8G;m9yn&ie$75S73n~TX?1ir!8`bSC*wHW(@ +zn$3XECflEqh&Q%h1syI`bnVxDnpAt_sT;{FpdYj-KJosZ`<7w#@Jmjh~8BuWsni6Q;ZcrZCD7SJ|7IQ-d>_WYJ@bbz#J!* +zYM_Xn^9FnT5#;}Qa`LV3%K+JNH5jUk|%t*{z07M0*D9T`vgM=g2-&X6X>oznfM0s7)(VWo(~Wg<18BuvUQx^Om3jr1 +z$|@vazPyKjD|Ws$gj-H{9jmeuAY?Z-wbvW0&@+coRE(;7e+~KL8uG^>a$pApL$<+m +zw$TV_qkN1G;I%<#9>q&4A8e&^mjEJH7RTk@#nYLYE1A ++ ++ ++Generated by IcoMoon ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +\ 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 +zcma)9U2I%O6`q-UXXgI@c=zr)j(^sB9j}uT$KD^Wlg3E}A}x)Rv}w{xkc2pn69?j- +zG(k%HfIt)|YAYfk@xTL85kep##6tlIAyLH71L^}$NW3(*i1G*(Qbiw#%{Oy*Hyh)) +zTwl+gIWu$4nK^U5b1tET5SM&~7-Ztq3kRxJ`9Hq}=QsGjIKMQv+IRN7i-gdA^k=Wm +z-CV_Qg#IFat*h5xxk8tZy@x*d{=16{bC=CK58fvvoWS_hA{b)Hd=-5)e`Im#*6m^r +z6bau%Gktw!elEEj{~Y~4pg*`YcYBre(dW>=hkj{!ZfW7AT|fED85+w_qop +zcvg)QgAsa%aE#5;E8slc`u&jXBCn}=T@Q`AI+}cnkoz`W+r%GTgEWZI{H#%ZLKyy) +z#ynaznkOci#;-#xj6ppq-M2R%Y;J-_Kod>V&A<1VtrdCz4J8z_LMcfY9xIww$F@sWr +zg@!PkP?*9nII}__U6V`3m|+;U@KWQYHXQfhe|3K+$UMcgnflTuR}CWmaWF#u8AFs1nfWonW~>0KsmYgf2&^bm7x +ztKibp^^IRB<1NE-m9!G0oEz9hXfY{xVB3YjABuCOASl?T?IM;X#RqGu0>=gx)CEKE!+sPh8? +zc66R5U)w>etYj$E72_RDP$=~XENDz97OF?-RK1eH(iSwz07PBS42m=oWtSKG+HyVg +zmHGO!rUgXcrs)C@96NE{yko}_S4Tgdf(a+@T7i_lm^EF~G0nenn;{?#W^?Wf8Cq6| +z1st)gA4_m7Q(Pf^zOCaf&5BT3vAw-AH?i9$Ad-bKYnqPXnlFehvAnGeCP;vWHbFe( +zDnB4Qbo_8<2QTmpZo9F*K8hgiKHUtD9|2=MKRt+)pvU7&ZiYAK +z$kGn}0_F%At887JYQ*)?6bJhR?Z%GvKqy_GcvGjqO)Khop+3{d!E3>Wo}< +zm(4eDM&sl(d5OG@TISERpB|x~qR-G1sErzjX|r9Nv?`NEEk?#^-?|nM;M(G9Hv8rPsdv+zmPnExwt>SF;m6 +z9gOQTVXCS^tf^G;EV42qlG^{ODdY#*HUcCCdR;-+*-Y~=EJwD5G+9GfsvyjaYu9D~ +zQI)%(xK;`1WI~g)Q5#kb!7cSmQ9K;kdB@3FO@ +z0!{RCj+3|ToMY!KIy*g0eZ{k#9xEzg8G6~{4@OE3c!Nrm=#8SWf>ZRoUQ{MQFyJG2 +zgr}-0fFuOiJwQZDtwmJYImLp^UqZo*-yej7kv|;AL*8yvFw?i~-UxH-9vDP#E0c1l +zh}12{4xlzHh0%Zy23T(|Qy?`$8dhM96H7Hw#LiiRJ@^Rn|1>@Q=J#ZP>QR_d*LRG* +zy75zmHl73rECjwOkOzGEW7J_cf*3bg30Fm^83*50x^<_%u}+6J-T`0_s`CRLv=)l* +z04b!GX=uw6zTEgAE^qc?Qv`b94mZ3biam7)mMuBvH~ +zKXBA1pX +z<=&-Jxw%WZQ{O)x&YamZdS)h^UEi(@Nu&AjOmyOUt#1XTX!xT +z`M)gNz7V>wTJ=U(pU+*soO^!TQfObaP&^r(T&~xbPeO0&TkUUA|2v-#4}VBp7=q_7 +zH{VA_ZvSdzTSr%YC1wxSsc%gbqi-k%+Lokj7;Vs@K&V0bO}$MmLW$}AS5g=zwZ-F$ +zG*1TU6#X?TvCkTV#=p$h#EasGVyz`CpeGgP;^{2Wy{rky&sz3SZAWGs1O0T1Z-5?Y +z(I)7#Et-=8df9wIB&oJ&ht$cu`UW;_aMa#1I+K~vnaqsNWM*_GGouC89&D}6WL|^Z +z739+u{4J9g$pU$q+$7g@uY~WMaWa8k*PLtfD@!XY%a1aVbQZ`}@+ESe%t62-3&=4o +m>=r3u#sZWm6?5bkelLS}iM)dLGg`%omKo#f91$-&J^uyb$pB&i + +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 +zcmai1TWp+16`q;@pZV`M@6B;yd%f#;os>BCUcAo5Nd+P;jdN+5v=SsCj^oAwUy>$> +zv_eRT0<8)n5)wi@AQd455<)zLi%=zs5Imqh@Py!{u|<_fsE{i9Ky1D<|E|3@jywDR +zvomLA&N(w@&UeoL#WN>PFwRht-!M=A&r`i!IrH4XDr4Nn*cE#1(tm$9voL)Vv^n&r +z=}4`K1}mi(~Zr=*?YAez7op7jolK^o#oK;b#}87iK{_ +z3)!Ef_k~?Q{^!l5+jp?v@2$@>&@u$$_n5?-DGp89Q?36G*e>=e`kjT7*iGe0#vVF+ +zc@00ltfljg@uF@E)Fdg3nnttC)cbL9LIOX|iVvN&M{8?(cJU$8ZNB!89<#MV51`_V +zV^*ZOq%`nu9?~K=0f%xgJImCB`|$_U@`H0tA6mOiy=zNVL9C7xWCI9r93-+rF1pXB96p;^ck +za+O>*k7>2h>R5HWnXAwYy#ng!k(5oXI$FbcTS%kcp+yF&RmW@P!iliQaXo&~iIh^S +zZ~xGAlnQJi4K58|7@Qj-GL+#)%2b9Sg&ir&Go>YjFbu=7WMEl|V_1gQW!s^YmLUv` +zN%JM?NYjzr;C5h26?FN#`}+mgoL%{A&bjSN2oM|(7D>afP0mfrFeP|{i~+EchH05k +za6yxN&L0TNv3EtQ#}5n7vGX23S6}@lDQ_FLN8E~nOKD&iku5AGL&wR7L4T4dhGE{Z +ze8YqgOA-EHOkLM+patbc(D +zVs&V+JbNq>u3@;MyAnn*AIW926NAfOQrfqL-4)9>aWrinXh>hZUn}k@CM-sN*_g7YxZL7yt +z+wSlgM`e_wtE*Il0s1o=R0ho1uxV+BeH;`KFIde&MXLatsmQVuXM15@&S|RvPgcg1 +zX}X4IKBqd^%C<15U;#9=3TlH&cIdSIy&bF|Q@HKK`uY%@wDWXRJl+JxdVcv3LI%Np +z`^oL$g$}c&CV@T3ByZpy>ot^|?0l@@@*UKQ7 +zn_2|Hb7(tVuABEruCJ6QrGqGdiI8GR)04_qFuW7n7A{4gq-O$Rp&v|xU_eRvSM-uqjaJjS@ +zjZ5X>Z@ouK3-KQI$4^V+mVqdRYC;-6rRHNQ94;1bVfdO5s~-{{ZVT}TS}lOjrZ|u` +z;cwyqIURy3h7Ra4-J~-@-nzDIzJW6uVdvNj>`mk{f98AmG5!huG(UyhsBx4x+sR2Q +zGilTkM4a}mYXJeSEv|Mm)7yyjN|4AG||hrZq{)!u9LC()Wif2h~~Imc3i|V^wJXa#l#1+ +zK4PW1<9Iml7JR=OnMoM-25=tbQ#J*V1OulFh-lMVc%_pe5_tX!0w#k!Vbm7~14+{F +z?>3b%1IOu(F~{kGLi{eNltD&Bw-`Hs*r*uAy#WXyy}8JN)NpBNfi-So(L|NF7Yy;} +zL-7C8#KbqhZ-vMnm1*hxPViS&e@1BITcCgh$2S$?Kw$j@dDyKm!3`$nl!Tf|_+65% +zJN4BS-oJVufZa#u2RvvkRNnzoSbi#@%})i^>ibDvDj*(!?_&ZPphh%ly!h=Pp(Ion +zLqO{1{Y141LOdivF|u9CX%Rr`z%M;lO9e*a>Bc^#0ko2ytkQM@5>H@BS|I@otb2Iv +z#C?4bQBL_CyRvgY$Zj0!9)F<9&mKV`AEmgzg8Xp>`QsovxC4SA+Ymb2XhytQInMj> +z*`PCz(q+mA+o{}TfXLN_F>Bw#nauRn%$XmYj3&?T9XdZ5O|5K~hLq!(=zM%?zE+z* +zb$j^yQGaU6KYD(cbnA?T`09LYUb~^$_KDEtn^k}4=Che=*D}v;n+olZXA7s}(~I@` +z;%UfjeXIRF-gE!6(a{f>2Srf+a{FCGK3PT7Pat+r%&^wRl?S*+S>yR6P;=o{E{K%u>*?UZNQ +zPI;#7lxNybd8TcJwTD`3Q=T`#cM0)y3BN`5Jey@NvD@s1?iKN!Gr~sE>zH$6W@%w* +zX>l_VL1&g-XJ26RY#IzUEnp`!vpcMa8M6>VBBt3L{9gm@Dtj6Ar?iMuEj32y9N{lJ +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-PLjW)!UNu|{`Qid)d +zMOqB&EYFdVD9wptB*Jebd6p9xmSecuFc*~sL1I~Q`lE0(*XWRvO7nCqe2Y=KycALo^g4Nc@z^F~5J^n62d55Zqv(sKTgD-RwXIcX5f +zZss!&&Qu4+29K=FAE;hI-0rP8arI?mV4`yAP}>vo^Myh8`y4TJvZ}0e_*G5y{khM6 +zzI!;D*xu6k4TyC=+hIU!|lg977F3vb7vcS_b 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 +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 +Reviewed-by: J-P Nurmi + +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 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 +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 + +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("windowflags"); +- QTest::addColumn("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 +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 + +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 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 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 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 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 -- cgit v0.12