summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* 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 update: reflect use of native font dialog by default on macOSPierre Rossi2017-01-081-2/+1
| | | | | | | | | The documentation still stated that the Qt standard font dialog was used. Task-number: QTBUG-47572 Change-Id: Iff4262869efde2d9fefb38264b2f6f8a9d2f7483 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* doc: update QPrinter docs for clangqdocMartin Smith2017-01-062-288/+9
| | | | | | | | | | | | | | | The docs for QPrinter contained a use of Q_QDoc to declare an enum representing paper sizes for different printers, but this special declaration for qdoc was no longer needed, so it was removed. The real declaration is in QPagedPaintDevice, which is the public base class of QPrinter, and it is documented there. A few other uses of Q_QDOC were examined and either removed or upgraded to Q_CLANG_QDOC. One use of Q_OS_WIN was changed to also be included for Q_CLANG_QDOC. Change-Id: If6d810c624aa8d659fd0e3e753ba666d4d42ef83 Reviewed-by: Martin Smith <martin.smith@qt.io>
* 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>
* QMacStyle: Fix drawing of PE_IndicatorMenuCheckMarkGabriel de Dietrich2017-01-061-80/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | ... And refactor to use it for drawing CE_MenuItem. This removes a couple calls to HITheme. Instead, we use CoreText to render the checkmark character. Notice that this is what we were doing with HITheme for CE_MenuItem. Drawing PE_IndicatorMenuCheckMark was done manually, and in a way that has not been updated. Notice also that the choice of color from the palette has also been fixed to look for the State_Selected state instead of the State_On state, in accordance with QCommonStyle. In fact, on macOS, the checkmark is never rendered when the State_On bit is clear. Moreover, we systematically pick the checkmark color from the style option palette. [ChangeLog][QtWidgets][QMacStyle] PE_IndicatorMenuCheckMark looks for State_On instead of the State_Selected to set its highlighted state. Its color is picked from the style option palette. Change-Id: Ib033df357fd83080cb4320c43949f75bb079c8a5 Task-number: QTBUG-57470 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* QMacStyle: Remove unused focusRectPolicy methodsGabriel de Dietrich2017-01-063-60/+0
| | | | | Change-Id: I436c714aee25d8def4318a4b0aef022493dec19f Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* iOS: Ensure that QPlatformBackingStore can clean up textures in dtorTor Arne Vestbø2017-01-061-1/+11
| | | | | | | | | | | We are using QPlatformBackingStore::composeAndFlush, which allocates textures on our behalf using the context that we pass in, so we need to keep the context alive (and make it current) for the duration of the QPlatformBackingStore destructor, otherwise we're leaking textures every time a window (dialog e.g.) is closed. Change-Id: I1450fa0ff7a170d13ec59920566e4401b50cd513 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* iOS: Center IM cursor rectangle within available space when showing keyboardTor Arne Vestbø2017-01-061-8/+27
| | | | | | | | | | | | | | | | | | The cursor rectangle is translated into screen coordinates, and compared against the screen geometry after subtracting the future keyboard rect (which is already in screen coordinates). If the two do not overlap completely, the root view is shifted accordingly so that the cursor rectangle is placed in the center of the available space. A future improvement would be to first check if centering the input item's clip rectangle would bring the cursor within the available geometry, before falling back to using the cursor rectangle. This would look better for multi-line text inputs where the cursor is not in the center. Task-number: QTBUG-46747 Change-Id: If9b551b4d297e2a1f6d7f84b81628fa65c08edfd Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Improve mime type filters in QFileDialogElvis Angelaccio2017-01-065-3/+69
| | | | | | | | | | | | | This patch improves the handling of mime type filters in QFileDialog. The main change is in selectMimeTypeFilter(), which was just falling back unconditionally on selectNameFilter(). Instead, mime type filters should have an higher priority than name filters. This patch also adds a new selectedMimeTypeFilter() method, which is used in the unit test. Change-Id: Ice8bb08f5ff46e4a942d539f6001424eca878f74 Reviewed-by: David Faure <david.faure@kdab.com>
* iOS: Limit duration of FirstResponderCandidate to becomeFirstResponderTor Arne Vestbø2017-01-061-10/+15
| | | | | | | | | | | | We only need the FirstResponderCandidate for the duration of the call to [super becomeFirstResponder]. Keeping it around longer means that when emitting window activation events, which may result in changing the first responder again, we may wrongly conclude that we're not allowed to change the responder due to the FirstResponderCandidate still being alive. Change-Id: I8203e795cdde4128776283fe63a1907eb6ebc151 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* vnc: Add missing overrideAlexander Volkov2017-01-062-4/+4
| | | | | | | ... to fix build with clang. Change-Id: I1ddc1ed3c17f9c0b4ad0d983a28fe821a813e444 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* doc: Fix all remaining "Cannot tie" errors in QtBaseMartin Smith2017-01-0618-27/+23
| | | | | | | | | | | | 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: Removed a \fn command and a misplaced commentMartin Smith2017-01-051-3/+0
| | | | | | | | | They were preventing clangqdoc from matching two qdoc comments with the functions they are meant to document. Change-Id: Idfe9d0ab328e938d66e5da75d065974329be616d Reviewed-by: Martin Smith <martin.smith@qt.io>
* doc: Removed two cases of // staticMartin Smith2017-01-051-2/+0
| | | | | | | | | They were preventing clangqdoc from matching two qdoc comments with the functions they are meant to document. Change-Id: I51fea7957debc6fbfc89eb1a531ba8f39a34410a Reviewed-by: Martin Smith <martin.smith@qt.io>
* Provide default implementation of QPlatformMenuBar::createMenu()Tor Arne Vestbø2017-01-053-5/+6
| | | | | | | Instead of falling back to createPlatformMenu() in client code. Change-Id: Ia257449200f5c71f5e164072adce13d1137b1d87 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* Split QPlatformWindow::isEmbedded into isAncestorOf to separate concernsTor Arne Vestbø2017-01-058-33/+41
| | | | | | | | | | | The function was doing two things, both checking window ancestry and whether or the window was a direct child of non-Qt window. The former has now been split of in a QPlatformWindow::isAncestorOf(), which simplifies the code in e.g. QApplicationPrivate::isWindowBlocked(). Change-Id: I259a190e03ef8def23356005474eeeee74c9ae89 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Split fetchTransformedBilinearARGB32PMAllan Sandfeld Jensen2017-01-051-512/+645
| | | | | | | | | Split out the fast paths of fetchTransformedBilinearARGB32PM, so each can be more easily read on its own, and to prepare for future AVX2 versions. Change-Id: I1e9842a8928689823bf6d7d8a352625ed4b4b6c5 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* doc: Removed illegal qdoc commentsMartin Smith2017-01-051-5/+1
| | | | | | | | | Some member functions of a class declared in a cpp file were documented, but they should not have been documented. Change-Id: I9ce621bd858ebf1ad916beaf217d1c4d9feabbce Reviewed-by: Martin Smith <martin.smith@qt.io>
* doc: Moved two qdoc commentsMartin Smith2017-01-051-5/+6
| | | | | | | | They were simply not postioned correctly relative to the functions they were meant to document. Change-Id: I6eef94b291ae4ffe343d2728cc32477f55b2a871 Reviewed-by: Martin Smith <martin.smith@qt.io>
* doc: removed illegal qdoc commentsMartin Smith2017-01-041-2/+2
| | | | | | | | | Removed qdoc comment marker from two comments for static function defined in the cpp file. Tbey are not known globally. Change-Id: I485fa06142879b6c732b6865d264395deafade33 Reviewed-by: Martin Smith <martin.smith@qt.io>
* Always instantiate QPlatformAccessibilityFrederik Gladhorn2017-01-041-2/+7
| | | | | | | | | | | | | Instead of returning 0, instantiate QPlatformAccessibility which delegates the handling of accessibilty to accessibilitybridge plugins. This makes it possible to implement entirely custom handling of the accessibility events, making it possible to write for example in-process screen readers. Change-Id: I7bcfd83b769af8ca2689fb38add1345719cf804f Reviewed-by: Jesus Fernandez <jesus.fernandez@qt.io> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Add new APIs which is useful to upload more than one layer at onceBogDan Vatra2017-01-043-26/+75
| | | | | | | | | It's useful to upload textures storred in .KTX files without dividing the layers. It's also more efficient than uploading layer by layer. Change-Id: I92d93c57514e2a3637d1202cb83bd72b8d277edf Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Android: populate TouchPoint rotation and axes correctlyShawn Rutledge2017-01-042-8/+12
| | | | | | | | We model each TouchPoint contact patch as an ellipse now, which is consistent with Android APIs. Change-Id: I4edfbebfb5e1ab6686dba0ec924bfcfbbd6ff0f4 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* update bundled sqlite to 3.16.1André Klitzing2017-01-043-9824/+24047
| | | | | | | | [ChangeLog][Third-Party Code] Sqlite was updated to version 3.16.1. Change-Id: I9a19fcb6bbc95991ecf4699f2f7acf4b904eb4af Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Mark Brand <mabrand@mabrand.nl>
* QFileDialog: Only focus file name edit when becoming visibleTor Arne Vestbø2017-01-041-1/+1
| | | | | | | | | Doing it when hiding the dialog (which happens when closing it) makes no sense, and messes with the focus object for no reason. Change-Id: I4831d4a9b3c22248594f52bfa3b14dc73db110b7 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* macOS: Don't update screen for child windowsTor Arne Vestbø2017-01-041-7/+9
| | | | | | | | Results in 'Attempt to set a screen on a child window' warning from QWindow. Change-Id: Ib421bada07d2085c33a4dcb62e705b2c8e2ba1c4 Reviewed-by: Jake Petroules <jake.petroules@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>
* Fix QMenu position on a multi-display systemOleg Yadrov2017-01-021-4/+6
| | | | | | | | | Ensure that the point QPushButtonPrivate::adjustedMenuPosition() returns is on the same screen with the button Task-number: QTBUG-57689 Change-Id: If611d41fff4c72ae16369fd95bc5159f398894e9 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Added isObsolete and setObsolete functions in QUndoStackAddison Elliott2017-01-023-15/+147
| | | | | | | | | | | | | | | | | | | | Added isObsolete and setObsolete functions to QUndoCommand that signifies a command is not functional. This is useful for when two commands are merged in such a way that the merged command does nothing. Another particular use is with networking commands in which the command fails due to connection issues. The command is considered obsolete because the undo/redo functions do nothing since the connection failed. This property is checked in QUndoStack::push(), QUndoStack::undo(), QUndoStack::redo(), and QUndoStack::setIndex(). The obsolete flag is checked after QUndoCommand::undo(), QUndoCommand::redo(), and QUndoCommand::mergeWith() is called where applicable. This allows the user to set the obsolete flag within the QUndoCommand class and it will be deleted directly afterwards. Task-number: QTBUG-54970 Change-Id: Ia8e962ff3aa16515e8f9e2180aee5e1d726d5ba3 Reviewed-by: David Faure <david.faure@kdab.com>
* Added QSaveFile to the bootstrap librarySimon Hausmann2017-01-023-5/+20
| | | | | | | | 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>
* Q_ENUMS -> Q_ENUM and Q_FLAGS -> Q_FLAGAlbert Astals Cid2017-01-0220-21/+29
| | | | | Change-Id: I3cdc7338354da40ab20bdaeb9d5745264ea27228 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Add needed includes to qdesktopwidget_p.h and qwidgetwindow_p.hKimmo Ollila2017-01-022-0/+2
| | | | | | | | The template definitions are required here as we are using an object of type QPointer below when doing static cast of QPointer::data() Change-Id: I41e2b6f59667574ca3c5d75c5dddb203790adbce 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>
* linuxfb: generate expose eventsLaszlo Agocs2016-12-251-3/+18
| | | | | | Task-number: QTBUG-57747 Change-Id: I7e6a26b447cb929842e69e85fb91882c04ae10d0 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* eglfs: generate an expose whenever the geometry is changingLaszlo Agocs2016-12-251-1/+4
| | | | | | | | | Relevant for QWidget apps with multiple top-level widgets. With real windowing systems a resize will result in an expose. Follow suit. Task-number: QTBUG-57747 Change-Id: I9c6e9fa5e073f85a695df07d63176b1d2d657f25 Reviewed-by: Andy Nichols <andy.nichols@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>
* QSplitterHandle: Ensure a minimum grab areaGabriel de Dietrich2016-12-231-5/+8
| | | | | | | | | | | | | This used to work only for 0- and 1-pixel wide handles. However, and paradoxically, 2- and 3-pixel wide handles would end up with narrower grab areas. We now ensure a 4 or 5 minimum grab area, depending on the handle width parity. The patch also clears the margins and mask if the handle size is increased at some point. Change-Id: I8a16e39fb34b5452d9021dbde8c22bec79df0243 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* 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>
* Android: Prepare ministro repos for next releaseBogDan Vatra2016-12-231-1/+1
| | | | | | Task-number: QTBUG-57647 Change-Id: I7cbf6d4bb22f51530dc008e15ca635fed3b68a81 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
* QImageWriter: Do not assume that QIODevice::open() will succeedRobin Burchell2016-12-221-2/+7
| | | | | | | | | For instance, if we are passed a QFile to a path that does not exist, being told "No such file or directory" is significantly more useful than being told "Device not writable". Change-Id: I0cc72322f868f06ae2f77b3d0fac7e2094a1d2c7 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* QImageWriter: Explain slightly strange looking logic in canWriteRobin Burchell2016-12-221-0/+5
| | | | | Change-Id: Ic0fa4783351144ad8739669f1655b2fb0639a43d Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* QWindowsTheme: Run dedicated SHGetFileInfo() threadGabriel de Dietrich2016-12-212-32/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The changes are motivated by the following reasons: 1. SHGetFileInfo() needs to be COM-intialized per thread. Microsoft's documentation for CoInitalizeEx() is quite unambiguous about this. 2. Following point 1, using a thread from the global thread pool means we would taint every such thread with the COM-initialization state. This may result in unexpected behavior in other parts of the application. Moreover, systematic COM-uninitialization can be expensive and can't be recommended in this case. 3. Even though the timeout duration is pretty generous, the logic is wrong and could lead to serious errors should the call to SHGetFileInfo() actually take too long. This is because we let the thread run with references to the main thread's stack, namely a reference to the file name string, and pointers to the result variable and SHFILEINFO struct. Running a dedicated thread allows us to ensure points 1 and 2. Point 3 is ensured by making a local copy of the file name and using local instances for the info struct and the result. Then, provided the thread has not been cancelled, we can copy the info and result values back into the main thread's stack referenced memory areas. This also removes all need for QWindowsThreadPoolRunner which will remain in the code base nonetheless. Change-Id: Ic9c2d6204ac015aa409db2b57a09837361203291 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Suppress QOpenGLShaderProgram::link() warnings for binariesLaszlo Agocs2016-12-211-1/+1
| | | | | | | | | | No need to pollute the debug output when attempting to load a program binary which then gets rejected, because this is not fatal. We will simply recompile from source then. Change-Id: I762b7c66fc1ccdf8ab73d720ee10a349c287628b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Set the error for HTTP code 403 to be a ContentAccessDenied errorAndy Shaw2016-12-202-2/+2
| | | | | Change-Id: I1404bba998cdd7d426c8491908c53edcd3ebc7fb Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* Windows QPA: Initialize all members of QWindowsMouseHandlerFriedemann Kleint2016-12-201-3/+3
| | | | | | | Amends change 9ef93fa153e9093f7b1b9c901192dcf8282b6c3d. Change-Id: I74dd4cb81e2830552d465a5e855c08fe798617f1 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>