summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Expose GLES 3.0 and 3.1 functionsLaszlo Agocs2015-07-2316-210/+6862
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using the approach we already do for some GLES 3.0 functions we can provide a cross-platform, cross-GL-GLES wrapper for ES 3.0 and 3.1 functions too. Applications only have to take extra care about the version requests (context version and version directives in shader code), the rest of their code can stay the same across desktop/mobile/embedded, even when ES 3 functions are used. The new functions are placed to a new subclass which is placed between QOpenGLFunctions and the internal QOpenGLExtensions. This is necessary because, unlike with QOpenGLFunctions, there is no guarantee that these functions are always available in all configurations. When running on desktop OpenGL, we resolve as usual. If the OpenGL version contains the function in question, either in core or as an extension, it will all just work. This is handy because it does not rely on 4.x extensions like GL_ARB_ESx_compatibility, and so ES 3.0 functions will be functional on OpenGL 3.x systems too by just setting a 3.x version number in the QSurfaceFormat. We will no longer qFatal on broken systems where the driver returns a 3.0 or 3.1 context without the corresponding functions present. Instead, we show a warning and gracefully fall back to resolving as usual, via eglGetProcAddress or similar. For functions that are available in ES2 as an extension this may just work fine. Added also an example that runs identically both with OpenGL and OpenGL ES 3 and utilizes some ES 3.0 features like instanced drawing. [ChangeLog] Added QOpenGLExtraFunctions providing OpenGL ES 3.0 and 3.1 function wrappers in a cross-platform manner. Task-number: QTBUG-46161 Change-Id: I9f929eb61946c35c415b178c4d6ab2c1c958684e Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
* StateMachine: remove initial state for parallel states.Erik Verbruggen2015-07-232-0/+39
| | | | | | | | | | | | A parallel state cannot have an initial state, as all children of the parallel state will be entered. Setting such an initial state on a QState marked as ParallelStates would already produce a warning and ignore the initial state. Now any initial state that has been set before changing the child-mode to ParallelStates will also produce a warning and remove the previously set initial state. Change-Id: Ie5fcd44b03516744f785f2d1880bf806918c44d4 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* Optimize CppCodeMarker::addMarkUp()Lars Knoll2015-07-233-12/+38
| | | | | | | | This cuts away another 15% of the running time of qdoc -prepare. Change-Id: I81bc32fa191b73fad5d7bd27ff22ac845f83a9ce Reviewed-by: Martin Smith <martin.smith@digia.com>
* Skip loading of index files if we are running with --prepareLars Knoll2015-07-231-3/+5
| | | | | | | This makes generation of the index files 3 times as fast. Change-Id: I89af86e54d932fa19330f36a33af6ed9ea81461d Reviewed-by: Martin Smith <martin.smith@digia.com>
* QStateMachine: remove left-over method.Erik Verbruggen2015-07-232-68/+5
| | | | | | | | | | This method was probably there in older versions of the specification, but it is no longer used now. The only caller was in QStateMachinePrivate::setError, which has been changed to use the newer methods. Change-Id: Ic4961990d8d2c902676e63193d3f30ef427e6f0c Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* QColor: make nothrow move-assignable and -constructibleMarc Mutz2015-07-222-4/+18
| | | | | | | | | The move special members were inhibited by the presence of user-defined copy ctor and assignment operator, which we cannot remove since the class is exported. Change-Id: I54fe6c28351fe69ca4b75066adb76ea07c959dfe Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* qvariant: Pass a couple of large types by const-ref in Qt6Sérgio Martins2015-07-222-0/+16
| | | | | | | sizeof is approx 100 bytes Change-Id: Ibd5fb50674effee832ce4529d737c060c570ffa3 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* qjsonarray: Remove a copy-ctor in Qt6Sérgio Martins2015-07-221-1/+3
| | | | | | | Makes the class trivially-copyable Change-Id: I5b8ebadf351b65344f7ee30f0e7211738fdf54e4 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* qdoc: replace some inefficient QLists with QVectorMarc Mutz2015-07-224-6/+6
| | | | | | | | | The types are either too large or too small for QList, which only has acceptable performance with movable types of size = sizeof(void*). Change-Id: I5a2354e9400baad44095f1eac18d76ef915f6545 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* tools: mark some types movable/primitiveMarc Mutz2015-07-228-0/+13
| | | | | | | They are held in QList or QVector. Change-Id: Ic0e379560e554e5cd3de4319e402ec1655e77874 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QSet/QQueue/QStack: remove docs for removed special member functionsMarc Mutz2015-07-223-59/+0
| | | | | | | | Commit 5c442321220e9ba7818e2eba4fa22b159b6477ab removed the functions, but not the docs. Change-Id: If12ec8a268cf67c7a62ba4f523360e0c79ce63ca Reviewed-by: Martin Smith <martin.smith@digia.com>
* QLocale: mark some private types movable/primitiveMarc Mutz2015-07-221-0/+3
| | | | | | | Because they are. Change-Id: I7f0b595fed568becdc33d1705fc8d7e372ec0c9d Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* doc: QTimeZone::OffsetDataList is a QVector, not a QListMarc Mutz2015-07-221-1/+1
| | | | | Change-Id: Ib5eb635fe267b743b970714c99db8c0abc9ac2c8 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QStringRef: make nothrow move-assign- and -constructibleMarc Mutz2015-07-221-9/+13
| | | | | | | | | | | | The move special members were inhibited by the presence of a non-trivial copy constructor/assignment operator and destructor. Restore them. While we're at it, move all the special member functions we should not have defined into an #if QT_VERSION block. Change-Id: I873a99bfefe03e0fb02676e3431fd51f8c8f0adc Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QRegExp: remove pointless QRegExpCharClass copy special member functionsMarc Mutz2015-07-221-14/+0
| | | | | | | | | They do exactly what the compiler-generated ones would do, but their presence inhibits the move special member function from being synthesized. Change-Id: Ib2046dbcee3c21ac3b5087f41d19e2a4a3e0a54f Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QXmlStreamAttribute: make nothrow move assignable and -constructibleMarc Mutz2015-07-221-0/+22
| | | | | | | | | | | | | | | Unfortunately, we cannot rely on Q_DECL_EQ_DEFAULT, so I needed to code the special member functions by hand. The 'reserved' field is pretty useless, since the existing ctors didn't initialize it, but just in case someone finds a way how to store information in there, deal with the field in the usual way: set to nullptr in the move ctor and swap in the move assignment operator. Change-Id: I15a5f61807cb67deb6e979d4f3e5a260384b20ab Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QItemSelectionRange: make nothrow move-assignable and -constructibleMarc Mutz2015-07-221-0/+11
| | | | | | | | | The move special members were inhibited by the presence of a user-defined copy ctor, which we cannot remove since the class is exported. Change-Id: I7118588b808387f2733d93216c8c3b117666bb9e Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QItemSelectionRange: use ctor-init-listMarc Mutz2015-07-221-8/+3
| | | | | | | | Avoids default-constructing two QPersistentModelIndex instances just to copy-assign to them. Change-Id: I0f3e04e3d202f58905f74df44d37dba27911a927 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* QItemSelectionRange: add nothrow member-swapMarc Mutz2015-07-222-0/+14
| | | | | | Change-Id: Ie550f4a66b3c623b0ec630c18f38bcd96f6bbc99 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Clarified the documentation for QTextDocument::find.Kavindra Palaraja2015-07-221-4/+12
| | | | | | | | | | | | QTextDocument::find has a behavior that is different from the typical QRegExp/QRegularExpression behavior where finding a given expression is always constrained by the paragraph (block), regardless of newline characters in the expression. Task-number: QTBUG-21785 Change-Id: Ia6a061c6feb5a19e6b8caa3d8009da5ca31ec422 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* QTestLib: Add macros QTRY_VERIFY2_WITH_TIMEOUT(), QTRY_VERIFY2().Friedemann Kleint2015-07-227-71/+221
| | | | | | | | | | | | | | Add QTRY_VERIFY2_WITH_TIMEOUT() similar to QTRY_VERIFY_WITH_TIMEOUT() except that QTRY_VERIFY2() is used below the loop and QTRY_VERIFY2() based on it. Add tests to cmptest. [ChangeLog][QtTest] Added macros QTRY_VERIFY2_WITH_TIMEOUT(), QTRY_VERIFY2() making it possible to output a message after the timeout has expired. Change-Id: I587e24f3aeb73542dbf3ccb936a16f2e0806555f Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
* Optimize moc: Preallocate space for list of arguments on the stack.Milian Wolff2015-07-221-1/+1
| | | | | | | This removes the temporary QList allocations. Change-Id: I1f255e94730202f719e0a97b9ab4a83e28b805c1 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QTestLib/Windows: Try to obtain a stack trace on crash.Friedemann Kleint2015-07-221-2/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add a helper class for resolving debug symbols by dynamically loading dbghelp.dll and try to obtain a symbol at the exception location and a stack trace by using CaptureStackBackTrace(). The output looks like: A crash occurred in d:\dev\projects\crashingtest_5d\debug\tst_crashingtesttest.exe. Exception address: 0x0000000052E2853A Exception code : 0xc0000005 Nearby symbol : QString::length Stack: # 1: windowsFaultHandler() - 0x00007FFE080CACD0 ... # 8: QString::length() - 0x0000000052E28530 [ChangeLog][QtTest] A stack trace will be output on standard error if a test crashes. Task-number: QTBUG-47370 Change-Id: I7217e02ec7dc0c96132fe84d1a175d0bed9c5aaf Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
* winrt: Fix build when INADDR_XXX macros are not definedAndrew Knight2015-07-221-0/+10
| | | | | | | | These macros are not defined unless a desktop or standalone SDK is installed. Change-Id: I4c600ddca5944cc5fde310e4fbe0866a7250d36b Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
* Fix creation of QPlatformTheme on UNIX platforms.Friedemann Kleint2015-07-221-3/+2
| | | | | | | | | | | | | | | | | | On Ubuntu 14.04.1 LTS, a file /etc/profile.d/appmenu-qt5.sh appeared, exporting QT_QPA_PLATFORMTHEME=appmenu-qt5 (application menu theme plugin). This caused QGenericUnixTheme::createUnixTheme() to return an instance of QGenericUnixTheme by theme name instead of the appropriate QKdeTheme, QGnomeTheme. Fix this by always appending the generic theme name to the list of available themes and returning it only if the name matches. Qt 5 applications will now appear correctly themed on Ubuntu, including theme icons. Change-Id: I68fcd80a620b74e2af73e938253dba9933816336 Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
* Port examples/widgets/dialogs to new connection syntax.Friedemann Kleint2015-07-2210-68/+50
| | | | | | Change-Id: Ife8a24b43db400909099765b43f016b4be4bd6ef Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* QSharedPointer: make copy assignment from compatible shared pointer use ↵Marc Mutz2015-07-211-14/+2
| | | | | | | | | | | copy-swap ... like all other assignment operators. Removes the last user of internalCopy(). Removed. Change-Id: I15f2cb3b7b26988dd3bc2f4475bc316480476993 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Windows: Include DirectWrite support by default if availableEskil Abrahamsen Blomfeldt2015-07-213-6/+55
| | | | | | | | | | | | | | | This will automatically add DirectWrite support if the required headers are found. The note about platform support from the help screen has also been removed, since Windows XP is not officially supported. Applications that need to run on XP can still build with -no-directwrite. Also changed the configure test to be a proper compile test, since cross-compiled builds for Windows CE may break otherwise. Change-Id: I7fc7bfb25f2f86ced8a4d4c78a69527de0273707 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Fixing Wec2013 qmake support for VS2013 SDKs.Björn Breitmeyer2015-07-211-6/+9
| | | | | | | | | | | SDKs generated from VS2013 use a different folder for build settings than those generated from VS2012. Check both folders, before rejecting a potential SDK. Change-Id: I5bee5cc3771352adaab07d39ebbc350618f6c573 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
* Wec2013 initial port.Bjoern Breitmeyer2015-07-212-2/+21
| | | | | Change-Id: Ib1dfdc5687e54daefd84982653967fe5eff8aab5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* Qt Test: Fix QCOMPARE message for signed and unsigned char.Vincas Dargis2015-07-212-0/+4
| | | | | | | | | | | QCOMPARE did not print "Actual" and "Expected" values for quint8 and qint8 variables when they where not equal. QTest::toString<T>() lacked specializations for signed and unsigned char types, that are actually distinct types from char. Change-Id: Iae789885c474c56441da45065992d7ccf1bc9f5c Task-number: QTBUG-45238 Reviewed-by: Jason McDonald <macadder1@gmail.com>
* Polish the widgets/mainwindows/mdi example.Friedemann Kleint2015-07-203-149/+125
| | | | | | | | | | | | | | | | | | | | | | | | | | - Introduce Qt 5 signals & slot syntax and remove the QSignalMapper used to map the triggered() signals of the per-MDI-child actions of the window menu to the activation slot by a functor to demonstrate the flexibility of the new connection syntax (the functor can in turn be replaced by a lambda expression once we have C++ 11). - Merge MainWindow::createMenus()/createQToolBars() into MainWindow::createActions(), removing the need to store the actions as member variables. Use QMenu::addAction() for brevity. - Use QIcon::fromTheme() to obtain system icons and use resource icons as fallback. - Rewrite settings code to use QWidget::saveGeometry(), Widget::restoreGeometry() since saving size and position does not work well with multiple screens. Query the available size when determining the initial size instead of using hard-coded values for High-DPI screens. - Fix minor issues in code, use multi-argument version of QString::arg(), QDir::toNativeSeparators() to present file paths to the user and static method invocation. Change-Id: I3d5078ddbe3cb4eba65e188430ba3580cecb2c79 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Update/fix the qmake support for yaccThiago Macieira2015-07-201-6/+6
| | | | | | | | | yacc.prf was mostly working, so this commit simply makes it slightly better by using the -p and -b options that POSIX requires and avoid having a common intermediate file. Change-Id: Ib306f8f647014b399b87ffff13f1e8e74ad4db1d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Makes sure that yacc works with the MSYS bison on Windows.Thiago Macieira2015-07-206-6/+6
| | | | | | | | | | Most people's yacc are actually a symlink to bison. On Windows, where symlinks don't usually exist, we can use bison -y. This was tested with MSYS Bison. Change-Id: I913745d48af30f9ef7b846b6438500261dd6022d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* QProcess: make setWorkingDirectory stop launch if the dir doesn't existThiago Macieira2015-07-202-8/+31
| | | | | | | | | | [ChangeLog][QtCore][QProcess] Fixed a bug that caused QProcess to launch a child process on Unix even if the directory specified with setWorkingDirectory did not exist. Task-number: QTBUG-47271 Change-Id: Ib306f8f647014b399b87ffff13f195158b0e52f5 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Selectively update library paths when creating QCoreApplicationUlf Hermann2015-07-203-19/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We force a recreation of the library paths with added information on construction of QCoreApplication. This way we can find plugins in the application directory which only becomes known when QCoreApplication is created. When the user changes the library path we create a new list of the manually modified library paths and recalculate it from the delta of original vs. modified paths when QCoreApplication is created. The upsides of this approach vs. keeping an explicit delta are: * We don't need to introduce a separate data structure to hold the added/removed status for delta items or the information that the whole list got replaced. * The lists never get larger than the the real library paths. An explicit delta would have to record all modifications. * I don't think the delta replay algorithm we would have to do anyway could be made much more compact than the one this change introduces. Of course, if the user actually changes anything, the list is duplicated. Considering that this is a rarely used function and that we would have to save some extra information anyway, I think we can live with this. Task-number: QTBUG-38598 Change-Id: I3bfbbd1be62dd5804dcc7ac808b053428a4e3149 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* ssl: add openssl-based QSslKeyPrivate::encrypt / decryptJeremy Lainé2015-07-205-10/+87
| | | | | | | | | | This adds an OpenSSL-based implementation of the QSslKeyPrivate encrypt and decrypt method. This puts both the OpenSSL-based and non-OpenSSL backends (WinRT for now) on par. Change-Id: I18a75ee5f1c223601e51ebf0933f4430e7c5c29b Reviewed-by: Andrew Knight <andrew.knight@intopalo.com> Reviewed-by: Richard J. Moore <rich@kde.org>
* Polish the examples/widgets/dockwidgets example.Friedemann Kleint2015-07-202-68/+41
| | | | | | | | | | | | | | - Introduce Qt 5 signals & slot syntax. - Use QIcon::fromTheme() to obtain system icons and use resource icons as fallback. - Fix minor issues in code, use multi-argument version of QString::arg(), QDir::toNativeSeparators() to present file paths to the user, static method invocations. - Use QMimeDatabase for file dialog. Change-Id: Ib7f947aaaa0c8034f0853b1c740ebf195821dae0 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Port examples/widgets/mainwindows/menus to new connection syntax.Friedemann Kleint2015-07-201-22/+22
| | | | | Change-Id: Ia7fa905cdda131d7c4a2c8a57557ea694eef3541 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* printsupport: Pass large type by const-refSérgio Martins2015-07-201-2/+2
| | | | | | | sizeof() is 144 bytes on x86_64 Change-Id: I11fbb3c37353aafa209cea388cfc505f9645a1bb Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QDirModel: remove pointless user-defined QDirNode destructorMarc Mutz2015-07-201-1/+0
| | | | | | | | | | The clearing of 'children' is already performed by the 'children' destructor, and the presence of the user-defined QDirNode destructor inhibits the move special member functions for QDirNode. Change-Id: Ie8025e7a2c4b1a8c0b691deda0e49b517f8a6ed5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* Add name to the cloexec feature testThiago Macieira2015-07-201-1/+1
| | | | | | | | | Also solves a warning printed: configure: 4200: shift: can't shift that many Change-Id: Ib306f8f647014b399b87ffff13f295e2cdb7f8d7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* QVectorND: mark as primitive, not just movableMarc Mutz2015-07-203-3/+3
| | | | | | | | | | | | | Every bit combination is a valid object, so the correct type classification is primitive, not just movable. This is BC, because it just changes whether the default ctor and dtor are run or not, and these types don't care. Change-Id: Ifbfa83128778744f15a086a65c8be1ce01a58820 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* qqnxinputcontext: Add support for EnterKeyTypeKai Uwe Broulik2015-07-194-2/+33
| | | | | Change-Id: I03b9d70b9bb05cd28fdcbb076764a2e1d9e3e0e3 Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* Mark QDBus{ObjectPath,Signature,Variant} shared-come-qt6Marc Mutz2015-07-191-12/+19
| | | | | | | The compiler-generated move operations are ok. Change-Id: Ida994b52e3ee6ce75afd50133e61488b94464eee Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* platformsupport/dbustray: mark some types as movableMarc Mutz2015-07-191-0/+2
| | | | | | | At least on is already held in QVector. Change-Id: Ifa29d924315a9d397bd591ae548f199dcefa03a4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* platformsupport/dbusmenu: fix uses of inefficient QListsMarc Mutz2015-07-191-5/+10
| | | | | | | | | | | | | These types are larger than a void*, so holding them in QLists is needlessly inefficient. Worse, the code could come to depend on the fragile property of (inefficient) QLists that references to elements therein never are invalidated. Fix by marking them movable, and holding in a QVector instead. Change-Id: I74b2ce327d6aee60e2cc3463ce09453a4305bba7 Reviewed-by: Dmitry Shachnev <mitya57@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QVector: add an rvalue overload of push_back/appendMarc Mutz2015-07-195-2/+69
| | | | | | | | | | This is low-hanging fruit, for two reasons: 1. The implementation is dead-simple (unlike, say, in QList). 2. It's completely transparent to the QVector user (unlike, say, emplace_back, which can only be used inside an ifdef). Change-Id: Iaf750100cf61ced77aa452f0e4e3c4ec36b29639 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QVector: in append(), if we take a copy, then move, not copy from the copyMarc Mutz2015-07-191-3/+3
| | | | | | | Replaces one copy ctor / assignment with a move ctor / assignment. Change-Id: I56768db9904283a9be7c87f624a557a64557bc8f Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* QIconLoader: don't make QIconDirInfo::type a bit-fieldMarc Mutz2015-07-191-1/+1
| | | | | | | | | | | | | It doesn't save any space, is not required for ABI compat (because it's private API), generates more code to extract the field, and triggers a bug in older GCCs when synthesizing a move constructor for this type: src/gui/image/qiconloader_p.h:64:8: error: invalid conversion from 'unsigned char:4' to 'QIconDirInfo::Type' [-fpermissive] src/corelib/tools/qvector.h:641:13: note: synthesized method 'QIconDirInfo& QIconDirInfo::operator=(QIconDirInfo&&)' first required here Change-Id: I61e886566b67c7a18a318a3d026dc762600f8ab4 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>