[qt/qt/qtbase]: Summary of bulk changes made

KDE Git Services - Bulk Change <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git repository change summary for qt/qt/qtbase
Pushed by mirror-service into branch 'dev'.
Changed from 5b048f9c4633d709442176e10c1c8e0cb384ae98 to eab8f8afb059b2489022ea9c13e7aedd6b8b5138
Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository.

This change contains the following new commits:

Git commit 1b57e51521c6c5e08abd7446ff18ced04b86d9a8 by Laszlo Agocs on 04/08/2026 at 00:52..
rhi: Validate element counts when deserializing a QShader

The .qsb deserializers took every list element count straight from the
QDataStream and passed it to QList::resize(). A negative count violates
the resize() precondition, which is only guarded by a Q_ASSERT and so is
undefined behavior in release builds, while a huge count leads to a
pointless large allocation and a long spin over a stream that ran out of
data long ago. QDataStream::status() was never consulted.

Add QShaderPrivate::readCount() and use it for all such counts, both in
QShader::fromSerialized() and in the QShaderDescription parsing. It
rejects a count when the stream is no longer Ok, when it is negative, or
when it exceeds what the remaining data could possibly hold: every
element of every list takes at least one 32-bit value, hence the
bytesAvailable() / 4 bound. On failure the stream is switched to
ReadCorruptData, which makes all subsequent reads no-ops, so the error
propagates up to fromSerialized(), where the status is now checked once
more before handing out the result.

A truncated package therefore ends up as an invalid QShader, which is
what the documentation already promised.

This does not change the fact that all input is still expected to be
fully trusted content.

Pick-to: 6.12
Change-Id: I0c8523d050a330fa0067399b8e94c54e9059ae9c
Reviewed-by: Andy Nichols <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/1b57e51521c6c5e08abd7446ff18ced04b86d9a8

Git commit d3ed957c713b97aa59aac8ddaf7103052ceaed43 by Laszlo Agocs on 04/08/2026 at 00:52..
rhi: Limit struct nesting depth when deserializing a QShader

This does not change the fact that all input is still expected to be
fully trusted content.

Pick-to: 6.12
Change-Id: Ia2c3df23027025eff4644eff3b9abb16eea8ab54
Reviewed-by: Andy Nichols <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/d3ed957c713b97aa59aac8ddaf7103052ceaed43

Git commit f3ffe251fc53ff2fff083fe3fe54cea60348dca9 by Laszlo Agocs on 04/08/2026 at 00:52..
Guard Vulkan device function resolver data structure

deviceFunctions() and resetDeviceFunctions() both mutate the
deviceFuncs hash without any synchronization, while the documentation
invites calling deviceFunctions() repeatedly from renderer code that may
well be multithreaded.

Pick-to: 6.12
Change-Id: I799dfa29cb1010fe4df3f34001a4a5c50635d59f
Reviewed-by: Andy Nichols <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/f3ffe251fc53ff2fff083fe3fe54cea60348dca9

Git commit 62c25f665a60908ad8cb76172bf49682698faba3 by Laszlo Agocs on 04/08/2026 at 00:52..
Protect Vulkan debug filter lists against concurrent access

Pick-to: 6.12
Change-Id: Ic81627fa5ae4c62bf97679914f9331cccdca9486
Reviewed-by: Andy Nichols <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/62c25f665a60908ad8cb76172bf49682698faba3

Git commit 19c47f09caad1c18e62846d5ce07a1585251c3d4 by Laszlo Agocs on 04/08/2026 at 00:52..
Handle it better when create() failed in QVulkanInstance

Pick-to: 6.12
Change-Id: I9a86188612784801880bb53a33dc8de3d3ec42aa
Reviewed-by: Andy Nichols <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/19c47f09caad1c18e62846d5ce07a1585251c3d4

Git commit 4be989168ad0f9432339bbd3b25e24d86df4da73 by Laszlo Agocs on 04/08/2026 at 00:52..
rhi: vulkan: Expand docs on setVkInstance and extensions

Pick-to: 6.12
Change-Id: Id9b12a4995c24098b9a0c01e6569e452190e00aa
Reviewed-by: Andy Nichols <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/4be989168ad0f9432339bbd3b25e24d86df4da73

Git commit 249ea8ee9e59ce2cc9341be566ada4f1d39ce32f by Laszlo Agocs on 04/08/2026 at 00:52..
gui/opengl: Add security consideration sections to docs

Task-number: QTBUG-148739
Pick-to: 6.12 6.11 6.8
Change-Id: I2bf28ba35c38d7774c2fdca085fc2fbe165f64e0
Reviewed-by: Andy Nichols <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/249ea8ee9e59ce2cc9341be566ada4f1d39ce32f

Git commit 230d9f54483a207f51201fea73333f03aab0daeb by Jean-Michaël Celerier on 04/08/2026 at 02:26..
QTipLabel: guard styleSheetParentDestroyed() definition

Its declaration and the styleSheetParent member are already guarded by
QT_CONFIG(style_stylesheet).

Pick-to: 6.12 6.11
Change-Id: Id9e73e1529d8433a48ca6d41ec5b6a9ac50f426d
Reviewed-by: David Edmundson <[email protected]>
Reviewed-by: Tim Blechmann <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/230d9f54483a207f51201fea73333f03aab0daeb

Git commit 0e25e784273c598d3a24dceee73e3aecb0b146b9 by Jean-Michaël Celerier on 04/08/2026 at 02:26..
BrotliCommon was not being linked to in static build

Pick-to: 6.12 6.11
Change-Id: Ie55fcb0160547f90450138945bec146529b5d3c4
Reviewed-by: Mårten Nordheim <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/0e25e784273c598d3a24dceee73e3aecb0b146b9

Git commit ae66214369fe9bc760aca4c525b5e5ec57c90f35 by Jean-Michaël Celerier on 04/08/2026 at 02:26..
qversiontagging: don't emit ELF symbol versions in static builds

A static build has no version script, so the version nodes referenced by
the .symver directives are never defined and lld rejects them.

Pick-to: 6.12 6.11
Change-Id: I78cf8390fd724af89a6d8b3168bcd89f969e91c6
Reviewed-by: Thiago Macieira <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/ae66214369fe9bc760aca4c525b5e5ec57c90f35

Git commit f567bd1f79f9ab03b58dc1d732e8070c6dee7b53 by Tor Arne Vestbø on 04/08/2026 at 03:00..
macOS: Don't rely on NSApp.currentEvent when inserting text

To decide whether the input method merely echoed the key press, or
transformed it into something else, we compare the inserted text to the
characters of the key event. We were reaching for NSApp.currentEvent to
get hold of that event, but the current event may well be unrelated to
the text insertion.

We now use the key event we are currently interpreting, which we already
keep track of. For the cases where the text insertion does not originate
from a key event at all, such as the Keyboard Viewer or an accent popup,
we do not have one, and will then correctly conclude that the text does
not match, and send it as an input method event.

The event type check is no longer needed, as the interpreted key event
is always a key press. This restores the state based approach that
294e4c7aa8cacd63c01d3836ce06c1f2d8c5ad5c replaced with the current
event, but without a dedicated member for it.

Pick-to: 6.12 6.11 6.8
Change-Id: I22d8bedd8a09135afaa25d6334f9b34ea29e8842
Reviewed-by: Doris Verria <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/f567bd1f79f9ab03b58dc1d732e8070c6dee7b53

Git commit 08058688a9fa72262b43a479a3a7a53d93165226 by Tor Arne Vestbø on 04/08/2026 at 03:00..
macOS: Don't rely on NSApp.currentEvent when inserting newlines

When the input method asks us to insert a newline we base the resulting
key event on the key event we are currently interpreting, and only fall
back to NSApp.currentEvent when we do not have one. That fallback is not
reliable, as the current event may be unrelated to the text insertion,
or missing altogether.

The only things we need from the event in this situation are the
timestamp and the modifiers, both of which are available as current
state, so we now teach KeyEvent to fall back to that when constructed
without an event. NSProcessInfo.processInfo.systemUptime shares its
timebase with NSEvent.timestamp, so the resulting timestamps are still
comparable to those of real events.

Pick-to: 6.12 6.11 6.8
Change-Id: I823f52ae5002f27a42e47d0b2ea06b5db5674bcf
Reviewed-by: Doris Verria <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/08058688a9fa72262b43a479a3a7a53d93165226

Git commit a67383e2e95f9da40335a8b519a9a64382b70b47 by Tor Arne Vestbø on 04/08/2026 at 03:00..
macOS: Add privacy manifest for QtGui use of NSProcessInfo.systemUptime

Per https://developer.apple.com/documentation/bundleresources/privacy-manifest-files

Pick-to: 6.12 6.11 6.8
Change-Id: I5e2777684563bc7066b1be1790acd9f7dedd6c40
Reviewed-by: Doris Verria <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/a67383e2e95f9da40335a8b519a9a64382b70b47

Git commit 65020b43cdd2c923c42ac4bc894c967ac90a0477 by Tor Arne Vestbø on 04/08/2026 at 03:00..
macOS: Don't assume the current event is a mouse event in the tray icon

The status item button's action callback has no event parameter, so we
consult NSApp.currentEvent to determine the activation reason. As of
macOS 27 NSControls are driven by gesture recognizers, which defers the
action callback past the event that triggered it, so the current event
is not necessarily a mouse event anymore, and asking a non-mouse event
for its clickCount raises an exception.

We now report the activation as Unknown in that situation. Determining
the real activation reason without an event is a larger task, as
nothing but an event carries the click count.

Pick-to: 6.12 6.11 6.8
Change-Id: I48b082fcd0778c22eec71c4c96c22b812ec9fc6d
Reviewed-by: Doris Verria <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/65020b43cdd2c923c42ac4bc894c967ac90a0477

Git commit 9b342ddf2a8010e50c2bcc330967077479fa862a by Tor Arne Vestbø on 04/08/2026 at 03:00..
macOS: Don't rely on NSApp.currentEvent when starting a system move

QPlatformWindow::startSystemMove() carries no event, so we reached for
NSApp.currentEvent to get one to hand to performWindowDragWithEvent:.
That is not reliable: as of macOS 27 a gesture recognizer can defer an
action callback past the event that triggered it, and the call may not
originate from a mouse event in the first place.

We now synthesize the event we pass along, which is what AppKit itself
does in this situation, and use the current button state to decide
whether a window drag is possible at all. AppKit tracks the left mouse
button for the duration of the drag, so unless it is actually pressed
the call would do nothing. Reporting that up front is more accurate
than the old event type switch, which also claimed success for right
and other button presses.

Pick-to: 6.12 6.11 6.8
Change-Id: Ie8f9f55dac64210695b7555a4819246a0191a822
Reviewed-by: Doris Verria <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/9b342ddf2a8010e50c2bcc330967077479fa862a

Git commit fd22838f0efb997da3462c225538508e603e201f by Tor Arne Vestbø on 04/08/2026 at 03:00..
macOS: Make the isMouseEvent helper available to the whole plugin

It was a file static in qnswindow.mm, but we need the same check in
other places as well. We now express it in terms of the existing
cocoaEvent2QtMouseEvent, which as a side effect also covers the
NSEventTypeOtherMouse* events that the file static left out, so frame
strut handling and popup redirection now treat the middle mouse button
like the left and right ones.

Pick-to: 6.12 6.11 6.8
Change-Id: I244d962fcc52b0bbb43ec66a2860ee55a752d2ce
Reviewed-by: Doris Verria <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/fd22838f0efb997da3462c225538508e603e201f

Git commit eab8f8afb059b2489022ea9c13e7aedd6b8b5138 by Tor Arne Vestbø on 04/08/2026 at 03:00..
macOS: Use the live modifier state during drag and drop

The NSDraggingDestination callbacks hand us an id<NSDraggingInfo>, which
carries no keyboard modifier state, so we reached for NSApp.currentEvent
to fill in the modifiers of the QWSI drag events. But when the drag
originates in another process the target process doesn't get any events
at all, leaving us with whatever unrelated event happened to be current.

We now read NSEvent.modifierFlags instead, mirroring what we already do
for the buttons on the adjacent line via currentlyPressedMouseButtons().
That's also the semantics we want: the user can press Option mid-drag to
switch between copy and move, and the drag feedback should follow the
current state, not that of the initiating press.

Pick-to: 6.12 6.11 6.8
Change-Id: I4ec86585c26a324e9e909949573885cb954062e7
Reviewed-by: Doris Verria <[email protected]>
https://invent.kde.org/qt/qt/qtbase/-/commit/eab8f8afb059b2489022ea9c13e7aedd6b8b5138
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.