The method is split up into a private and public version, where the
parameter is moved into the private method.
Fixes: QTBUG-84210
Change-Id: I79e9e02c9b4cc25d31db066e5a9567fdb9bc9fd0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Fixed truncation of pixmap content under high device pixel ratio of
QLabel.
Pick-to: 5.15
Fixes: QTBUG-86170
Change-Id: I795815e0d8a9e57e0dfcca9cf104e86e45027b18
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
PCRE2 already uses size_t which we can now make full use of.
Change-Id: Icb5efd5c6ef27f2e31a9780bf62f5671ddc603cd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
As there is now a chance that a QMetaMethod already contains the
metatypes for its arguments, we can just query it directly (and use the
fallback to name lookup logic that already exists there).
This also allows us to avoid creating a QList of names, and only
requires us to do a name lookup in case the connection actually fails.
Change-Id: Idda30bc4b538a94476ae6c533776c22340f0030d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Upgrade existing functions to be virtual functions:
- virtual QString iconName()
- virtual bool isNull()
- virtual QPixmap scaledPixmap(...)
- virtual QList<QSize> availableSizes(...)
Make all of them non-const and remove the const_casts in
the implementation. Keep the default implementation
which calls virtual_hook(), for compatibility.
Note: availableSizes was already virtual, but now loses
the “const”. Port two overrides in the platform themes.
Keep virutal_hook() around for future expansion.
Task-number: QTBUG-85885
Change-Id: I76d0c9f75bfd6ca870c669047d4ef18b82c692e5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This follows the work done in 6ff79478a4.
The API is available by including qoffscreensurface.h, scoped in
the QPlatformInterface namespace. The namespace
exposes platform specific type-safe interfaces that provide:
a) Factory functions for adopting native contexts, e.g.
QAndroidPlatformOffscreenSurface::fromNative(ANativeWindow);
b) Access to underlying native handles, e.g.
surface->platformInterface<QAndroidPlatformOffscreenSurface>()
->nativeSurface()
Fixes: QTBUG-85874
Change-Id: I29c459866e0355a52320d5d473e8b147e050acb3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
As per ### Qt 6 comment, and the documentation for the variable.
Change-Id: I58df784a72129dc97c5f13eb54e34cb7feb9748c
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Before this change, configure -force-asserts would affect qmake-based user
projects too, potentially forcing the user to remove the
QT_FORCE_ASSERTS define in their own projects.
[ChangeLog][configure] The -force-asserts option now affects the Qt
build only, not user projects.
Change-Id: Iecca3c9f7e8261996c5d8bcba8adbc0db1dc1c99
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
For prefix builds we need to install the file.
Amends db21bad936.
Change-Id: Ia8e859dc048cc4bd74eb95ed0d2adce9c6b11902
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
macOS has specific formatters for the standalone month names, so use
them.
Change-Id: Ic4ad547c7d1c29d71c85f60301acd5a5f0f263d2
Fixes: QTBUG-86191
Pick-to: 5.15
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Evgeniy Dushistov <dushistov@mail.ru>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Makes the QNetworkAccessBackendFactory a real interface to be used in
plugins. Requires exporting some classes but they're not made public
yet.
Removes unused features and functions.
Some things are likely still unused due to being specific for HTTP
but the HTTP network replies don't use this backend system.
Changes QNetworkAccessBackend to use a more traditional
read(char*, qint64) function for the "downloaded" data.
And an optional readPointer if supported. So far no backends have it
so it's somewhat useless, but it may be useful going forward.
If not it shall be deleted
Converts all current backends to the new setup
Easy enough, also gets rid of some unused functions.
Task-number: QTBUG-80340
Change-Id: I9339e6c6eb394c471c921f5cafd3af6175936399
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
While we initially wanted to just disable the functionality the way it
is currently built forces people to do a full build of Qt just to enable
it. Instead of doing this half-measure let's just remove the code
completely from QtBase and rather prepare QtNetwork to handle being a
plugin that can be compiled at any time.
Task-number: QTBUG-80340
Change-Id: I19155c8c167cf932088f01b2a9706d0e7ab792d1
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
There's no reason to have this out of line.
Change-Id: I52aa2ba941f9c81c2194865b156dbc0a2104363b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
I don't think we want to have implicit conversion
from a const char * or a QByteArray to a QUuid.
Change-Id: Idfe7450ce15b89e295aa7af7ccf1fc94f5acd4f9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Added overload to allocGrow that figures the capacity to allocate from
the newSize argument passed. This is useful in QList (and likely in other
places)
Fixed QArrayPodOps::reallocate as a drive by: don't call memmove when
it is not needed
Task-number: QTBUG-84320
Change-Id: I67efe55a60efaf3ab6057b0249d6a446e04a09e3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
No user of QArrayDataPointer functionality must use createInPlace. This
is a special function to be called by the internal logic. It's usage is
unsafe with prepend optimization in place
Task-number: QTBUG-84320
Change-Id: Idc0e82975a98e799272bdb61fe7828b3c8c67e8d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Restored previously deleted logic of setting GrowsBackwards flag for
prepend-like cases. This should be sufficient to fully enable prepend
optimization
Fixed QList::emplace to not use implementation detail logic. Updated
tests to cover changed behavior and its correctness
Task-number: QTBUG-84320
Change-Id: I4aadab0647fe436140b7bb5cf71309f6887e36ab
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Introduced prepend optimization logic to QCommonArrayOps.
Trying to rely on original QList behavior
Task-number: QTBUG-84320
Change-Id: I46e6797b4edad804a3e3edb58307c9e96990fe01
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Introduced allocation function in QArrayDataPointer with
interface similar to QArrayData::allocate that supports growing
strategies. This func is used instead of the original in cases
when prepend-aware storage is needed. Tried to follow Qt5 QList
policy in terms of space reservation
Updated QPodArrayOps::reallocate to be aware of growing
shenanigans. It doesn't look like a perfect solution but it is
rather close and similar to what Qt6 QList is doing when not
growing (e.g. reserve/squeeze)
Added initial QCommonArrayOps with helper function that tells
when reallocation is preferable over just using the insert-like
operation. This comes up later on when GrowsBackwards policy is
properly supported in operations
Essentially, 2/3 main data management blocks for prepend optimization
are introduced here. The last one being a generalized data move that
is done instead of reallocation when existing free space is not enough
Task-number: QTBUG-84320
Change-Id: I9a2bac62ad600613a6d7c5348325e0e54aadb73d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Fixed UB when QList::begin() iterator is used after a call to
QList::remove(). As QList is now effectively double-ended container,
there is no guarantee on iterator validity upon erasure
Task-number: QTBUG-84320
Change-Id: I27793f131e8e23a41ac6c2c1db0bdc61ee58891f
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
A comment is not good enough, Some of the enum members were even still
in use, or mentioned in documentation.
WA_ContentsPropagated, WA_WState_DND and WA_ForceAcceptDrops have been
deprecated since 4.5.1; and at least the last has been an \omitvalue
in the docs for even longer. (WA_ShowModal and WA_GroupLeader have
been similarly marked, but are in use, see QTBUG-85816.)
Push back to 5.15.1 in order to be able to remove these at Qt 6.
Pick-to: 5.15.1
Change-Id: I6ea3839767e5f5158b0fed508f65798470191908
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Add new QIcon::pixmap() overload:
QPixmap pixmap(const QSize &size, qreal devicePixelRatio, ...)
This function replaces the existing pixmap() function which
take a QWindow pointer, and should be more convenient in use.
Task-number: QTBUG-85885
Change-Id: Ie4ca96a266d9278864678dc61bdfc2836cabdb93
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Stop relying on the "magic" of itemAt returning nullptr for out of
bounds. Just use count().
Unfortunately, QMainWindowLayout breaks the API contract by NOT
implementing count() properly. So, make its count() crash if called;
and move the itemAt implementation there.
Change-Id: I120686a834bab15dd537598a56bd93d6a5924aa5
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
For historical reasons Qt 5 has:
int QPaintDevice::devicePixelRatio()
qreal QPaintDevice::devicePixelRatioF()
Change the int to qreal so that Qt 6 will have
qreal QPaintDevice::devicePixelRatio()
qreal QPaintDevice::devicePixelRatioF() [to-be-removed]
Change-Id: Ie904e02ec490cbcd2acb5dcecb193e9af4cb90f0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Adding the role that changed to the itemChanged signal is
computationally expensive for the general case. Not going to be done,
at least not for Qt 6.0.
Change-Id: I3e6fca6a5c7b517c3c035477ce5d23d8870bad57
Reviewed-by: David Faure <david.faure@kdab.com>
With 64bits, the mask is exhausted with the 21 colors x 3 color groups
we have right now.
In order to support accent colors, we need more palette entries. By
moving the mask into the d-pointer, we can extend QPalette within
the Qt 6 series, without breaking binary compatibility.
The resolveMask/setResolveMask methods that take integers are
documented as internals, so we can change those signatures after
Qt 6.0 as well.
As a side effect, setting the resolve mask on a QPalette detaches now.
Setting a mask is in most cases done on the result of
QPalette::resolve, which is usually detached already. And the QPalette
default constructor will have to detach from the global application
palette if that palette has any colors set explicitly.
Task-number: QTBUG-82925
Change-Id: I1e70f1c4d0dd98303e353b91df5dba2b1fe8ba01
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
viewOptions returned a QStyleOptionViewItem object. Such a method
can never support newer versions of the option structure.
Most styleable QWidget classes provide a virtual method
initStyleOption that initializes the option object passed in as a
pointer, e.g QFrame, QAbstractSpinBox, or QComboBox.
Follow that API convention, but name it initViewItemOption, as the
QStyleOptionViewItem struct contains information about the item as
well as the widget itelf.
This is a source incompatible change that will go unnoticed unless
existing subclasses mark their overrides as 'override', or call
the removed QAbstractItemView::viewOption virtual function.
[ChangeLog][QtWidgets][QAbstractItemView] The virtual viewOptions
method that previously returned a QStyleOptionViewItem object has
been renamed to initViewItemOption, and initializes a
QStyleOptionViewItem object that's passed in through a pointer.
Change-Id: Ie058702aed42d77274fa3c4abb43ba302e57e348
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
This was causing miscompilations with clang on macOS. As it's
not really required, remove the alignment requirement.
Change-Id: Iacef1af7f51990daddc73fe74449adc1a823aa33
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Fix name of target so that qtattributionsscanner actually generates content.
Change-Id: Ie42067928d7cd1de02fa4ae92a0f5ef54bd54a5c
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Make sure the executable path contains an .exe on Windows.
Change-Id: I972a3aaf1ad0510525ebfcc84e8c589f555c6d00
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Use the official name and ID from SPDX:
https://spdx.org/licenses/libpng-2.0.html
Pick-to: 5.15
Change-Id: I199efd600373cdc150d48a449b122f90ff2c48ef
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
C4180, C4458 were disabled already in 2012, in commit 6668f5becf.
C4577 was disabled due to QtScript being compiled without exception
support in commit 97d7d80e73.
Anyhow, Qt Script is now officially gone in Qt 6, and Qt headers
do work just fine with C4180. Finally, C4458 is nowadays a W4 warning,
so not enabled in the first place.
Task-number: QTBUG-82615
Change-Id: I2f9b8e858817876b069a166129fbfac7ef3587a0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
The explicit paint event on QtGui and QPA level allows us to untangle
the expose event, which today has at least 3 different meanings.
It also allows us to follow the platform more closely in its semantics
of when painting can happen. On some platforms a paint can come in
before a window is exposed, e.g. to prepare the first frame. On others
a paint can come in after a window has been de-exposed, to save a
snapshot of the window for use in an application switcher or similar.
The expose keeps its semantics of being a barrier signaling that the
application can now render at will, for example in a threaded render
loop.
There are two compatibility code paths in this patch:
1. For platform plugins that do not yet report the PaintEvents
capability, QtGui will synthesize paint events on the platform's
behalf, based on the existing expose events coming from the platform.
2. For applications that do not yet implement paintEvent, QtGui will
send expose events instead, ensuring the same behavior as before.
For now none of the platform plugins deliver paint events natively,
so the first compatibility code path is always active.
Task-numnber: QTBUG-82676
Change-Id: I0fbe0d4cf451d6a1f07f5eab8d376a6c8a53ce8c
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Added 6 new methods in QTextFormat and QTextDocument to
allow setting/getting specific % positioning for baseline and super/
subscript. Modified QTextLayout to honor those new settings.
[ChangeLog][QtGui][QTextLayout,QTextFormat,QTextDocument] Allow text
layout modification based on baseline offset and super/subscript % height
positioning
Fixes: QTBUG-18260
Change-Id: I0796f18224aac8df6baf8359c35022fd98fe64ef
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
QXcbScreen determines logical DPI using the following priority:
1) use Xft.dpi if set
2) virtual desktop size / virtual desktop physical size
(This change does not restrict or alter the value obtained from
Xft.dpi in any way)
The fallback option 2) has several problems:
- It is a physical DPI, which does not account for
viewing distance or user preference
- It is a global value for the entire virtual desktop
(not per-screen)
- X servers usually fake the virtual desktop physical
size such that the computed DPI ends up at 96; in
cases where this does not happen we can end up with
a surprising DPI value.
We might be better off just hardcoding 96 here, to avoid
picking up an incorrect physical DPI when for example
connecting to a TV (as reported in QTBUG-67928).
This change does not go as far as hardcoding 96, but instead
restricts the (fallback) DPI value to be 96 or higher.
Pick-to: 5.15
Task-number: QTBUG-67928
Change-Id: Ieea6c7a137261282b40302fb4c19273c5def10af
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Change the name/key of the style to 'macos'. Besides the
name 'macintosh' being archaic, we also need this
change to avoid creating 'macintosh' style folders
in QtQuickControls, now that we plan to use QPlatformTheme
also there to resolve the style.
[ChangeLog][Widgets][QStyle] The 'macintosh' style
has been renamed to 'macos'.
Change-Id: I14b8a8b4dbd369e7a7d16b94e4ad27e501e7e8d0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Currently QFuture::waitForFinished() exits as soon as the future is not
in the running state. If the user calls it before
QPromise::reportStarted() is called, it will exit immediately, because
nothing is running yet. Fix the behavior to wait for the finished state.
[ChangeLog][Important Behavior Changes][QtCore] Fixed the behavior of
QFuture::waitForFinished() to wait until the future is actually in the
finished state, instead of exiting as soon as it is not in the running
state. This prevents waitForFinished() from exiting immediately, if at
the moment of calling it the future is not started yet.
Task-number: QTBUG-84867
Change-Id: I12f5e95d8200cfffa5653b6aa566a625f8320ca8
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
QString still has the overloads of relational operators taking
QByteArray. Add back QByteArray's relational operators taking
QString for symmetry. See also the comments of
d7ccd8cb45 for more details.
[ChangeLog][EDITORIAL] Remove the changelog about QString/QByteArray
operators being removed. They're back.
Change-Id: I22c95e727285cf8a5ef79b3a4f9d45cb66319252
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QCoreApplication has a special internal mechanism to control whether
the event dispatcher should block after delivering the posted events.
To handle queued connections in nested loops properly, we should use
that functionality.
Pick-to: 5.15
Fixes: QTBUG-85981
Change-Id: I124179a23b26a995cf95ed379e97bfa62c95f42a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This is a z coordinate unrelated to tilt, AFAIK.
Amends ea2ae140e9
Change-Id: If165df3af290fbe7c2e5bfa94d578175debd53cd
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>