summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
...
| | * | QSFPM: Remove data manipulation from move handlersStephen Kelly2016-12-211-55/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Similar to the fix in the parent commit, incorrect updating of the internal data structures during layout changes can lead to dangling pointers being dereferenced later. Moves are treated as layoutChanges by this proxy by forwarding to the appropriate method. However, data is incorrectly cleared prior to that forwarding. Remove that, and let the layoutChange handling take appropriate action. Change-Id: Iee951e37152328a4e6a5fb8e5385c32a2fe4c0bd Reviewed-by: David Faure <david.faure@kdab.com>
| | * | QSFPM: Fix handling of source model layout changeStephen Kelly2016-12-211-20/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In sourceLayoutAboutToBeChanged the source model update is ignored if the affected parents are filtered out anyway. The same logic is attempted in the sourceLayoutChanged slot, but there the early-return logic is applied too late - the mapping is cleared before performing the early-return. Because pointers into the mapping are used in the internalPointer of QModelIndexes in this class, persistent indexes used later will segfault when attempting to dereference it. Additionally, if a parent becomes invalid as a result of the layoutChange, it would be filtered out by the condition in the loop, resulting in a different result in the comparison of emptiness of the parents container. Fix that by persisting the parent's container, and performing the test for early-return before clearing the mapping. Task-number: QTBUG-47711 Task-number: QTBUG-32981 Change-Id: If45e8a1c97d39454160f52041bc9ae7e337dce97 Reviewed-by: David Faure <david.faure@kdab.com>
| | * | Fix race condition in QFactoryLoader: lock the mutex we already haveThiago Macieira2016-12-171-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The process of loading a plugin is examplified by the qLoadPlugin function (though not all users of QFactoryLoader use this function, they all do something similar): const int index = loader->indexOf(key); if (index != -1) { QObject *factoryObject = loader->instance(index); if (FactoryInterface *factory = qobject_cast<FactoryInterface *>(factoryObject)) if (PluginInterface *result = factory->create(key, std::forward<Args>(args)...)) return result; } QFactoryLoader::indexOf already locked the mutex, but not QFactoryLoader::instance. This commit fixes that. Note that calling the virtual create() in the plugin's factory is not protected by the mutex. Each plugin's factory must be thread-safe and also create an object that works on any thread too. It's also the responsibility of the caller of qLoadPlugin to ensure that it's called thread-safely. Task-number: QTBUG-42855 Change-Id: I63e21df51c7448bc8b5ffffd148ebee33d4c47de Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | | | Avoid detaching temporary objectsAlexander Volkov2017-01-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Found with clazy [detaching-temporary]: - don't call QList::first() on temporary - don't call QString::operator[]() on temporary - don't call QByteArray::data() on temporary Change-Id: I390962ef6020e4fcb0b0e447a63eed1e314d18a4 Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru> Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
* | | | Add missing documentation for QOperatingSystemVersion::segmentCountJake Petroules2017-01-251-0/+6
| | | | | | | | | | | | | | | | | | | | Change-Id: I6d24fbbaf60e07377a463ea1f72588812caaf4a7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | Fix some qdoc-warnings for 5.9Friedemann Kleint2017-01-255-9/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qtbase/src/corelib/global/qoperatingsystemversion.cpp:119: warning: Cannot find 'QOperatingSystemVersion(...)' in '\fn' QOperatingSystemVersion::QOperatingSystemVersion(int maj, int min, int mic) qtbase/src/corelib/io/qdir.cpp:1852: warning: Unknown command '\p' qtbase/src/corelib/kernel/qabstracteventdispatcher.cpp:482: warning: Cannot find 'registerEventNotifier(...)' in '\fn' bool QAbstractEventDispatcher::registerEventNotifier(QWinEventNotifier *notifier); qtbase/src/corelib/kernel/qabstracteventdispatcher.cpp:495: warning: Cannot find 'unregisterEventNotifier(...)' in '\fn' bool QAbstractEventDispatcher::unregisterEventNotifier(QWinEventNotifier *notifier); qtbase/src/corelib/global/qoperatingsystemversion.cpp:268: warning: Can't link to 'macro()' qtbase/src/corelib/global/qoperatingsystemversion.cpp:296: warning: Can't link to 'typeName()' qtbase/src/corelib/io/qdir.cpp:1845: warning: Undocumented parameter 'filters' in QDir::isEmpty() qtbase/src/corelib/kernel/qobject.cpp:1636: warning: No such parameter 'interval' in QObject::startTimer() qtbase/src/network/bearer/qnetworkconfiguration.cpp:343: warning: Undocumented parameter 'timeout' in QNetworkConfiguration::setConnectTimeout() qtbase/src/gui/kernel/qoffscreensurface.cpp:337: warning: Undocumented parameter 'handle' in QOffscreenSurface::setNativeHandle() qtbase/src/platformheaders/xcbfunctions/qxcbwindowfunctions.qdoc:109: warning: Unknown command '\role' qtbase/src/widgets/util/qundostack.cpp:727: warning: Command '\li' outside of '\list' and '\table' ... Change-Id: I57bff895a8e1afd94b582a6a72a06771514ee27e Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | | | Apple: always use the system time zone instead of the default time zoneJake Petroules2017-01-241-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This corrects an issue converting dates and times to strings which would use the "default" time zone (CFTimeZoneCopyDefault) in contrast to the rest of Qt which uses the system time zone in such contexts. [ChangeLog][QtCore][QLocale] Qt functions now always use the system time zone on Apple platforms, the same that low-level C APIs like localtime() does. Previously, converting dates and times to strings would use the "default" time zone (which is almost always the same as the "system" time zone but could be changed with the Apple API). Change-Id: I2942c3c1c8aa01a0130f1b7280371a72bdb01b1c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | Fix deprecated API usageJake Petroules2017-01-242-32/+12
|/ / / | | | | | | | | | | | | | | | Change-Id: I62448507f80daf6be72994ee99f0fb1aa107eb78 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | | Add conversion functions for QTimeZone and CFTimeZone/NSTimeZoneJake Petroules2017-01-234-7/+90
| | | | | | | | | | | | | | | Change-Id: I3a2e18d69577296bf612e13e40414bce1daa6a71 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Increase the default stack size on INTEGRITYKimmo Ollila2017-01-231-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | INTEGRITY doesn't support self-extending stack. The default stack size for a pthread on INTEGRITY is too small so we have to increase the default size. Change-Id: I0787d14938cf5e7e96c35df204212c8e83aa8893 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Nikola Velinov <nvelinov@ghs.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Make variant selection possible if base is missingSebastian Lösch2017-01-201-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore][QFileSelector] Removed the requirement for an unused default base file in case you want to load only a variant. When the base file (e.g. /image.jpg) was missing, no selectors were considered and it was not possible to load variants of this file (e.g. /+android/image.jpg, /+android/+tablet/image.jpg) without specifying the directory as well. As a work around, one previously had to place a default file in the base location, which is undesirable in some cases because: 1. The extra file consumes unnecessary space. 2. It is impossible to encapsulate platform-specific implementation details by hiding files in a subdirectory. Task-number: QTBUG-51230 Change-Id: I4c7f9ec952bff6e5b7738d8cabe3c762c208a38e Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
* | | QStringListModel: default data()s 'role' argumentMarc Mutz2017-01-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | ... the way it's done elsewhere, too. Change-Id: Icbb6802c2244469cda7db7eb9e088cf3b7729c89 Task-number: QTBUG-58160 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | Long live QStaticByteArrayMatcher!Marc Mutz2017-01-192-0/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a version of QByteArrayMatcher that calculates the Boyer-Moore skip table at compile-time instead of at run-time, making this class more generally applicable than QByteArray- Matcher itself, at least for statically-known strings. The compile-time part requires C++14 constexpr support, but the class should compile and work even in C++98 mode, just with runtime initialization of the skip-table. While touching tst_qbytearraymatcher, clean up the static global QByteArrayMatchers there and add tests with needles longer than 255 characters for QByteArrayMatcher, too. [ChangeLog][QtCore] Added QStaticByteArrayMatcher. Change-Id: I0662f262ab19b79ae4096f3ab384d5b3ada72347 Reviewed-by: David Faure <david.faure@kdab.com>
* | | QHostAddress: make it implictly sharedGiuseppe D'Angelo2017-01-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QHostAddress is one of the few classes in Qt which is pimpl'd but not implictly shared, making it suprisingly expensive to copy around, return by value and so on. Being pimpl'd it is also still lacking a move constructor, like most of such types in Qt. Remove a bit of the surprise factor and make it implictly shared. In practice this means making it eagerly parse host addresses from strings. Since it was entirely implemented out of line, replacing it with a implictly shared implementation is binary compatible. [ChangeLog][QtNetwork][QHostAddress] QHostAddress is now implicitly shared. Change-Id: Ia7ff94efcb74e7321b7607cd690c5c162f685605 Reviewed-by: Richard J. Moore <rich@kde.org>
* | | Remove support for WinRT 8.1 and Windows Phone 8.1Maurice Kalinowski2017-01-1810-124/+8
| | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtBase][General] Removed support for WinRT/Windows Phone 8.1. Task-number: QTBUG-57288 Change-Id: Ifd6d6780cbbdb710d99556ba3d2fb2e514d4f789 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | | Polish up the QOperatingSystemVersion API and documentationJake Petroules2017-01-182-66/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | operator== and operator!= have been disabled, as they are likely to be misused and are not particularly useful in practice. The same goes for the QVersionNumber conversion convenience functions. The constructor normalizes version component values so that invalid versions like [5, -1, 3] cannot be constructed and made to wreak havoc on assumed logic. Change-Id: Iabb6876bd5dc11522032837f78cf825b921a49b2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Fix whitespace, formatting, and line length in QOperatingSystemVersionJake Petroules2017-01-172-54/+102
| | | | | | | | | | | | | | | Change-Id: Ie26571a8098e8215a6bc1e0e363763e5fc546bcd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Fix build for INTEGRITYKimmo Ollila2017-01-131-0/+1
| | | | | | | | | | | | | | | Change-Id: I2c41295688e962eb263f2180bebfd1dd37613804 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* | | qglobal.cpp/QSysInfo::macVersion(): Silence deprecation warningJake Petroules2017-01-131-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | clang/g++ still warn when encountering the implementation of a deprecated function. Follows up 21a247adb47a45a23c0e014bd42979ccbeb11488 Change-Id: I6ab1695acb520ef7ce7cb1896545d02607c3ce29 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
* | | Remove qtypetraits.h's contents altogetherGiuseppe D'Angelo2017-01-126-57/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So that QFlags can use an (un)signed int matching the underlying type as identified by the compiler and not by us. Requires fixing a few warnings about sign conversion due to QFlags misusages in qtbase that were either plain wrong, or were relying on the enum being backed by an (un)signed int when it wasn't. Keep qtypetraits.h in the source tree in order to prevent source breaks if some downstream #includes it (note however that it did not contain any public API). Change-Id: Ib3a92b98db7031e793a088fb2a3b306eff4d7a3c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Use QString::asprintf(), QStringBuilder, and the multi-arg overload of ↵Alexander Volkov2017-01-123-33/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QString::arg() ... instead of sequential .arg(const QString &) callings. It saves memory allocations and prevents unexpected results if replacing strings contain place markers. Found with clazy's qstring-arg check. Change-Id: I3912275a6e11c6fb7559ff5623f2e8cde9b7f07a Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Remove two unused static methods of QDateTimePrivateEdward Welbourne2017-01-121-3/+0
| | | | | | | | | | | | | | | | | | | | | ... along with the two matching unused methods of QDateTime's test. Change-Id: Id11a4b1b0132587f0df451d49c0043e9425d87ad Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Provide sensible defaults for QCoreApplication::applicationVersionJake Petroules2017-01-124-11/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore] QCoreApplication::applicationVersion now defaults to an appropriate platform-specific value. On Windows, it defaults to the PRODUCTVERSION parameter of the VERSIONINFO resource for classic desktop apps, and the version attribute of the application package manifest for Univeral Windows Platform apps. On Apple Platforms (macOS, iOS, tvOS, watchOS), it defaults to the CFBundleVersion property of the information property list (Info.plist) file. On Android, it defaults to the android:versionName attribute of the AndroidManifest.xml manifest element. On other platforms, the default remains an empty string. Task-number: QTBUG-57715 Change-Id: I26f83dd00737e06f4321cf962aa5fab8398104ec Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Simplify fileTimeToQDateTime() by having it return a UTC timeEdward Welbourne2017-01-113-18/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This avoids so many complications. The prior code, using SystemTimeToTzSpecificLocalTime(), lead to unhelpful results when the QDateTime() implementation used MS-POSIX's defective mktime(). Although SystemTimeToTzSpecificLocalTime() is actually more correct, we were getting inconsistent results by mixing the two: and eliminating the use of mktime() turns out to be decidedly tricky. So, to avoid inconsistency, stick with a UTC time (which is what FILETIME is defined as). Change QFileInfo's methods to explicitly convert .toLocalTime() where appropriate and document that these methods do indeed return local time (as we conjecture has been taken for granted by callers). Also added a regression test for the reported case of this going wrong. A time-stamp from before Russia's (permanent, not DST) change of TZ could end up inconsistently handled between file-system meta-data and raw date-time APIs, due to cross-talk between different MS-Win time APIs. [ChangeLog][QtCore][QFileInfo] Made sure that all file lifecycle times are in local time. This was probably true before, but is now explicit. Task-number: QTBUG-48306 Change-Id: Ic0b99d25c4168f623d31967bc60665c0c4f38a14 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Add support for building for INTEGRITY using GHS toolchainKimmo Ollila2017-01-101-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Initial support for INTEGRITY to build QtBase Change-Id: I18f36b4dea9107f01e1c281e4b62880590c777a1 Reviewed-by: Tuukka Turunen <tuukka.turunen@theqtcompany.com> Reviewed-by: Nikola Velinov <nvelinov@ghs.com> Reviewed-by: Risto Avila <risto.avila@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | QForeachContainer: make it a move-only typeGiuseppe D'Angelo2017-01-101-18/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Honor the rule of five. Copy assignment was already disabled. Disable also copy construction, but re-enable the move special member functions. This requires making the container non-const; to avoid detaches and keep compatibility with containers that only have begin/end (but not cbegin/cend), use qAsConst. This requires moving qAsConst definition a bit up in the file. Change-Id: I19cd74437cf69baceada9483920a21e96d7b1727 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Remove compatibility code paths for macOS < 10.10 and iOS < 8.0Jake Petroules2017-01-092-51/+6
| | | | | | | | | | | | | | | Change-Id: I11bec0efc2b4d86adf64a58990260fee70f050ac Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | | Introduce QDir::isEmpty()Elvis Angelaccio2017-01-082-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A directory is empty when it doesn't contain files or folders. We can exploit QDirIterator::hasNext() to check whether this is the case. This is efficient since it doesn't list the whole folder (in the non-empty case). Test cases are added for both the empty and non-empty cases. Change-Id: I0f7e26782c0f97f9c16f928dab6cae37927875d8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | doc: clangqdoc documents the threads caseMartin Smith2017-01-062-6/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qmutex.h is updated to let clangqdoc document the threads case, because the no-threads case is not interesting, and clang can handle everything declared in qmutex.h. This change required that a few minor qdoc errors be corrected in qmutex.cpp as well. Change-Id: Icb4122f2179d6aad39dc68376498364820143297 Reviewed-by: Martin Smith <martin.smith@qt.io>
* | | doc: Fix all remaining "Cannot tie" errors in QtBaseMartin Smith2017-01-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most of these involved moving or removing extraneous aide-memoir comments left by programmers between qdoc comments and their functions. There were also some cases where Q_CLANG_QDOC had to be tested to make something visible to clangqdoc. And there were a few functions that should not have been documented at all. Change-Id: I3bf7c397a9e5ddbffc40cc1fee7f19cad71a1ae7 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | | doc: clangqdoc doesn't need Q_GADGETMartin Smith2017-01-041-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This update undefines Q_GADGET when clangqdoc is running. With Q_GADGET defined, clangqdoc expects documentation for QtGadgetHelper in each class where Q_GADGET is used. Note that the documentation for the Q_GADGET macro is still generated. Change-Id: I3e6e6644c2c537c00c44ae77664892e125046daa Reviewed-by: Martin Smith <martin.smith@qt.io>
* | | Restore configure command line compatibility for PCRE supportSimon Hausmann2017-01-041-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 9ca635482d649c59e312e6f1cd73df6685d280b0 renamed the configure feature from pcre to pcre2, which unfortunately means that people would have to change their build scripts to pass -qt-pcre2 instead of -qt-pcre. As the configure check already verifies the correct PCRE version for use (when using the system library), it seems more convenient for our users to retain compatibility and call the configure feature "pcre" again. Change-Id: If26e7888814d8204d43baf7298d9916a4f856a48 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* | | Reduce size of QPpsObject by one pointerJędrzej Nowacki2017-01-032-3/+1
| | | | | | | | | | | | | | | | | | | | | Change-Id: Ibb1bef375e7d23b45595ca759646883820643f02 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Added QSaveFile to the bootstrap librarySimon Hausmann2017-01-022-5/+19
| | | | | | | | | | | | | | | | | | | | | | | | It's quite a simple addition and required for the ahead of time compilation tool for qtdeclarative. Change-Id: Iba85ae5182919cdb5ab15a0b643e57c103eae632 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Use qGetPtrHelper in Q_DECLARE_PRIVATE_D macroDaniel Vrátil2016-12-301-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | This allows the Dptr parameter of the Q_DECLARE_PRIVATE_D macro to be a smart pointer, not just a raw pointer. Change-Id: Iaf27352e327e9aedea149461d47f2f11460a42dc Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Remove HarryF's "compiler error feature" that isn't used anymoreThiago Macieira2016-12-281-29/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | The "qYouForgotTheQ_OBJECT_Macro" function hasn't been used in qobject_cast since commit 7d7e8ae3fa79b06c916de1a7a10eed63611c5d25 (Qt 5.2), when Olivier made the error use Q_STATIC_ASSERT instead. Change-Id: I15b62e0f9cec482fbb40fffd1490d7c050084369 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | Revert "QUrl::resolved: keep treating file:name.txt as relative for now"Thiago Macieira2016-12-281-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 91a2c8630b2204831566ab8e523c747f9d8ec927. We promised in the Qt 5.6.2 changelog to do it in Qt 5.8. It was a temporary compatibility hack. [ChangeLog][QtCore][QUrl] The temporary compatibility in QUrl::resolved() that treated the base URL as relative if its scheme matched the current URL's scheme has been removed. Change-Id: I3e4e5051937c40319d6efffd1490eb9a5a948481 Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Extend qChecksum calculationLars Schmertmann2016-12-254-6/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ISO 14443-3 is for nfc communication and uses 2 different checksums. The existing one is from ISO 3309 and the other one is from ITU-V.41. Both are needed to implement an own transport layer defined in ISO 14443-4 to allow nfc commands with a length above 250 byte independent from the smartphone. This change will avoid code duplication in QNearFieldTarget. The private function qNfcChecksum is a copy of qChecksum. Change-Id: I790ffec8e2ea46f88b2db6f48b64fdcb140e7b70 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QByteArray: Overload toHex() with separator characterAndre Hartmann2016-12-242-4/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The separator character is inserted in the resulting array after every byte and is useful for MAC address output like 01:23:45:ab:cd:ef, Hash fingerprints, or low level data debug output. [ChangeLog][QtCore][QByteArray] Added toHex() overload to insert a separator character between the hex bytes. Change-Id: Ibe436094badc02f3ade7751aa8b5d690599941d4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QObject: add startTimer() overload with std::chronoAnton Kudryavtsev2016-12-233-0/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In client code I often see code like: startTimer(1000); //ms Let the code to be self-explaining. So provide overload method that takes std::chrono::milliseconds as arg. QTimer already has std::chrono support, but QObject does not. Change-Id: Ib348612ce35f1a997b4816fe9e864775cbcbec16 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | | Merge remote-tracking branch 'origin/5.8' into devLiang Qi2016-12-1614-36/+149
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure configure.pri examples/widgets/painting/fontsampler/mainwindow.cpp examples/widgets/painting/fontsampler/mainwindow.h mkspecs/features/moc.prf src/corelib/global/qglobal.h src/gui/text/qtextdocument.cpp Change-Id: Ica65512e00871695190a14ccea5c275b0165f787
| * | Merge remote-tracking branch 'origin/5.8.0' into 5.8Liang Qi2016-12-169-21/+40
| |\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/global/qt-cpp-defines.qdocconf src/plugins/platforms/android/qandroidplatformopenglcontext.h src/plugins/platforms/android/qandroidplatformtheme.h Change-Id: I13d51cc66f708138ff4d667ceea7d515992e58a4
| | * Work around old Clang bug parsing of NSDMI referring to membersThiago Macieira2016-12-161-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clang pre-3.4 didn't like this and it's used in Xcode 5.1 (which we need to support for 5.8). error: 'this' cannot be implicitly captured in this context typename T::const_iterator i = c.begin(), e = c.end(); ^ Task-number: QTBUG-57488 Change-Id: I63e21df51c7448bc8b5ffffd148e688d7c9b89d6 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
| | * winrt: Check for removed timers after sending eventsOliver Wolff2016-12-151-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After all the check makes sense here. If a timer was removed as a result of sendEvent and it was not at the end of the list the list is not shrunk but the timer info's id is just set to INVALID_TIMER_ID. Additionally the timer's object should be fetched before we unlock the locker as timerIdToObject is changed in removeTimer and we might access a nullptr if the timer has been removed. Reverts c83ba01f7bc542368973f3f24dfb59c6052dd78a Task-number: QTBUG-56756 Change-Id: Ib1a04c02fbfcf4c939b4891d42f954dc9e87149e (cherry picked from commit 8f2088db171a6941feb1903a2912a8b7fdf3a9ec) Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
| | * qdoc: Define Q_COMPILER_UNICODE_STRINGSTopi Reinio2016-12-151-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some public functions in QString and QDebug are declared inside Q_COMPILER_UNICODE_STRINGS. This commit defines it for QDoc, and adds documentation for QDebug functions that are now visible to QDoc. Change-Id: Ia7f2501c1dc7b8244dcc3ce4adcd2019fdbffcb6 Reviewed-by: Martin Smith <martin.smith@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Fix gcc 6.4 buildsAllan Sandfeld Jensen2016-12-131-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The builtins clzs and ctzs have been removed. Additionally they were never proper internal GCC builtins and shouldn't have been used in a constexpr function in the first place. This patch removes the assumption that they exist when BMI is available, and let GCC fall back to using __builtin_clz and __builtin_ctz. Change-Id: I3e0b4e246098bb9ce6ede28b311948260ef881b9 Task-number: QTBUG-56813 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Re-fix the build with ICC and cmath & math.hThiago Macieira2016-12-101-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit c35fef9d3b8bb77a7f303e3cd62c86cd00e57f5b wasn't sufficient. The problem is that there's a complex combination of libc headers (math.h), C++ headers (cmath), which may be provided by three different sources on Linux (glibc, gcc and ICC). On some combinations, the isnan macro leaks from math.h or cmath and that's what the the commit above tried to fix. On some other combinations, there's no macro but there's an ::isnan function defined. When we do "using namespace std; return isnan(x);", that causes a compilation error. This commit solves that by detecting whether there is a macro defined. error: more than one instance of overloaded function "isnan" matches the argument list function "isnan(double)" function "std::isnan(double)" argument types are: (double) Change-Id: Iaeecaffe26af4535b416fffd148bf71826541bdd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Merge remote-tracking branch 'origin/5.7' into 5.8.0Liang Qi2016-12-082-5/+4
| | |\ | | | | | | | | | | | | Change-Id: I576187a9905802c177ae483e6c29d0f55cf7034d
| | | * Remove unnecessary warning disablingThiago Macieira2016-11-271-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt 5.7 cannot be compiled in C++03 mode anymore. Change-Id: Iaeecaffe26af4535b416fffd1489d808edc3c996 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| | | * Make sure all pattern args get cleared when parsing a new patternThiago Macieira2016-11-261-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The user can call qSetMessagePattern after program start, so we need to be sure that the parsed argument data is properly cleared. Task-number: QTBUG-57144 Change-Id: I1978c6b95bd84639a8c4fffd1487429b04725522 Reviewed-by: Kai Koehne <kai.koehne@qt.io>