The top level widget in the test might be too big in some Android
devices and ends up overlapping the system areas, it would then
receive a non-null safe margins and then a resize event, so the
test needs to account for that case.
Pick-to: 6.10 6.9
Fixes: QTBUG-140192
Change-Id: Iff7194e48cc000cc0a37b66f8ac219f54a87d6db
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Amends 2bce75a6b5 which had itself amended
commit 5b5297fe87.
This commit adds a much lengthier explanation of the design of this test
-- which I had to write to understand and fix the problems anyway.
The fix itself consists of uses two QElapsedTimers in each thread, not
just one: one for the threads that time out and started before the
auxiliary threads, and one for threads that succeed and is started after
they have reached the synchronization point. Because the main thread
must now wait for the WaiterThreads to reach the synchronization point,
we needed to replace the startSema QSemaphore with a barrier instead.
Pick-to: 6.10 6.9
Fixes: QTBUG-139617
Change-Id: I5d86dd42f5cd9b87a55dfffd30fd47637ea3066a
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Amends and complements 28619f1ddd4a4b21d8489476d18927564ee0839d, which
had identified this could be a problem, but since there was no test, we
couldn't confirm it. Now that there is, we can see that it fails with
VxWorks, where I guess the two stacks are wholly separate.
Note fetchConnectionParameters() only sets AnyIPProtocol if the socket
is bound to :: or ::ffff:0.0.0.0. Binding to other addresses is
technically possible, but broadcasting would only work if bound to
another v4-mapped address. Changing fetchConnectionParameters() to, for
example, use toIPv4Address() and check for success is left as an
exercise for the reader.
Task-number: QTBUG-139586
Task-number: QTBUG-130070
Pick-to: 6.10 6.9 6.8 6.5
Change-Id: I44daa5ec27877abc2e09fffd875d4be6dfc86446
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Amends b347d48704.
Drive-by change the unit test to use QCOMPARE and add lastIndexOf()
tests for good measure.
Pick-to: 6.10
Change-Id: I474e2d6060bf10179545fffd9ce2caa517114b48
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
MainWindow has ModelFactory as a member, and that again has large arrays
as members. The stack on Windows cannot handle that, and the test fails
to start.
Allocate the UI on the heap.
Pick-to: 6.10 6.10.0
Change-Id: I8659fd7bc267f133e66e5620a430ba32b7abae2a
Reviewed-by: Maycon Stamboroski <maycon.stamboroski@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Also add support for jspi.
Fixes: QTBUG-139785
Fixes: QTBUG-129735
Change-Id: Ifd251fd0cd738d2c089084f4fd6d65dd0a7e91e5
Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
For now, as a private API.
The QRandomAccessAsyncFile class is supposed to handle async read
and write operations. Note that some operations (e.g. open() and
size()) are synchronous, because the tests showed that they
normally would not block even if the file is not actually downloaded
(e.g. stored on a MS OneDrive).
The implementation for async calls is inspired by QNetworkAccessManager
and QNetworkReply. The request for an async read or write returns a
pointer to a QIOOperation object. That object will emit a finished()
signal when the operation is complete, and an errorOccurred() signal,
if there was any error. The user has to connect to these signals to
handle the results. The typical usecase would be:
QRandomAccessAsyncFile file;
file.open(path, mode);
auto op = file.read(offset, maxSize);
connect(op, &QIOOperation::finished, &file, [op] {
if (op->error() != QIOOperation::Error::None)
// handle error
// handle the data
op->deleteLater();
});
Similarly to QNetworkReply, the user has to call deleteLater() in the
callback that is connected to the signal.
The API provides two types of methods:
* owning methods that take ownership of the provided data-to-write or
read into a buffer that is allocated internally. These are
QRAAF::read() and QRAAF::write(). They exist for simplicity and user
convenience.
* non-owning methods that rely on the user to keep the provided buffers
alive as long as the operation in not completed. These are
QRAAF::readInto() and QRAAF::writeFrom(). They have overloads taking
span-of-spans, which should allow to implement vectored IO.
QIOOperation should become a public class at some point.
This means that its APIs should be easy to use, and also extensible.
It should not be limited to only Read and Write.
The hierarchy of IO operations is represented by QIOOperation and its
derived classes. The base class can be used when the user is not
interested in the data of the operation, or if the operation should
only report success of failure.
The derived classes implement data() methods with various return
types. The classes that represent Read and Write operations also
additionally provide offset() and numBytesProcessed() methods.
The patch also introduces QtPrivate::QIOOperationDataStorage that
holds a std::variant of all possible values that the operation can
contain. If needed, this variant can be extended to hold a QVariant
in order to store an arbitrary value.
This patch also provides the fallback QThreadpool-based implementation
that simply executes the requests on the dedicated threadpool using
QFuture. For simplicity, this implementation uses QFSFileEngine to
provide all operations.
The implementations for various backends should be added in follow-up
patches.
Task-number: QTBUG-136763
Change-Id: I8f34f9e78d91aa35756352de7fbe6544b58de23e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Check for isMutable in the flags() implementation before checking type
specific attributes. We bail out of setData() and setItemData()
immediately if isMutable() returns false, so this produces a consistent
behavior.
Explicitly verify in the test that the ItemIsEditable flag is only set
when it should be.
Pick-to: 6.10 6.10.0
Change-Id: I0bb4ebcf5870b59fec12f84861d772be5d68735b
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Instead of hardcoding whether a device has camera cutout or not,
detect that at runtime, this can then allow running the test
on phones and tablets. Android 9 and 10 emualators are buggy
so as usual they are the exception to the rule.
Pick-to: 6.10 6.10.0 6.9
Change-Id: I3257dd86893c584bddd5525865f9c7a861428ff5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Firstly, this was adding a new OnPreDrawListener listener with each
onApplyWindowInsets call and it wasn't cleaned afterwards. In this
case it's not even necessary to have those nested listeners.
Furthermore, don't set m_firstSafeMarginsDelivered from within the
onApplyWindowInsetsListener so that we're certain that some safe
margin values are retrieved from sources other than the
onApplyWindowInsetsListener just a guarantee.
If the window moves or resizes under the root while the root
doesn't change, signals like setOnApplyWindowInsetsListener
won't be sent thus we'll end up with out-dated safe margins,
so add addOnLayoutChangeListener to fix that.
Along the way move the expanded show after the normal show
because that's how I found this case handling was missing.
Pick-to: 6.9 6.10 6.10.0
Task-number: QTBUG-135808
Change-Id: I57c74cbd8ec7a0c190dc97ba9a92a0292a535240
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
We can now actually make "should not produce warnings" a test
condition, so do so. Amends the start of public history.
Change-Id: I58b7ba71cab59d1dec445f1408849527d6a38865
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
At the moment, QMetaOjbect::indexOfSlot() works for both Q_SLOTS: and
invokables, but technically for a Q_INVOKABLE method that isn't under
Q_SLOTS:, we should use indexOfMethod().
Pick-to: 6.10 6.9 6.8 6.5
Change-Id: Iabf14f234a119b0f06ef078ed080e717670c6a47
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Change prompted by this warning from GCC:
In function ‘T qvariant_cast(QVariant&&) [with T = QTransform]’,
inlined from ‘T QVariant::value() && [with T = QTransform]’ at qvariant.h:530:30,
inlined from ‘void QSvgAnimatedStyle::applyPropertyAnimation(QPainter*, QSvgAbstractAnimatedProperty*, bool, QSvgExtraStates&)’ at qsvgstyle.cpp:754:87:
qvariant.h:794:67: error: array subscript ‘QTransform[0]’ is partly outside array bounds of ‘QVariant [1]’ [-Werror=array-bounds=]
794 | return std::move(*reinterpret_cast<T *>(v.d.data.data));
| ^
qsvgstyle.cpp: In member function ‘void QSvgAnimatedStyle::applyPropertyAnimation(QPainter*, QSvgAbstractAnimatedProperty*, bool, QSvgExtraStates&)’:
qsvgstyle.cpp:754:67: note: object ‘<anonymous>’ of size 32
754 | QTransform animatedTransform = property->interpolatedValue().value<QTransform>();
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
If sizeof(T) > sizeof(Private::data), the sought object cannot
possibly be in the internal storage. But the old code still checked
is_shared and exposed the std::move(Private::data) case to the
compiler, prompting said warning.
To fix the warning, and to avoid emitting the redundant runtime check,
first check whether the sought object could possibly fit into the
internal buffer. Don't use CanUseInternalBuffer, which is what the
original implementation¹ did and we fixed afterwards². Just do a size
check. If the object is too large, no manner of QTypeInfo flags will
ever make it use the internal space. Since this is a compile-time
check, wrap it in a constexpr-if, thus hiding the move-from-internal-
space from the compiler for objects that are too large.
Add some checks, also for get/get_if. I couldn't reproduce the
warning, so I don't know whether these tests threw them, but the
setting is the same as in Eddy's report.
¹ dcf7604230
² eb87b0444a
Amends [²].
Reported-by: Edward Welbourne <edward.welbourne@qt.io>
Fixes: QTBUG-140064
Pick-to: 6.10 6.10.0 6.9 6.8
Change-Id: I66c12506f1746a94138c65dad980160138ab0a9e
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
This fails for Android 15 and blocks the safe margins fixes
in 6.10.0 release, I looked briefly at it but it seems it
might require some non-trivial changes to have it work, so
blacklist it for now.
Pick-to: 6.10.0 6.9 6.8
Task-number: QTBUG-140038
Change-Id: I1abe1dfdc6084549a44a9d7a209d59d7c21ae91b
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
(cherry picked from commit eaf36ed874)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
They are crammed on macOS to the point of being unusable. That might
need a fix in the style.
Pick-to: 6.10 6.10.0
Change-Id: I4c34b364d0ce4bcba38c1d51e0c3760b4b22f764
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
It prints the computed and expected lists if they don't match.
Also rename a duplicate test data tag name.
Pick-to: 6.10 6.9 6.8 6.5
Change-Id: Id2d438cdbebd5262fdacdfb3cc29660619aead18
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
If the byte array would detach or reallocate it would copy the data
over, then do the replacements; instead create a new byte array and copy
the data and replacement to it as needed, then swap it with `this`.
The behavior for negative `len` is preserved for historical reasons.
Handle `after`-pointing-into-this by using memmove() which can work with
overlapping ranges.
Pick-to: 6.10
Task-number: QTBUG-106185
Change-Id: Iedc848bebabf5621f459b11f0edf0e27807b9be0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Implement the QAccessible::ParentChanged callback.
Probably not possible with a perfect implementation.
What can reasonably be done is to issue ParentChanged on;
QWidget::setParent, QWindow::setParent, QQuickItem::setParentItem.
However calling these functions do not necessarily map 1:1 to QAccessibleInterface::parent().
Fixes: QTBUG-138802
Fixes: QTBUG-134923
Change-Id: Iac4ac7843ba904bf0b7aa9964ee68a94294ad979
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
When a QString has surrogates (2 consecutive QChar's in UTF-16),
convert to UCS4 first.
Rewrite the formatStringSequence() helper (which operates
on sequences of char/QChar) and related helpers to operate
on uint instead of ushort and remove the non-type template parameter
specifying the encoding by introducing a characterCode() converter
helper to convert to uint.
Check the QString passed in for surrogates and convert to UCS-4
if they are found (using the 32bit \U escape marker for Python).
Pick-to: 6.10 6.9 6.8
Fixes: PYSIDE-3173
Change-Id: Ie1d1282d78ad80894cf67dd47ea6a332d7dfda25
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Load/save the forms using Qt Designer and regenerate the base line to
get a base for adding new tests. This causes some loss (old margin
properties/resource files), but the benefits outweigh it.
Pick-to: 6.10
Task-number: PYSIDE-3173
Change-Id: I50b2f54f7fe5d245259be85e45d5bc40894363ea
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
because QCursor::setPos() doesn't work on this platform due to
security reason.
Perhaps things will change after pointer_warp_v1 protocal was
implemented in both compositor and qt wayland client side.
Pick-to: 6.10
Task-number: QTBUG-137020
Change-Id: I322c6abd0de0871ecef6b1b4fd5498a573e1232f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
We are facing this issue: "<Application> is ready" middleman notifications
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/358
in "normal_window.requestActivate();" line.
Without clicking the notification, the window which we requested
programmatically will not be shown, the test fails.
Pick-to: 6.10
Task-number: QTBUG-137020
Change-Id: I54f684c69ca678b26830b62e5443402436da104c
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
In certain tables which have cells that contain row spans
in beginning of a row, we could get into an inconsistent state
which would leave cells in the table unmapped/invalid.
Specifically, this happened when inserting a new left-most
column.
The algorithm has two data structures: A "logical cells map"
which gives the row span and col span of each cell, and then
a grid which maps the logical index of each (x,y) to a cell.
What happened in this case was that we were inserting at
pos == 0. For each row, we would then search for an insertion
point in that row by looking at the grid and finding the
logical index of the first slot in this particular row of the
grid. Then we would insert a new cell directly before this
index in cells and continue.
If we find a logical index which actually belongs to a prior
row than the one we are inserting into, since a previous cell
has a row span, we need to continue searching. Otherwise we
end up inserting the new column into this previous row,
which we have already handled.
This is where it went wrong: There was logic to handle this
by checking the logical index we found against the logical
index of the last grid slot in the previous row, and it is
even documented in a comment. But when pos==0, then we
would *always* set "logicalGridPositionBeforePosition" to -1,
thus we would never actually apply this condition for pos==0.
Setting logicalGridPositionBeforePosition to -1 is correct for
the first row, since there is no previous grid slot to look
at, but for subsequent rows we can still do this look up even
for pos == 0.
Pick-to: 6.5 6.8 6.9 6.10
Fixes: QTBUG-138678
Change-Id: I6094e7d0f41611b6d8b0952eac876bf2e41dfe9c
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
The MdiAreaTest looks for all signals, while it is really
only interested in aboutToActivate and windowStateChanged.
Rewrote the code such that it looks for these two signals
only.
Change-Id: I6c00d9c7fd9fe72e3caa59746e391829483fd0a8
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Amends 58b4be482cb481addebc966d713bc0521cca3218; we have:
QList<QByteArray> paramNames = method.parameterNames;
The above commit changed the code from:
while (paramNames.size() < paramCount)
paramNames.append(QByteArray());
for (int i = 0; i < paramCount; ++i)
To:
if (paramNames.size() < paramCount) // (paraphrased for brevity)
paramNames.resize(paramCount);
for (auto &foo : paramNames)
Calling something like this:
methodBuilder = builder.addSlot("foo(int)");
methodBuilder.setParameterNames({"", "i"});
Worked with the code before that commit, where it just used the first
element in `paramNames` and didn't look at the second one at all.
The new for-loop, `for (auto &foo : paramNames)`, iterated
paraNames.size() times, which led to the `dataIndex` being off by one.
Which would eventually hit an assert in buildMetaObject():
Q_ASSERT(!buf || dataIndex == pmeta->propertyData);
Friedemann Kleint debugged the issue in the bug report, so this patch
applies his suggestion of adding an assert in setParameterNames(), right
where the bug actually happens, because the assert in buildMetaObject()
makes it hard to connect the dots and fix the actual bug in user code.
Fixes: QTBUG-139845
Pick-to: 6.10
Done-with: Friedemann Kleint <Friedemann.Kleint@qt.io>
Change-Id: Icd355241834396c1c8659df621d0f785ef0cceee
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This allows a QWidgetAction to tell whether the user is approaching it
from above or below. For example, a custom horizontal strip of buttons
will focus the last button when approached from the below.
Change-Id: Ifa7abb1a2bf702d67dda92a14d865fed2ea6f82d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Avoid the default implementation's round trip through data() for each
role. We can get the multi-role value (the associative container or
gadget/QObject instance) once, and then read all roles into the span,
using logic similar to the itemData() implementation.
Implement data() through multiData() to avoid code duplication. The
runtime overhead of iterating over a span with a single entry is
minimal.
Change-Id: Ic911aadc8e10f07a334a415df428c93710978209
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
If rows are raw pointers, their ownership is ambigous for
copied and shared models. Until we have a good real use case or
a user request, let's keep it prohibited for usage,
because it improves detection of errors at compile-time.
Pick-to: 6.10
Change-Id: I55c8e00d9b20df1e43eb58c17863fcbf67f1f392
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
The test was missing, now it isn't. Check only for the horizontal header
where QRM provides a default implementation for cetain types, and and
the first column which tells us enough.
Fix failing tests: we don't want to include the storage specifier or
smart-pointer wrapper types that might be used to control the lifetime
of objects in a tuple.
Pick-to: 6.10
Change-Id: If35abff3d8350c5402e8bbc0519a12420d4b6d8d
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
This is not guaranteed to behave the same way where safe margins
were not delivered at startup on versions prior to Android 15, but
it's a good case to add to ensure margins are delivered and are
non-zero on Android devices and with various window states and flags.
Also, test that the top margin is equal or less than the size
of the system bars to ensure we are not getting bigger margins
that we should like in the case where a theme, Android 10-9,
adds an action bar by default.
Fixes: QTBUG-135808
Pick-to: 6.9 6.10
Change-Id: Iba39ee94c6d317270a56876db42028978e3f53b1
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
It fails consistently on macOS 26, and flakes on all other macOS
versions: http://testresults.qt.io/grafana/goto/raYHTorHg
Task-number: QTBUG-139950
Pick-to: 6.10
Change-Id: I249596ec269743fcd45ab937bf28ea5d8368f53c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
All items in an array have the same type, it's not useful to return the
same type name for the header of each column. Instead, just return the
section number.
Pick-to: 6.10
Change-Id: Ia01e177e363cec55c44fcf3f92b1b3bfc502abe8
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
User projects sometimes may want to query the namespace of namespaced
Qt.
We therefore attach a new property QT_NAMESPACE that can be read by user
projects.
Pick-to: 6.10
Change-Id: I541bd3eba41f1f5371faebf99f3cdb12698a9f25
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This reverts commit 58215a1821.
It will never trigger after the recent commit that overrides
destroyEditor().
The needed stacktrace is in the linked bug report.
Task-number: QTBUG-136653
Change-Id: Icb800bf4164ca43e239d84258736b64861a1f67e
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
We no longer use this hybrid surface type approach for Qt Widget's
composition mode. Nowadays we use RHI to compose the widget texture
and the native textures, and the window surface type depends on the
RHI API in use, e.g. QSurface::MetalSurface, or QSurface::OpenGLSurface.
Change-Id: I85001100f681a1cf524b8b7dc50f680a9579b447
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
tst_QWindow::modalWindowEnterEventOnHide_QTBUG35109 include multiple
calls to requestActivate() after a window is shown. These calls are
redundant as show() already activates the windows.
Remove the unnecessary requestActivate() calls to simplify the code.
Task-number: QTBUG-139705
Pick-to: 6.10 6.9 6.8 6.5
Change-Id: I5b05b22c0c389ed68496360de53dbe0ecccfd7c6
Reviewed-by: Błażej Szczygieł <mumei6102@gmail.com>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Verify that it behaves as expected, particularly its digitValue.
This requires Q_AUTOTEST_EXPORT on various functions called by tests.
In passing, mark NumericData::groupSizes() [[nodiscard]] and comment
on why NumericData's constructor checks pointer equality rather than
language for C.
Change-Id: I6527feaf0ad3f7343e4fe00f76106b644758c5b2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
There's a fair bit of it already and I intend to add more. Since most
(albeit not all) of it depends on QLocaleData, name it for that.
Change-Id: Ie80d2c78f0e746148bd3f3a4c5e069a4924fdbf4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Tested to work on
- FreeBSD:
QDEBUG : tst_QUdpSocket::broadcastingDualSocket(WithoutProxy:without-binding) Successfully sent datagrams to QList(QHostAddress("255.255.255.255"), QHostAddress("10.0.2.255"))
QDEBUG : tst_QUdpSocket::broadcastingDualSocket(WithoutProxy:without-binding) Received datagrams sent to QList(QHostAddress("::ffff:10.0.2.255"))
- Linux:
QDEBUG : tst_QUdpSocket::broadcastingDualSocket(WithoutProxy:without-binding) Successfully sent datagrams to QList(QHostAddress("127.255.255.255"), QHostAddress("255.255.255.255"), QHostAddress("192.168.26.255"))
QDEBUG : tst_QUdpSocket::broadcastingDualSocket(WithoutProxy:without-binding) Received datagrams sent to QList(QHostAddress("::ffff:127.255.255.255"))
- macOS:
QDEBUG : tst_QUdpSocket::broadcastingDualSocket(WithoutProxy:without-binding) Successfully sent datagrams to QList(QHostAddress("127.255.255.255"), QHostAddress("255.255.255.255"), QHostAddress("10.54.75.255"))
QDEBUG : tst_QUdpSocket::broadcastingDualSocket(WithoutProxy:without-binding) Received datagrams sent to QList(QHostAddress("::ffff:255.255.255.255"), QHostAddress("::ffff:10.54.75.255"))
- Windows:
QDEBUG : tst_QUdpSocket::broadcastingDualSocket(WithoutProxy:without-binding) Successfully sent datagrams to QList(QHostAddress("127.255.255.255"), QHostAddress("255.255.255.255"), QHostAddress("10.54.75.255"), QHostAddress("127.255.255.255"))
QDEBUG : tst_QUdpSocket::broadcastingDualSocket(WithoutProxy:without-binding) Received datagrams sent to QList(QHostAddress(""), QHostAddress(""), QHostAddress(""), QHostAddress(""))
Pick-to: 6.10 6.9 6.8
Task-number: QTBUG-139586
Change-Id: If87644640fc05fc21139fffdcba7e7f0f1edbc34
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
While the message remains true (datagrams sent to 255.255.255.255 don't
arrive), there is no timeout problem for a properly-configured FreeBSD
system because we'll have at least two more addresses available:
127.255.255.255 from lo0 (on which we fail sending!) and something from
the regular network interface.
QDEBUG : tst_QUdpSocket::broadcasting(WithoutProxy) Successfully sent datagrams to QSet(QHostAddress("255.255.255.255"), QHostAddress("10.0.2.255"))
Pick-to: 6.10 6.9 6.8
Change-Id: Iffc88ff40b6af7c2ddf1fffd3f5dd278ca1af389
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
I'm going to need the content in a new test.
Pick-to: 6.10 6.9 6.8
Change-Id: Ie0fbae7db73065e1681cfffd9066d78b003aeed0
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Use const_cast to call the mutable overload if we cannot call the const
overload. This allows us to directly support e.g. std::views::filter.
As a drive by, use using-statements to reduce code duplication.
Use std::views::filter directly in the tests, now that it works.
Change-Id: I47f06ee8fe921d5854f676a35a750e64f4356fc0
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Provide an alternative for
*auth = QAuthenticator();
[ChangeLog][QtNetwork][QAuthenticator] Add a new method to clear all
credentials.
Fixes: QTBUG-139124
Change-Id: Ia33b5dcb8eb6961f5daa5bc78addd8c78dd10e9a
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>