summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Rhi vulkan: Add memory barrier after image/buffer shader writesAntti Määttä4 days2-3/+84
| | | | | | | | | | Adds memory barrier when image/buffer has been written to in a shader. This is required so that reads and writes are synchronized between render calls. Task-number: QTBUG-125121 Change-Id: Ic3b5881d246b451bb83e97f77aa6692513de904c Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Hook Qt::Key_Call and Qt::Key_Hangup for xkbMéven Car4 days2-0/+7
| | | | | | | | | As found in laptops, like thinkpads. And Key_Call for directfb. Change-Id: I7858f5c81cff43c1550716e4141eef8209e4794f Reviewed-by: David Edmundson <davidedmundson@kde.org>
* wasm: Cancel drag on mouse releaseEven Oscar Andersen4 days1-3/+8
| | | | | | | | Without this, a click on a drag object will leave the application in an inconsistent state. Change-Id: I78c9a7b044380ae0b84b16c1579583efa6a4810b Reviewed-by: Lorn Potter <lorn.potter@qt.io>
* AtSpiAdaptor: avoid static QLatin1StringViewsMarc Mutz4 days1-22/+22
| | | | | | | | | | | | | | | | | | | The static forces the compiler to allocate storage for the objects in the executable, either causing relocations on startup, or, on GCC, a pointless magic static guard: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84411 Make them constexpr instead. This allows the compiler to construct them ad-hoc when one is needed (one lea, one movi). Amends 8e1ff45e74f529c7f49688242ea0fd25ce2913f3. Also port to _L1 UDLs, amending 7b6b133746aa8bf23e08753851d7e23cc9d76170. Pick-to: 6.10 6.8 6.5 Change-Id: I0cce28154f1155a2abee88572424f3c73073efe5 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Http2: remove declaration of function nowhere definedMårten Nordheim4 days1-1/+0
| | | | | | Change-Id: Iaf4169da2c325446a8bc817994333a1f183f622d Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Mate Barany <mate.barany@qt.io>
* wasm: Do not call preventDefault in dragstartedEven Oscar Andersen4 days1-2/+0
| | | | | | | | It blocks dragging. Change-Id: I9a0cdaeac29e96fac35b6e211f3da983fe2f9a6e Reviewed-by: Lorn Potter <lorn.potter@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* QByteArray: move percentDecoded() to the correct section in removed_apiAhmad Samir5 days1-7/+7
| | | | | | | | | Found in API hash tag review. Amends 8f4adf0948937ff2f0139bb676d064f2b26febc4. Change-Id: I8c32c4fc2e4c9cd8e32f9d029800364432e5c7dd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix parent control geometry for QToolTipVlad Zahorodnii5 days1-7/+10
| | | | | | | | | | | | | | | | | | Amends 4eed22e67ed98ec2565be84a4838955af0faf8b0. The parent control geometry is specified relative to the parent window. However, currently, the QToolTip passes it in the global coordinate system. If you have only one output, it'll work as expected, but with multi-monitor setups, tooltips will be mispositioned. The `if (w)` guard was added to let QtWayland compute a better fallback geometry if no parent widget has been provided to QToolTip::showText(). Change-Id: Ia674c4d41fa00ad341a529268c0bc127e5e182a3 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Core: Add operator[] to our meta-iteratorsUlf Hermann5 days6-4/+128
| | | | | | | | It's required by std::random_access_iterator_tag. Fixes: QTBUG-140181 Change-Id: Icb9c72395ea5c1a26069ac66d969c98fb9a58407 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Windows11Style: fix coloring QSpinBox/editable QComboBoxChristian Ehrlicher5 days1-48/+65
| | | | | | | | | | | | QSpinBox and (editable) QComboBox use a QLineEdit for the edit part. Therefore the coloring needs to be adjusted and a double painting of the QLineEdit background must be avoided. Also the geometries have to be adjusted here. Pick-to: 6.10 Fixes: QTBUG-142129 Change-Id: I2096323658aefc6ba305432c0daa4b5e445b5ac5 Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* Windows11Style: Adjust size of QLineEdit in QComboBoxChristian Ehrlicher5 days1-8/+23
| | | | | | | | | | | The subControlRect for SC_ComboBoxEditField can't be used from the base style as it does not properly takes the PM_MenuButtonIndicator width into account which makes the lineedit to large. Pick-to: 6.10 Task-number: QTBUG-142129 Change-Id: Ic3e28cdb29bb9f9e23ac9956b601896af5bebf41 Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* Windows11Style: make glyph constants enumerationsChristian Ehrlicher5 days1-65/+68
| | | | | | | | Use an enum class instead simple defines. Pick-to: 6.10 Change-Id: Ieb0e14134400d8263afe6e97e636478c9acb9e4e Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* SQLite: Update SQLite to v3.51.1Christian Ehrlicher5 days4-23/+55
| | | | | | | | [ChangeLog][Third-Party Code] Updated SQLite to v3.51.1 Pick-to: 6.5 6.8 6.10 Change-Id: Ib648ce417abcd376d4d2bbec3825216ef7c8a61d Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Widget/Styles: fix naming of fusion_normalizedockup imagesChristian Ehrlicher5 days5-4/+4
| | | | | | | | | | The size must be separated by '-' instead '_'. Pick-to: 6.10 6.8 Fixes: QTBUG-142139 Change-Id: Ifaeebbf50c9aec80984b99301b0a3f17ae7c8df8 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
* Core: Deprecate QVariant{Ref|ConstPointer|Pointer}Ulf Hermann5 days2-8/+29
| | | | | | | | | They cannot be fixed and have to be replaced by QVariant::{ConstReference|Reference|ConstPointer|Pointer}. Task-number: QTBUG-140181 Change-Id: I0b1f5799565a4965eef16bd6c88e6868c748f493 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Core: Deprecate Q{Associative|Sequential}IterableUlf Hermann5 days5-64/+155
| | | | | | | | | They cannot be fixed and have to be replaced by QMeta{Association|Sequence}::Iterable. Task-number: QTBUG-140181 Change-Id: Ic62dcfecb576f8cd11902a245a2ac5422f5011d3 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Include variable axes in QFont::toString()Vlad Zahorodnii5 days3-23/+103
| | | | | | | | With this change, variable axes can be saved and loaded from settings. Task-number: QTBUG-141412 Change-Id: I0744d05cc38ac47d89f3e4314311906c28c0ec63 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* QFont: cut out the QMap sorter in toString()Marc Mutz5 days1-5/+1
| | | | | | | | | | | | | The QMap shouldn't have been used as a sort() replacement, but now that 'features' is itself a QMap, we can skip this step. Amends 8fe6ad3eed40a8c851bf5d49e322f9794b9f7dcf. Task-number: QTBUG-141412 Task-number: QTBUG-142246 Change-Id: Ia40f82a776758a18ce057b49769ac38f3d2fdddb Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
* QFont: fix operator<()Marc Mutz5 days3-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Even though the docs try to dismiss any guarantees as to the behavior of the operator, they do mention it's there to make QFont usable as keys in QMap. QMap, being a wrapper around std::map, requires the key type to be sorted using a strict weak ordering. The current QFont::operator<() is not a strict weak ordering. In particular, because of the way the `features` QHash is compared (lexicographically, as far as I can make out), and due to the nature of QHash as an unordered container, it can easily happen that two QFont objects compare equal, but one is _also_ less than the other, according to this operator. To see this, consider that two QHash objects are equal if their linearizations are permutations of each other, but that doesn't mean that these linearizations need to be lexicograpically equal: {{1, 2}, {2, 4}} is a permutation of {{2, 4}, {1, 2}}, but the former is lexicographically strictly less the latter. The minimal fix is to use a QMap instead of a QHash. QMaps are ordered, so their linearizations are stable. A more comprehensive fix would kick out the QMap for either the std::map original, which, unlike QMap, already provides operator< that we could just use, or QFlatMap, depending on how many elements we expect in this container. Due to the leakage of of these types into other parts of the code, including public API in QTextFormat, that would be a larger undertaking, so is left for another day. I am not, yet, fully convinced that the preceding size() check does not also break strict-weak-ordering'ness, but at least it will not cause _equal_ fonts to be reported as strictly less, too. A port to lexicographical comparison would remove the last doubt, but is left for a follow-up patch. Amends 6160ea45b689e9d26795a18f155053ac4dc4dd6b. Task-number: QTBUG-142246 Pick-to: 6.10 6.8 Change-Id: I3db7b370592e100efaf5148e4c0e91d1d1925830 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
* Core: Provide non-broken metacontainer iterablesUlf Hermann5 days13-169/+1302
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QSequentialIterable and QAssociativeIterable are incapable of providing operator[] on their iterators because the references used by those iterators are not actually stable when the iterator is modified. The only way to fix this in a binary compatible way is to provide a complete set of new iterables and iterators. These are implemented in qmeta{association|sequence}.h and exposed through QMeta{Association|Sequence}::Iterable. In order to give users a convenient way to include those, we instruct syncqt to regard qmeta{association|sequence}.h as header to use in order to provide QMetaSequence and QMetaAssociation. These headers are the natural choice anyway. qmetacontainer.h still has to hold the (now incomplete) declarations for QMetaSequence and QMetaAssociation so that we remain source compatible. The new iterables offer a more consistent set of accessor methods and deprecate some of the old accessor methods. It makes little sense to add or remove a value from/to an iterable at an unspecified place. The new sequential iterable offers the more familiar append/prepend and removeFirst/removeLast methods. Finally, the new iterables warn when taking a slow code path that synthesizes operations not avaible on the actual container using iterators. There generally is a reason for those operations to not be available and we shouldn't second-guess the choices made by the authors of the container. For now, we have to keep those code paths intact to remain compatible with QSequentialIterable and QAssociativeIterable. Task-number: QTBUG-140181 Change-Id: I2f4c32716951fa023ae1fb8028d1a87e4c85c3a0 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* JNI: document the JObject type, remove TECH_PREVIEW_API tagsVolker Hilsheimer5 days4-9/+190
| | | | | | | | | | | | | The JObject(Base) types have been around for a while now, and are heavily used in Qt code. We can be confident that they work. Add documentation for the JObject helper type. The JObjectBase type has no public usage, it's just a technicality that takes care of type-independent implementations. Document it as internal. Fixes: QTBUG-141156 Change-Id: Ia6567e10dc57a022beb3d3aff0420b2b9b9f6b2f Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
* Schannel: Don't access empty list of CommonName for local certificateMårten Nordheim5 days4-4/+71
| | | | | | | | | | | | | | | | I accidentally wrote the code under the assumption that the local certificate will have some sort of CommonName, but that is not necessarily the case. This made it impossible to use a certificate without one. Amends 94f0ff704ead631114ecd2e10ba0839dad1aae10 Pick-to: 6.10 6.8 Fixes: QTBUG-142324 Change-Id: Idfac0b50f3f2abd36b39c7687c9fce2b259c3806 Reviewed-by: Mate Barany <mate.barany@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Doc: Add alt text for \image tags for QtSqlEren Bursali5 days2-0/+5
| | | | | | | | | Adding alt texts that were needed for qdoc Pick-to: 6.10 Change-Id: I0d6a32d3e4368b60016229bf04c24c6978896d9b Reviewed-by: Kai Köhne <kai.koehne@qt.io> Reviewed-by: Jerome Pasion <jerome.pasion@qt.io>
* tst_qxp_is_virtual_base_of: guard a MSVC versionGiuseppe D'Angelo5 days1-1/+1
| | | | | | | | | | | | Follow the rule of always guarding compiler versions when working around bugs; the test actually passes since MSVC 19.40 (at least). Amends 35878fa924d0598b1cdec5ba358e8488f6774676. Task-number: QTBUG-138246 Pick-to: 6.10 6.8 Change-Id: Id2d6eed4605ef3568ede1185827556b0ebd08fb5 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* tst_qxp_is_virtual_base_of: fix a test towards ambiguous basesGiuseppe D'Angelo5 days1-0/+6
| | | | | | | | | | | | | | | | | | | | | | | If a derived class inherits from the same base class both virtually and non-virtually, our implementation of the is_virtual_base_of trait cannot properly detect this due to the ambiguity, and will answer "false". On the other hand the version shipping in C++26 will correctly answer "true" (there *is* a virtual inheritance path). Amend the test to take this into account. Practically speaking, this behavioral difference isn't a cause of concern: this trait is used to guard conversions of pointers from derived classes towards base classes. That implies that the inheritance is not ambiguous (otherwise the pointer wouldn't be convertible to begin with). Amends 35878fa924d0598b1cdec5ba358e8488f6774676. Task-number: QTBUG-138246 Pick-to: 6.10 6.8 Change-Id: I5b115a826202d1fb6c793678d4660c847c1a7c71 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Silence missing deployment qtpaths warning on non-Windows platformsAlexandru Croitor6 days1-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | In 36cee508a088e1570e1d89e060c3ccd14585d3f1 we started showing a warning when a qtpaths executable or shell wrapper was not found in the qt prefix. This warning would appear on all platforms equally, even though in the end the __QT_DEPLOY_TARGET_QT_PATHS_PATH variable is only used when deploying a Windows app using windeployqt. An example of when the warning appears is with a yocto SDK, where the target qt prefix does not contain a qtpaths executable. Make sure the warning is only shown when targeting the Windows platform. I considered searching for candidate qtpaths also in the host prefix when available, but such a qtpaths most likely will not show information for the target platform, and thus deploy the wrong libraries. Amends 36cee508a088e1570e1d89e060c3ccd14585d3f1 Pick-to: 6.8 6.10 Fixes: QTBUG-142336 Change-Id: If3df1f61cf1550b7271268c71a5826ed673a62fa Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* wasm: remove manual dead key translationLorn Potter6 days11-479/+8
| | | | | | | | | | | | Dead keys are now handled through QWasmInputContext. This removes the duplicated and previous method of dead key handling. Remove deadkeytranslator auto test, as it was testing the dead key translator class being removed. Change-Id: Ibada7ba873ff109d5ad2837a8d2fba354b7eb8c2 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Even Oscar Andersen <even.oscar.andersen@qt.io>
* QList: add missing Q_CHECK_PTR in the constructors and in reserve()Thiago Macieira6 days2-5/+51
| | | | | | | | | | | | | Because QArrayDataPointer doesn't. QString and QByteArray constructors do this. resize() already has the macro because it uses QArrayDataPointer::reallocateAndGrow(). squeeze() is untestable. Pick-to: 6.10 6.8 Fixes: QTBUG-142345 Change-Id: I8e7898aed09364f20d1efffdc7ed70a2c152005c Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* wayland: Remove call to flushWindowSystemEventsBłażej Szczygieł6 days5-128/+2
| | | | | | | | | | | | | | | The flushWindowSystemEvents() call in flushRequests() was added in commit 84f1360289a to preserve event order when we had mixed synchronous and asynchronous expose events. That issue has been resolved in Qt 6.10 when we were able to make all expose calls synchronous, rendering this unneeded. Reverts 6ff771b86f7b961a5ff63f148cf69ecb3415dd95 Pick-to: 6.10 Fixes: QTBUG-139425 Fixes: QTBUG-141938 Change-Id: Idcf3dbc54dc9c3e37cdc586f9f872338e63f4f0d Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Add QIORing backend for QRandomAccessAsyncFileMårten Nordheim6 days5-6/+479
| | | | | | | | | | | | | | | | This adds a backend for QRandomAccessAsyncFile to use the recently introduced QIORing. Since all uses of of QRandomAccessAsyncFile expects signals to be emitted after returning control to the caller, and QIORing may complete anything synchronously, we emit signals only after returning to the event loop. This could probably be optimized later to be a direct emission when it's not technically needed, but is not a priority right now. Task-number: QTBUG-136763 Change-Id: I8acfa7f716e5625da498cc4b6fbe493ebd783f99 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QIORing/Linux: handle >2gib reads&writesMårten Nordheim6 days3-47/+173
| | | | | | | | | | | | | | | | | Linux internally truncates any read and write at a limit of 'MAX_RW_COUNT', which is slightly less than 2 GiB, for a few reasons. We will work around it by reading or writing some segments at a time, re-issuing another read/write operation whenever one completes until completed, EOF if reading, or an error occurs. Note that this MAX_RW_COUNT also applies to readv and writev, which means we would need a similar mechanism there to handle this. This is to be done in a follow-up. Task-number: QTBUG-136763 Change-Id: I9bcb75587ae5e84cb80ea3950a569f60c4906617 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Introduce QIORing to abstract io_uring on LinuxMårten Nordheim6 days11-0/+1506
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Somewhat low level code, intended as a low level abstraction. The QIORing interface would also be used for Windows' IORing, developed at the same time as the io_uring version. There is some shared code and helper functions, but a lot of the code in some way touch the platform specifics, so without yet more abstractions quite some code is left as unique. The fiveGiBReadWrite test case is currently EXPECT_FAIL because of the MAX_RW_COUNT limit on Linux (and its inability to report >2GiB results). Either we have to document this in the public-facing parts, or we need to work around / iron over the issue. To be done in a follow-up patch. We only ever notify the kernel of the work to be done after returning to the event loop, unless the ring is full. Then we notify the kernel right away in hopes it will manage to clear up some space to queue more. We, ourselves, are not actually limited by the kernel ring buffers as we keep a queue (in the form of a std::list) of pending tasks. The reason why it's a std::list is that it guarantees stable references, and that lets us use the pointer-to-task as the 'user_data' of the submitted work, so we can easily access the task again when the kernel adds it to the completion queue. Task-number: QTBUG-136763 Change-Id: I9cb80a2b96a49f2a557bef3b0ad6d367d76f5ab8 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* [docs] QMatrix4x4: fix a typo in the documentation of fill()Marc Mutz6 days1-1/+1
| | | | | | | | Amends the start of the public history. Pick-to: 6.10 6.8 6.5 Change-Id: I6773339a66806b07984fdc4772fa563891d53b0e Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* SQL/MariaDB: Enable MYSQL_OPT_TLS_VERSIONChristian Ehrlicher6 days2-2/+2
| | | | | | | | | MYSQL_OPT_TLS_VERSION is supported since MariaDB C Connector 3.1.10 so we should enable it also for MariaDB. Pick-to: 6.10 Change-Id: Iaec42fa83bf6da42295d297455f07436afeae8d3 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* Doc: Update model/view diagrams to styled SVG versionsDavid Boddie6 days5-4/+518
| | | | | | | | | | | | Existing images are not suitable for use with the dark theme of the online documentation. SVG files are more versatile and can be styled for the light and dark themes. Some hard-coded properties are used to ensure that Assistant's SVG renderer can display the files in a reasonable way. Change-Id: Iafb72835937f1e96598993ee61de6f384e68b50b Reviewed-by: Jerome Pasion <jerome.pasion@qt.io>
* QRangeModel: fix two more unqualified wrapped_t usesMarc Mutz6 days1-3/+7
| | | | | | | | | One amending 4207a1664d6901322c19edddad95ec53bdd2a017, the other amending c1341b7557ce52c681618c77c17687623fc0f3b2. Pick-to: 6.10 Change-Id: Ib5db1a0728e359499a1a53d12a8157df7c3569e6 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* CMake: Replace qt_set01 with explicit if() conditionsJoerg Bornemann6 days5-51/+176
| | | | | | | | | | | | | | | | | | | | | | | | The qt_set01 function had a critical argument quoting flaw. This happened because CMake removes quotes when calling the function, causing variable substitution in the condition evaluation. For example, calling qt_set01(QNX CMAKE_SYSTEM_NAME STREQUAL "QNX") with QNX already set to 1 would evaluate CMAKE_SYSTEM_NAME STREQUAL QNX (where QNX expands to 1) instead of CMAKE_SYSTEM_NAME STREQUAL "QNX". This particularly affected users with QNX toolchains that pre-set the QNX variable, causing configure to fail. Replace all qt_set01 calls with explicit if/else blocks that properly preserve string literals and avoid the eval-like behavior. Remove the qt_set01 function. The platform detection code is now admittedly more verbose but plain CMake without argument quoting pitfalls. Pick-to: 6.8 6.10 Fixes: QTBUG-142267 Change-Id: I642fc8582001b8c7b7b6ff56eae7ccabc89ba565 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* QRM: Only detect rotate if the iterator models at least forward_iteratorVolker Hilsheimer6 days1-2/+4
| | | | | | | | Amends dc2521c156fb694f379104191e540a57371b41f0 Change-Id: I2a1e7da5aa5b7015ced25fcc49c1e66275db4bc8 Reviewed-by: Nils Petter Skålerud <nils.petter.skalerud@qt.io> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
* QRawFont: de-inline two-arg advancesForGlyphIndexes()Marc Mutz6 days2-11/+11
| | | | | | | | | | | | | | | | | Functions in which owning containers allocate should not be defined inline, because of the amount of code generated. Unlike similar changes in the past, this wasn't found by Clang -ftime-trace, but highlighted by adding GCC -Wnrvo to headersclean. Instead of rewriting the function, pull it behind the ABI boundary. Can't pick back, because it adds an exported symbol (on Unix, Windows already had it, due to the wholesale export of the class), so isn't forwards-BC. Change-Id: I0d7ac417e129023f9688028685e818e7ab6ab7e2 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* QtHeadersClean.cmake: add note about using `configure -headersclean`Ahmad Samir6 days1-0/+2
| | | | | | | | It may be obvious for more exprienced developers, but it's wasn't obvious for me. So help the next guy figure it out. Change-Id: Iea0538b4b1efbd4729b132fc1242996bb546a02e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Doc: Mark internal reimplemented functions as only reimplementedDavid Boddie6 days2-4/+4
| | | | | | | | | This provides useful links to the reimplemented API documentation. Pick-to: 6.8 6.10 Task-number: QTBUG-140667 Change-Id: Ia7148b46f349357eae1f1a26a5737487371b88c1 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Doc: Fix QDoc warnings for internal classes in Qt WidgetsJerome Pasion6 days22-8/+138
| | | | | | | | -Internal classes should have internal class documentation. Task-number: QTBUG-141665 Change-Id: I399e0cec51a9308172301a862dcd07e6137e9854 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QRangeModel: don't refer to wrapped_t with its unqualified nameMarc Mutz7 days1-21/+28
| | | | | | | | | | | | | | | | This enables ADL, which might end up picking up unrelated templates from user namespaces, and, due to QtPrivate::wrapped_t in qanystringview.h, breaks TUs (such as -unity-build), where both headers are included. Amends the addition of the feature, somewhere before the bdbe4c8858e378d5b90bed799b67304d452fc0da rename to QRangeModel. Task-number: QTBUG-142184 Fixes: QTBUG-142182 Pick-to: 6.10 Change-Id: Id41ec4bca1059ab525c5c6bfad052d83572e1d91 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Add missing forwarding for channel signals in QLocalSocket / UnixAndreas Hartmetz7 days1-0/+4
| | | | | | | | | | | | | | QLocalSocket internally uses a QTcpSocket that actually operates on a local socket file descriptor. The forwarding of what that socket does was missing for the channelReadyRead() and channelBytesWritten() signals. [ChangeLog][QtNetwork][QLocalSocket][Unix] Fixed QLocalSocket not emitting channelReadyRead() and channelBytesWritten() signals Pick-to: 6.10 6.9 6.8 6.5 Change-Id: Iacf736374e026ddb475522d4a8e8fd8c5b5564bb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QFlatMap: use QtPrivate::ArrowProxy instead of own mock_pointerMarc Mutz8 days1-26/+3
| | | | | | | | | | | | .. to use a common vocabulary, and share code. Amends 900d4bd29f30effbb5dbb0efa96886af03839a15, which introduced ArrowProxy for use in QKeyValueIterator and QDomNodeList::It. This is just another user I've overlooked up to now. Pick-to: 6.10 6.8 Change-Id: I2c1eecc75a209ce552ddd1fdebfc6da784c83a00 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Add computeWindowStyles helper to window class registryPavel Dubsky9 days2-20/+43
| | | | | | | | | Introduced computeWindowStyles to centralize logic for determining window class style flags based on window type, surface type, and properties like drop shadows. Change-Id: I3c3ddeb89b462f7a25754ae51e605f1fade7cf7f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Move hasIcon logic into computeHasIcon helperPavel Dubsky9 days2-6/+21
| | | | | | | | Introduced computeHasIcon to centralize logic determining whether a window class should include an icon, based on window type and flags. Change-Id: I4702bbb0833e90163382fb318f990c79fc0f93f5 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QFont: fix a QT_ASCII_CAST_WARNMarc Mutz9 days1-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Says GCC: qfont.cpp:2202:81: required from here 2202 | fontDescription += comma + tag.toString() + u'=' + QString::number(value); | ^ qstringbuilder.h:403:37: warning: ‘static void QConcatenable<QByteArray>::appendTo(const QByteArray&, QChar*&)’ is deprecated: Use fromUtf8, QStringLiteral, or QLatin1StringView [-Wdeprecated-declarations] 403 | QConcatenableEx<B>::appendTo(p.b, out); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ qstringbuilder.h:372:43: note: declared here 372 | QT_ASCII_CAST_WARN static inline void appendTo(const QByteArray &ba, QChar *&out) | ^~~~~~~~ This is because Tag::toString() returns QByteArray, not QString. To fix, wrap the toString() result in QLatin1StringView. This is safe, because the temporary QByteArray will be kept alive until the end of the full-expression, so until after op+= has executed. It does change the serialization vis-a-vis the old code, but a) only for non-US-ASCII tags, which are not really valid, and b) we make it more robust now, because each random 4-octet sequence is a valid L1 string, but many are not valid UTF-8, so their interpretation as U8 by the old code (QByteArray → QString assumes U8) depends on behavior of Qt outside its spec. GIGO applies, of course, but we don't tend to specify the GO for any given GI, so it's better to use an algorithm for which no input is "garbage". Amends 8fe6ad3eed40a8c851bf5d49e322f9794b9f7dcf. Task-number: QTBUG-141412 Change-Id: Ic45f9147ca54201a33d953da57b768d2a5d115e4 Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
* QFlatMap: use QT_DEFINED_TAG for OrderedUniqueRangeMarc Mutz9 days1-2/+2
| | | | | | | | | | | | It applies extra safety measures for such tag types. Amends 74a87a329498422db0dea3e469fb84704accbb2b, which ought to have ported this tag struct, too. Pick-to: 6.10 6.8 Change-Id: Idd2c116d1045f4218ec74c52f8ddf00324abd59c Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* JNI: Allow clients to opt into their own exception handlingVolker Hilsheimer9 days8-240/+1010
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Detect whether the return type of a call is similar to std::expected. This indicates that the caller wants to handle exceptions explicitly, so in case of error, we pass it through the the std::expected-like value. We still clear the exception state. The caller is responsible for freeing the jthrowable local reference. For this to work, we have to propagate errors through to the outer-most function. This includes allowing QJniObject to create QJniEnvironment instances that don't implicitly return a clean environment in the destructor. As long as we can call checkAndClearExceptions() in the public functions (unless the caller opts in), this should not break any existing code that expects QJniObject to implicitly clear exceptions. Add tests for all overloads to make sure that exceptions (from wrong class or method names, and thrown in methods) are caught. Add "Impl" helpers that do not handle exceptions if instantiated accordingly, and call those if we have to maintain compatibility in public functions while also enabling opt-in handling for modern APIs. Add tests that show that we can now handle exceptions ourselves for all public QJniObject APIs. If possible, we build the test with C++23 so that we can use std::expected; otherwise, try to use tl::expected by downloading the header-only implementation from github; and failing that, use a minimal implementation of a type that could be used instead and makes the test pass. Fixes: QTBUG-93800 Fixes: QTBUG-119791 Task-number: QTBUG-92952 Change-Id: I1cfac37ac9af8fd421bc0af030a1d448dd0e259e Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>