From 8e947d00a36f87019022a2673a014d462c344510 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Mar 14 2024 12:42:29 +0000 Subject: Rebase patches on top of Qt 5.15.13 --- diff --git a/0001-CVE-2023-51714-qtbase-5.15.patch b/0001-CVE-2023-51714-qtbase-5.15.patch deleted file mode 100644 index 771b8c0..0000000 --- a/0001-CVE-2023-51714-qtbase-5.15.patch +++ /dev/null @@ -1,38 +0,0 @@ -From ea63c28efc1d2ecb467b83a34923d12462efa96f Mon Sep 17 00:00:00 2001 -From: Marc Mutz -Date: Tue, 12 Dec 2023 20:51:56 +0100 -Subject: [PATCH] HPack: fix a Yoda Condition - -Putting the variable on the LHS of a relational operation makes the -expression easier to read. In this case, we find that the whole -expression is nonsensical as an overflow protection, because if -name.size() + value.size() overflows, the result will exactly _not_ -be > max() - 32, because UB will have happened. - -To be fixed in a follow-up commit. - -As a drive-by, add parentheses around the RHS. - -Change-Id: I35ce598884c37c51b74756b3bd2734b9aad63c09 -Reviewed-by: Allan Sandfeld Jensen -(cherry picked from commit 658607a34ead214fbacbc2cca44915655c318ea9) -Reviewed-by: Qt Cherry-pick Bot -(cherry picked from commit 4f7efd41740107f90960116700e3134f5e433867) -(cherry picked from commit 13c16b756900fe524f6d9534e8a07aa003c05e0c) -(cherry picked from commit 1d4788a39668fb2dc5912a8d9c4272dc40e99f92) -(cherry picked from commit 87de75b5cc946d196decaa6aef4792a6cac0b6db) ---- - -diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp -index 834214f..ab166a6 100644 ---- a/src/network/access/http2/hpacktable.cpp -+++ b/src/network/access/http2/hpacktable.cpp -@@ -63,7 +63,7 @@ - // 32 octets of overhead." - - const unsigned sum = unsigned(name.size() + value.size()); -- if (std::numeric_limits::max() - 32 < sum) -+ if (sum > (std::numeric_limits::max() - 32)) - return HeaderSize(); - return HeaderSize(true, quint32(sum + 32)); - } diff --git a/0002-CVE-2023-51714-qtbase-5.15.patch b/0002-CVE-2023-51714-qtbase-5.15.patch deleted file mode 100644 index b002d59..0000000 --- a/0002-CVE-2023-51714-qtbase-5.15.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 23c3fc483e8b6e21012a61f0bea884446f727776 Mon Sep 17 00:00:00 2001 -From: Marc Mutz -Date: Tue, 12 Dec 2023 22:08:07 +0100 -Subject: [PATCH] HPack: fix incorrect integer overflow check - -This code never worked: - -For the comparison with max() - 32 to trigger, on 32-bit platforms (or -Qt 5) signed interger overflow would have had to happen in the -addition of the two sizes. The compiler can therefore remove the -overflow check as dead code. - -On Qt 6 and 64-bit platforms, the signed integer addition would be -very unlikely to overflow, but the following truncation to uint32 -would yield the correct result only in a narrow 32-value window just -below UINT_MAX, if even that. - -Fix by using the proper tool, qAddOverflow. - -Manual conflict resolutions: - - qAddOverflow doesn't exist in Qt 5, use private add_overflow - predecessor API instead - -Change-Id: I7599f2e75ff7f488077b0c60b81022591005661c -Reviewed-by: Allan Sandfeld Jensen -(cherry picked from commit ee5da1f2eaf8932aeca02ffea6e4c618585e29e3) -Reviewed-by: Qt Cherry-pick Bot -(cherry picked from commit debeb8878da2dc706ead04b6072ecbe7e5313860) -Reviewed-by: Thiago Macieira -Reviewed-by: Marc Mutz -(cherry picked from commit 811b9eef6d08d929af8708adbf2a5effb0eb62d7) -(cherry picked from commit f931facd077ce945f1e42eaa3bead208822d3e00) -(cherry picked from commit 9ef4ca5ecfed771dab890856130e93ef5ceabef5) -Reviewed-by: MÃ¥rten Nordheim ---- - -diff --git a/src/network/access/http2/hpacktable.cpp b/src/network/access/http2/hpacktable.cpp -index ab166a6..de91fc0 100644 ---- a/src/network/access/http2/hpacktable.cpp -+++ b/src/network/access/http2/hpacktable.cpp -@@ -40,6 +40,7 @@ - #include "hpacktable_p.h" - - #include -+#include - - #include - #include -@@ -62,7 +63,9 @@ - // for counting the number of references to the name and value would have - // 32 octets of overhead." - -- const unsigned sum = unsigned(name.size() + value.size()); -+ size_t sum; -+ if (add_overflow(size_t(name.size()), size_t(value.size()), &sum)) -+ return HeaderSize(); - if (sum > (std::numeric_limits::max() - 32)) - return HeaderSize(); - return HeaderSize(true, quint32(sum + 32)); diff --git a/0006-Re-implement-palette-standardPixmap-file-icons-fonts.patch b/0006-Re-implement-palette-standardPixmap-file-icons-fonts.patch index 65e3667..af855c6 100644 --- a/0006-Re-implement-palette-standardPixmap-file-icons-fonts.patch +++ b/0006-Re-implement-palette-standardPixmap-file-icons-fonts.patch @@ -10,7 +10,7 @@ React to runtime theme changes. Re-implement methods to retrieve GTK3 styled standardPixmaps, fonts and file icons. --- - .../5.15.12/QtCore/private/qflatmap_p.h | 2 + + .../5.15.13/QtCore/private/qflatmap_p.h | 2 + src/corelib/tools/qflatmap_p.h | 1107 +++++++++++++++++ src/plugins/platformthemes/gtk3/gtk3.pro | 6 + .../platformthemes/gtk3/qgtk3interface.cpp | 558 +++++++++ @@ -22,7 +22,7 @@ and file icons. .../platformthemes/gtk3/qgtk3theme.cpp | 23 + src/plugins/platformthemes/gtk3/qgtk3theme.h | 8 + 11 files changed, 3155 insertions(+) - create mode 100644 include/QtCore/5.15.12/QtCore/private/qflatmap_p.h + create mode 100644 include/QtCore/5.15.13/QtCore/private/qflatmap_p.h create mode 100644 src/corelib/tools/qflatmap_p.h create mode 100644 src/plugins/platformthemes/gtk3/qgtk3interface.cpp create mode 100644 src/plugins/platformthemes/gtk3/qgtk3interface_p.h @@ -31,11 +31,11 @@ and file icons. create mode 100644 src/plugins/platformthemes/gtk3/qgtk3storage.cpp create mode 100644 src/plugins/platformthemes/gtk3/qgtk3storage_p.h -diff --git a/include/QtCore/5.15.12/QtCore/private/qflatmap_p.h b/include/QtCore/5.15.12/QtCore/private/qflatmap_p.h +diff --git a/include/QtCore/5.15.13/QtCore/private/qflatmap_p.h b/include/QtCore/5.15.13/QtCore/private/qflatmap_p.h new file mode 100644 index 0000000000..e629799f72 --- /dev/null -+++ b/include/QtCore/5.15.12/QtCore/private/qflatmap_p.h ++++ b/include/QtCore/5.15.13/QtCore/private/qflatmap_p.h @@ -0,0 +1,2 @@ +#include "../../../../../src/corelib/tools/qflatmap_p.h" + diff --git a/CVE-2024-25580-qtbase-5.15.patch b/CVE-2024-25580-qtbase-5.15.patch deleted file mode 100644 index b3893f0..0000000 --- a/CVE-2024-25580-qtbase-5.15.patch +++ /dev/null @@ -1,197 +0,0 @@ -diff --git a/src/gui/util/qktxhandler.cpp b/src/gui/util/qktxhandler.cpp -index 0d98e97453..6a79e55109 100644 ---- a/src/gui/util/qktxhandler.cpp -+++ b/src/gui/util/qktxhandler.cpp -@@ -73,7 +73,7 @@ struct KTXHeader { - quint32 bytesOfKeyValueData; - }; - --static const quint32 headerSize = sizeof(KTXHeader); -+static constexpr quint32 qktxh_headerSize = sizeof(KTXHeader); - - // Currently unused, declared for future reference - struct KTXKeyValuePairItem { -@@ -103,11 +103,36 @@ struct KTXMipmapLevel { - */ - }; - --bool QKtxHandler::canRead(const QByteArray &suffix, const QByteArray &block) -+static bool qAddOverflow(quint32 v1, quint32 v2, quint32 *r) { -+ // unsigned additions are well-defined -+ *r = v1 + v2; -+ return v1 > quint32(v1 + v2); -+} -+ -+// Returns the nearest multiple of 4 greater than or equal to 'value' -+static bool nearestMultipleOf4(quint32 value, quint32 *result) -+{ -+ constexpr quint32 rounding = 4; -+ *result = 0; -+ if (qAddOverflow(value, rounding - 1, result)) -+ return true; -+ *result &= ~(rounding - 1); -+ return false; -+} -+ -+// Returns a slice with prechecked bounds -+static QByteArray safeSlice(const QByteArray& array, quint32 start, quint32 length) - { -- Q_UNUSED(suffix) -+ quint32 end = 0; -+ if (qAddOverflow(start, length, &end) || end > quint32(array.length())) -+ return {}; -+ return QByteArray(array.data() + start, length); -+} - -- return (qstrncmp(block.constData(), ktxIdentifier, KTX_IDENTIFIER_LENGTH) == 0); -+bool QKtxHandler::canRead(const QByteArray &suffix, const QByteArray &block) -+{ -+ Q_UNUSED(suffix); -+ return block.startsWith(QByteArray::fromRawData(ktxIdentifier, KTX_IDENTIFIER_LENGTH)); - } - - QTextureFileData QKtxHandler::read() -@@ -115,42 +140,97 @@ QTextureFileData QKtxHandler::read() - if (!device()) - return QTextureFileData(); - -- QByteArray buf = device()->readAll(); -- const quint32 dataSize = quint32(buf.size()); -- if (dataSize < headerSize || !canRead(QByteArray(), buf)) { -- qCDebug(lcQtGuiTextureIO, "Invalid KTX file %s", logName().constData()); -+ const QByteArray buf = device()->readAll(); -+ if (size_t(buf.size()) > std::numeric_limits::max()) { -+ qWarning(lcQtGuiTextureIO, "Too big KTX file %s", logName().constData()); -+ return QTextureFileData(); -+ } -+ -+ if (!canRead(QByteArray(), buf)) { -+ qWarning(lcQtGuiTextureIO, "Invalid KTX file %s", logName().constData()); -+ return QTextureFileData(); -+ } -+ -+ if (buf.size() < qsizetype(qktxh_headerSize)) { -+ qWarning(lcQtGuiTextureIO, "Invalid KTX header size in %s", logName().constData()); - return QTextureFileData(); - } - -- const KTXHeader *header = reinterpret_cast(buf.constData()); -- if (!checkHeader(*header)) { -- qCDebug(lcQtGuiTextureIO, "Unsupported KTX file format in %s", logName().constData()); -+ KTXHeader header; -+ memcpy(&header, buf.data(), qktxh_headerSize); -+ if (!checkHeader(header)) { -+ qWarning(lcQtGuiTextureIO, "Unsupported KTX file format in %s", logName().constData()); - return QTextureFileData(); - } - - QTextureFileData texData; - texData.setData(buf); - -- texData.setSize(QSize(decode(header->pixelWidth), decode(header->pixelHeight))); -- texData.setGLFormat(decode(header->glFormat)); -- texData.setGLInternalFormat(decode(header->glInternalFormat)); -- texData.setGLBaseInternalFormat(decode(header->glBaseInternalFormat)); -- -- texData.setNumLevels(decode(header->numberOfMipmapLevels)); -- quint32 offset = headerSize + decode(header->bytesOfKeyValueData); -- const int maxLevels = qMin(texData.numLevels(), 32); // Cap iterations in case of corrupt file. -- for (int i = 0; i < maxLevels; i++) { -- if (offset + sizeof(KTXMipmapLevel) > dataSize) // Corrupt file; avoid oob read -- break; -- const KTXMipmapLevel *level = reinterpret_cast(buf.constData() + offset); -- quint32 levelLen = decode(level->imageSize); -- texData.setDataOffset(offset + sizeof(KTXMipmapLevel::imageSize), i); -- texData.setDataLength(levelLen, i); -- offset += sizeof(KTXMipmapLevel::imageSize) + levelLen + (3 - ((levelLen + 3) % 4)); -+ texData.setSize(QSize(decode(header.pixelWidth), decode(header.pixelHeight))); -+ texData.setGLFormat(decode(header.glFormat)); -+ texData.setGLInternalFormat(decode(header.glInternalFormat)); -+ texData.setGLBaseInternalFormat(decode(header.glBaseInternalFormat)); -+ -+ texData.setNumLevels(decode(header.numberOfMipmapLevels)); -+ -+ const quint32 bytesOfKeyValueData = decode(header.bytesOfKeyValueData); -+ quint32 headerKeyValueSize; -+ if (qAddOverflow(qktxh_headerSize, bytesOfKeyValueData, &headerKeyValueSize)) { -+ qWarning(lcQtGuiTextureIO, "Overflow in size of key value data in header of KTX file %s", -+ logName().constData()); -+ return QTextureFileData(); -+ } -+ -+ if (headerKeyValueSize >= quint32(buf.size())) { -+ qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData()); -+ return QTextureFileData(); -+ } -+ -+ // Technically, any number of levels is allowed but if the value is bigger than -+ // what is possible in KTX V2 (and what makes sense) we return an error. -+ // maxLevels = log2(max(width, height, depth)) -+ const int maxLevels = (sizeof(quint32) * 8) -+ - qCountLeadingZeroBits(std::max( -+ { header.pixelWidth, header.pixelHeight, header.pixelDepth })); -+ -+ if (texData.numLevels() > maxLevels) { -+ qWarning(lcQtGuiTextureIO, "Too many levels in KTX file %s", logName().constData()); -+ return QTextureFileData(); -+ } -+ -+ quint32 offset = headerKeyValueSize; -+ for (int level = 0; level < texData.numLevels(); level++) { -+ const auto imageSizeSlice = safeSlice(buf, offset, sizeof(quint32)); -+ if (imageSizeSlice.isEmpty()) { -+ qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData()); -+ return QTextureFileData(); -+ } -+ -+ const quint32 imageSize = decode(qFromUnaligned(imageSizeSlice.data())); -+ offset += sizeof(quint32); // overflow checked indirectly above -+ -+ texData.setDataOffset(offset, level); -+ texData.setDataLength(imageSize, level); -+ -+ // Add image data and padding to offset -+ quint32 padded = 0; -+ if (nearestMultipleOf4(imageSize, &padded)) { -+ qWarning(lcQtGuiTextureIO, "Overflow in KTX file %s", logName().constData()); -+ return QTextureFileData(); -+ } -+ -+ quint32 offsetNext; -+ if (qAddOverflow(offset, padded, &offsetNext)) { -+ qWarning(lcQtGuiTextureIO, "OOB request in KTX file %s", logName().constData()); -+ return QTextureFileData(); -+ } -+ -+ offset = offsetNext; - } - - if (!texData.isValid()) { -- qCDebug(lcQtGuiTextureIO, "Invalid values in header of KTX file %s", logName().constData()); -+ qWarning(lcQtGuiTextureIO, "Invalid values in header of KTX file %s", -+ logName().constData()); - return QTextureFileData(); - } - -@@ -191,7 +271,7 @@ bool QKtxHandler::checkHeader(const KTXHeader &header) - (decode(header.numberOfFaces) == 1)); - } - --quint32 QKtxHandler::decode(quint32 val) -+quint32 QKtxHandler::decode(quint32 val) const - { - return inverseEndian ? qbswap(val) : val; - } -diff --git a/src/gui/util/qktxhandler_p.h b/src/gui/util/qktxhandler_p.h -index f831e59d95..cdf1b2eaf8 100644 ---- a/src/gui/util/qktxhandler_p.h -+++ b/src/gui/util/qktxhandler_p.h -@@ -68,7 +68,7 @@ public: - - private: - bool checkHeader(const KTXHeader &header); -- quint32 decode(quint32 val); -+ quint32 decode(quint32 val) const; - - bool inverseEndian = false; - }; diff --git a/qt5-qtbase.spec b/qt5-qtbase.spec index b4f1102..eb7850d 100644 --- a/qt5-qtbase.spec +++ b/qt5-qtbase.spec @@ -156,14 +156,6 @@ Patch101: qtbase-5.15.10-fix-missing-qtsan-include.patch # https://bugreports.qt.io/browse/QTBUG-112136 Patch102: qtbase-QTBUG-111994.patch Patch103: qtbase-QTBUG-112136.patch -# IBus input method cannot set panel position correctly with DPI scaling -# https://bugreports.qt.io/browse/QTBUG-103393 -Patch104: qtbase-QTBUG-103393.patch - -# upstream security fixes -Patch120: 0001-CVE-2023-51714-qtbase-5.15.patch -Patch121: 0002-CVE-2023-51714-qtbase-5.15.patch -Patch122: CVE-2024-25580-qtbase-5.15.patch ## Qt 6 backports for better Gtk/GNOME integration # https://fedoraproject.org/wiki/Changes/Qt_Wayland_By_Default_On_Gnome @@ -177,7 +169,7 @@ Patch152: 0003-Sync-and-assert-StandardPixmap-enums-in-QPlatformThe.patch Patch153: 0004-QGtk3Theme-subscribe-to-theme-hint-changes.patch # Patch154: 0005-Gtk3Theme-set-XCURSOR_SIZE-and-XCURSOR_THEME-for-way.patch Patch155: 0006-Re-implement-palette-standardPixmap-file-icons-fonts.patch -Patch156: 0007-GTK3-theme-simplify-code.patch +# Patch156: 0007-GTK3-theme-simplify-code.patch Patch157: 0008-Fix-checkbox-and-radiobutton-background-in-QGtk3Them.patch Patch158: 0009-Cleanup-QGtk3Theme.patch Patch159: 0010-Detect-appearance-by-colors-unless-GTK-theme-name-co.patch @@ -476,12 +468,6 @@ Qt5 libraries used for drawing widgets and OpenGL items. %patch -P101 -p1 %patch -P102 -p1 %patch -P103 -p1 -%patch -P104 -p1 - -## upstream security fixes -%patch -P120 -p1 -%patch -P121 -p1 -%patch -P122 -p1 ## Qt 6 backports %if 0%{?fedora} > 30 || 0%{?rhel} > 8 @@ -493,7 +479,7 @@ Qt5 libraries used for drawing widgets and OpenGL items. %patch -P153 -p1 # %patch -P154 -p1 %patch -P155 -p1 -%patch -P156 -p1 +# %patch -P156 -p1 %patch -P157 -p1 %patch -P158 -p1 %patch -P159 -p1 diff --git a/qtbase-5.15.10-fix-missing-qtsan-include.patch b/qtbase-5.15.10-fix-missing-qtsan-include.patch index 7f519dc..7b05d3e 100644 --- a/qtbase-5.15.10-fix-missing-qtsan-include.patch +++ b/qtbase-5.15.10-fix-missing-qtsan-include.patch @@ -1,5 +1,5 @@ diff --git a/include/QtCore/headers.pri b/include/QtCore/headers.pri -index d2eaf206..015b5d6f 100644 +index bbb62c0f..4c546398 100644 --- a/include/QtCore/headers.pri +++ b/include/QtCore/headers.pri @@ -1,6 +1,6 @@ @@ -10,7 +10,7 @@ index d2eaf206..015b5d6f 100644 SYNCQT.QPA_HEADER_FILES = -SYNCQT.CLEAN_HEADER_FILES = animation/qabstractanimation.h:animation animation/qanimationgroup.h:animation animation/qparallelanimationgroup.h:animation animation/qpauseanimation.h:animation animation/qpropertyanimation.h:animation animation/qsequentialanimationgroup.h:animation animation/qvariantanimation.h:animation codecs/qtextcodec.h:textcodec global/qcompilerdetection.h global/qendian.h global/qflags.h global/qfloat16.h global/qglobal.h global/qglobalstatic.h global/qisenum.h global/qlibraryinfo.h global/qlogging.h global/qnamespace.h global/qnumeric.h global/qoperatingsystemversion.h global/qprocessordetection.h global/qrandom.h global/qsysinfo.h global/qsystemdetection.h global/qtypeinfo.h global/qtypetraits.h global/qversiontagging.h io/qbuffer.h io/qdebug.h io/qdir.h io/qdiriterator.h io/qfile.h io/qfiledevice.h io/qfileinfo.h io/qfileselector.h io/qfilesystemwatcher.h:filesystemwatcher io/qiodevice.h io/qlockfile.h io/qloggingcategory.h io/qprocess.h:processenvironment io/qresource.h io/qsavefile.h io/qsettings.h:settings io/qstandardpaths.h io/qstorageinfo.h io/qtemporarydir.h io/qtemporaryfile.h io/qurl.h io/qurlquery.h itemmodels/qabstractitemmodel.h:itemmodel itemmodels/qabstractproxymodel.h:proxymodel itemmodels/qconcatenatetablesproxymodel.h:concatenatetablesproxymodel itemmodels/qidentityproxymodel.h:identityproxymodel itemmodels/qitemselectionmodel.h:itemmodel itemmodels/qsortfilterproxymodel.h:sortfilterproxymodel itemmodels/qstringlistmodel.h:stringlistmodel itemmodels/qtransposeproxymodel.h:transposeproxymodel kernel/qabstracteventdispatcher.h kernel/qabstractnativeeventfilter.h kernel/qbasictimer.h kernel/qcoreapplication.h kernel/qcoreevent.h kernel/qdeadlinetimer.h kernel/qelapsedtimer.h kernel/qeventloop.h kernel/qfunctions_nacl.h kernel/qfunctions_vxworks.h kernel/qfunctions_winrt.h kernel/qmath.h kernel/qmetaobject.h kernel/qmetatype.h kernel/qmimedata.h kernel/qobject.h kernel/qobjectcleanuphandler.h kernel/qobjectdefs.h kernel/qpointer.h kernel/qsharedmemory.h kernel/qsignalmapper.h kernel/qsocketnotifier.h kernel/qsystemsemaphore.h kernel/qtestsupport_core.h kernel/qtimer.h kernel/qtranslator.h kernel/qvariant.h kernel/qwineventnotifier.h mimetypes/qmimedatabase.h:mimetype mimetypes/qmimetype.h:mimetype plugin/qfactoryinterface.h plugin/qlibrary.h:library plugin/qplugin.h plugin/qpluginloader.h plugin/quuid.h serialization/qcborarray.h serialization/qcborcommon.h serialization/qcbormap.h serialization/qcborstream.h serialization/qcborstreamreader.h:cborstreamreader serialization/qcborstreamwriter.h:cborstreamwriter serialization/qcborvalue.h serialization/qdatastream.h serialization/qjsonarray.h serialization/qjsondocument.h serialization/qjsonobject.h serialization/qjsonvalue.h serialization/qtextstream.h serialization/qxmlstream.h statemachine/qabstractstate.h:statemachine statemachine/qabstracttransition.h:statemachine statemachine/qeventtransition.h:qeventtransition statemachine/qfinalstate.h:statemachine statemachine/qhistorystate.h:statemachine statemachine/qsignaltransition.h:statemachine statemachine/qstate.h:statemachine statemachine/qstatemachine.h:statemachine text/qbytearray.h text/qbytearraylist.h text/qbytearraymatcher.h text/qchar.h text/qcollator.h text/qlocale.h text/qregexp.h text/qregularexpression.h:regularexpression text/qstring.h text/qstringalgorithms.h text/qstringbuilder.h text/qstringlist.h text/qstringliteral.h text/qstringmatcher.h text/qstringview.h text/qtextboundaryfinder.h thread/qatomic.h thread/qbasicatomic.h thread/qexception.h:future thread/qfuture.h:future thread/qfutureinterface.h:future thread/qfuturesynchronizer.h:future thread/qfuturewatcher.h:future thread/qmutex.h thread/qreadwritelock.h thread/qresultstore.h:future thread/qrunnable.h thread/qsemaphore.h:thread thread/qthread.h thread/qthreadpool.h:thread thread/qthreadstorage.h thread/qwaitcondition.h time/qcalendar.h time/qdatetime.h time/qtimezone.h:timezone tools/qalgorithms.h tools/qarraydata.h tools/qarraydataops.h tools/qarraydatapointer.h tools/qbitarray.h tools/qcache.h tools/qcommandlineoption.h:commandlineparser tools/qcommandlineparser.h:commandlineparser tools/qcontainerfwd.h tools/qcontiguouscache.h tools/qcryptographichash.h tools/qeasingcurve.h:easingcurve tools/qhash.h tools/qhashfunctions.h tools/qiterator.h tools/qline.h tools/qlinkedlist.h tools/qlist.h tools/qmap.h tools/qmargins.h tools/qmessageauthenticationcode.h tools/qpair.h tools/qpoint.h tools/qqueue.h tools/qrect.h tools/qrefcount.h tools/qscopedpointer.h tools/qscopedvaluerollback.h tools/qscopeguard.h tools/qset.h tools/qshareddata.h tools/qsharedpointer.h tools/qsize.h tools/qstack.h tools/qtimeline.h:easingcurve tools/qvarlengtharray.h tools/qvector.h tools/qversionnumber.h +SYNCQT.CLEAN_HEADER_FILES = animation/qabstractanimation.h:animation animation/qanimationgroup.h:animation animation/qparallelanimationgroup.h:animation animation/qpauseanimation.h:animation animation/qpropertyanimation.h:animation animation/qsequentialanimationgroup.h:animation animation/qvariantanimation.h:animation codecs/qtextcodec.h:textcodec global/qcompilerdetection.h global/qendian.h global/qflags.h global/qfloat16.h global/qglobal.h global/qglobalstatic.h global/qisenum.h global/qlibraryinfo.h global/qlogging.h global/qnamespace.h global/qnumeric.h global/qoperatingsystemversion.h global/qprocessordetection.h global/qrandom.h global/qsysinfo.h global/qsystemdetection.h global/qtypeinfo.h global/qtypetraits.h global/qversiontagging.h io/qbuffer.h io/qdebug.h io/qdir.h io/qdiriterator.h io/qfile.h io/qfiledevice.h io/qfileinfo.h io/qfileselector.h io/qfilesystemwatcher.h:filesystemwatcher io/qiodevice.h io/qlockfile.h io/qloggingcategory.h io/qprocess.h:processenvironment io/qresource.h io/qsavefile.h io/qsettings.h:settings io/qstandardpaths.h io/qstorageinfo.h io/qtemporarydir.h io/qtemporaryfile.h io/qurl.h io/qurlquery.h itemmodels/qabstractitemmodel.h:itemmodel itemmodels/qabstractproxymodel.h:proxymodel itemmodels/qconcatenatetablesproxymodel.h:concatenatetablesproxymodel itemmodels/qidentityproxymodel.h:identityproxymodel itemmodels/qitemselectionmodel.h:itemmodel itemmodels/qsortfilterproxymodel.h:sortfilterproxymodel itemmodels/qstringlistmodel.h:stringlistmodel itemmodels/qtransposeproxymodel.h:transposeproxymodel kernel/qabstracteventdispatcher.h kernel/qabstractnativeeventfilter.h kernel/qbasictimer.h kernel/qcoreapplication.h kernel/qcoreevent.h kernel/qdeadlinetimer.h kernel/qelapsedtimer.h kernel/qeventloop.h kernel/qfunctions_nacl.h kernel/qfunctions_vxworks.h kernel/qfunctions_winrt.h kernel/qmath.h kernel/qmetaobject.h kernel/qmetatype.h kernel/qmimedata.h kernel/qobject.h kernel/qobjectcleanuphandler.h kernel/qobjectdefs.h kernel/qpointer.h kernel/qsharedmemory.h kernel/qsignalmapper.h kernel/qsocketnotifier.h kernel/qsystemsemaphore.h kernel/qtestsupport_core.h kernel/qtimer.h kernel/qtranslator.h kernel/qvariant.h kernel/qwineventnotifier.h mimetypes/qmimedatabase.h:mimetype mimetypes/qmimetype.h:mimetype plugin/qfactoryinterface.h plugin/qlibrary.h:library plugin/qplugin.h plugin/qpluginloader.h plugin/quuid.h serialization/qcborarray.h serialization/qcborcommon.h serialization/qcbormap.h serialization/qcborstream.h serialization/qcborstreamreader.h:cborstreamreader serialization/qcborstreamwriter.h:cborstreamwriter serialization/qcborvalue.h serialization/qdatastream.h serialization/qjsonarray.h serialization/qjsondocument.h serialization/qjsonobject.h serialization/qjsonvalue.h serialization/qtextstream.h serialization/qxmlstream.h statemachine/qabstractstate.h:statemachine statemachine/qabstracttransition.h:statemachine statemachine/qeventtransition.h:qeventtransition statemachine/qfinalstate.h:statemachine statemachine/qhistorystate.h:statemachine statemachine/qsignaltransition.h:statemachine statemachine/qstate.h:statemachine statemachine/qstatemachine.h:statemachine text/qbytearray.h text/qbytearraylist.h text/qbytearraymatcher.h text/qchar.h text/qcollator.h text/qlocale.h text/qregexp.h text/qregularexpression.h:regularexpression text/qstring.h text/qstringalgorithms.h text/qstringbuilder.h text/qstringlist.h text/qstringliteral.h text/qstringmatcher.h text/qstringview.h text/qtextboundaryfinder.h thread/qatomic.h thread/qbasicatomic.h thread/qexception.h:future thread/qfuture.h:future thread/qfutureinterface.h:future thread/qfuturesynchronizer.h:future thread/qfuturewatcher.h:future thread/qmutex.h thread/qreadwritelock.h thread/qresultstore.h:future thread/qrunnable.h thread/qsemaphore.h:thread thread/qthread.h thread/qthreadpool.h:thread thread/qthreadstorage.h thread/qwaitcondition.h thread/qtsan_impl.h time/qcalendar.h time/qdatetime.h time/qtimezone.h:timezone tools/qalgorithms.h tools/qarraydata.h tools/qarraydataops.h tools/qarraydatapointer.h tools/qbitarray.h tools/qcache.h tools/qcommandlineoption.h:commandlineparser tools/qcommandlineparser.h:commandlineparser tools/qcontainerfwd.h tools/qcontiguouscache.h tools/qcryptographichash.h tools/qeasingcurve.h:easingcurve tools/qhash.h tools/qhashfunctions.h tools/qiterator.h tools/qline.h tools/qlinkedlist.h tools/qlist.h tools/qmap.h tools/qmargins.h tools/qmessageauthenticationcode.h tools/qpair.h tools/qpoint.h tools/qqueue.h tools/qrect.h tools/qrefcount.h tools/qscopedpointer.h tools/qscopedvaluerollback.h tools/qscopeguard.h tools/qset.h tools/qshareddata.h tools/qsharedpointer.h tools/qsize.h tools/qstack.h tools/qtimeline.h:easingcurve tools/qvarlengtharray.h tools/qvector.h tools/qversionnumber.h - SYNCQT.INJECTIONS = src/corelib/global/qconfig.h:qconfig.h:QtConfig src/corelib/global/qconfig_p.h:5.15.12/QtCore/private/qconfig_p.h + SYNCQT.INJECTIONS = src/corelib/global/qconfig.h:qconfig.h:QtConfig src/corelib/global/qconfig_p.h:5.15.13/QtCore/private/qconfig_p.h diff --git a/include/QtCore/qtsan_impl.h b/include/QtCore/qtsan_impl.h new file mode 100644 index 00000000..e9209cbc diff --git a/qtbase-QTBUG-103393.patch b/qtbase-QTBUG-103393.patch deleted file mode 100644 index 9a21419..0000000 --- a/qtbase-QTBUG-103393.patch +++ /dev/null @@ -1,56 +0,0 @@ -diff --git a/src/plugins/platforminputcontexts/ibus/interfaces/org.freedesktop.IBus.InputContext.xml b/src/plugins/platforminputcontexts/ibus/interfaces/org.freedesktop.IBus.InputContext.xml -index 9c67a38c5701..30c326d06fc2 100644 ---- a/src/plugins/platforminputcontexts/ibus/interfaces/org.freedesktop.IBus.InputContext.xml -+++ b/src/plugins/platforminputcontexts/ibus/interfaces/org.freedesktop.IBus.InputContext.xml -@@ -14,6 +14,12 @@ - - - -+ -+ -+ -+ -+ -+ - - - -diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp -index 086025472640350341768efed5206b418f324460..49a44519b6aee8cae3c04265ab5065c99005d838 100644 ---- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp -+++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp -@@ -222,10 +222,31 @@ void QIBusPlatformInputContext::cursorRectChanged() - QWindow *inputWindow = qApp->focusWindow(); - if (!inputWindow) - return; -- r.moveTopLeft(inputWindow->mapToGlobal(r.topLeft())); -+ if (!inputWindow->screen()) -+ return; -+ -+ if (QGuiApplication::platformName().startsWith("wayland", Qt::CaseInsensitive)) { -+ auto margins = inputWindow->frameMargins(); -+ r.translate(margins.left(), margins.top()); -+ qreal scale = inputWindow->devicePixelRatio(); -+ QRect newRect = QRect(r.x() * scale, r.y() * scale, r.width() * scale, r.height() * scale); -+ if (debug) -+ qDebug() << "microFocus" << newRect; -+ d->context->SetCursorLocationRelative(newRect.x(), newRect.y(), -+ newRect.width(), newRect.height()); -+ return; -+ } -+ -+ // x11/xcb -+ auto screenGeometry = inputWindow->screen()->geometry(); -+ auto point = inputWindow->mapToGlobal(r.topLeft()); -+ qreal scale = inputWindow->devicePixelRatio(); -+ auto native = (point - screenGeometry.topLeft()) * scale + screenGeometry.topLeft(); -+ QRect newRect(native, r.size() * scale); - if (debug) -- qDebug() << "microFocus" << r; -- d->context->SetCursorLocation(r.x(), r.y(), r.width(), r.height()); -+ qDebug() << "microFocus" << newRect; -+ d->context->SetCursorLocation(newRect.x(), newRect.y(), -+ newRect.width(), newRect.height()); - } - - void QIBusPlatformInputContext::setFocusObject(QObject *object) diff --git a/qtbase-QTBUG-112136.patch b/qtbase-QTBUG-112136.patch index ae7bb0e..4d2450b 100644 --- a/qtbase-QTBUG-112136.patch +++ b/qtbase-QTBUG-112136.patch @@ -1,8 +1,8 @@ diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp -index dd715b73..3d88af3a 100644 +index 159b490c..110f2dcf 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp -@@ -954,6 +954,7 @@ void QFontconfigDatabase::setupFontEngine(QFontEngineFT *engine, const QFontDef +@@ -951,6 +951,7 @@ void QFontconfigDatabase::setupFontEngine(QFontEngineFT *engine, const QFontDef QFontEngine::GlyphFormat format; // try and get the pattern FcPattern *pattern = FcPatternCreate(); @@ -10,7 +10,7 @@ index dd715b73..3d88af3a 100644 FcValue value; value.type = FcTypeString; -@@ -980,7 +981,41 @@ void QFontconfigDatabase::setupFontEngine(QFontEngineFT *engine, const QFontDef +@@ -977,7 +978,41 @@ void QFontconfigDatabase::setupFontEngine(QFontEngineFT *engine, const QFontDef FcConfigSubstitute(nullptr, pattern, FcMatchPattern); FcDefaultSubstitute(pattern); @@ -53,7 +53,7 @@ index dd715b73..3d88af3a 100644 if (match) { engine->setDefaultHintStyle(defaultHintStyleFromMatch((QFont::HintingPreference)fontDef.hintingPreference, match, useXftConf)); -@@ -1000,6 +1035,11 @@ void QFontconfigDatabase::setupFontEngine(QFontEngineFT *engine, const QFontDef +@@ -997,6 +1032,11 @@ void QFontconfigDatabase::setupFontEngine(QFontEngineFT *engine, const QFontDef antialias = fc_antialias; }