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