Commit Graph

39753 Commits

Author SHA1 Message Date
Marc Mutz
cea46aa362 QGestureManager: don't abuse a QMap for a set
The filterEvents() implementations used a QMap<GestureType, int> for
tracking whether a given type was already seen. The mapped_type was
completely unused.

Since the expected number of gesture types is very low, go directly to
QVarLengthArray, not QSet, as the reduced number of allocation will
dwarf the low overhead of O(N) search vs. O(1) for QSet or O(logN) for
QMap.

Change-Id: I98b6af69f11cca753e3c7c4fbb58e8f2e935e0d5
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-05-21 09:15:15 +02:00
Marc Mutz
f7ae47ad07 QEvdevTouchScreenData: use a mutex locker instead of manual lock/unlock()
Extra difficulty: the lock is conditional. Not a problem with std::unique_lock, which is movable.

Change-Id: Ib5515838ccb10100d5aa31163ab7f171591c04c4
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-05-21 09:07:38 +02:00
Marc Mutz
9d0649d338 QStandardDirs: fix quadratic loop
Instead of a bad copy of remove_if, with quadratic complexity, use
an ok copy of copy_if, with linear complexity.

Port to QStringRef as a drive-by.

Change-Id: I47fde73b33305385835b0012f6d332e973470789
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-05-21 08:58:16 +02:00
Marc Mutz
94fbea2f30 QFileSystemWatcher: fix quadratic loop by porting away from QMutableListIterator
QMutableListIterator::remove() is linear, so called in a loop, the
loop potentially becomes quadratic.

Fix by porting to std::remove_if. In this case, since the old code
unconditionally detached, anyway, we use remove_copy_if to build a new
list. That's still more efficient than the old code, even if nothing
is removed. It also prepares the code for when Java-style iterators
will be deprecated.

Since the same code appears in two different functions, do an Extract
Method into a file-static function.

Lastly, restore NRVO for most compilers by returning the same object
from all return statements of the function.

Change-Id: I6909c6483d8f7acfd1bf381828f020038b04e431
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-05-21 08:57:49 +02:00
Marc Mutz
1065777a2a QtGui: get rid of the last Java-style iterator
Trivial.

Java-style iterators are going to be deprecated.

Change-Id: Ie94658be988cc095fb3b05d0d4ef6e7e3bf9a2af
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-05-21 08:57:42 +02:00
Marc Mutz
b03385f9cf QFileSystemWatcherEngines: port some Java-style iterators to ranged-for
Java-style iterators are scheduled to be deprecated.

The general pattern used in the patch is that instead of copying an
input list, then iterating over the copy with some calls to
it.remove() (which leads to quadratic-complexity loops), we simply
copy conditionally (a la remove_copy_if instead of remove_if).

To make clearer what's going on, rename the outgoing list to
'unhandled'.

To avoid having to touch too much of the loops' structure, which
sometimes is quite convoluted, use qScopeGuard to do the append to
'unhandled', unless the original code removed the element.

Saves a surprising almost 5KiB in text size on GCC 9.1 optimized
AMD64 Linux builds.

Change-Id: Ifd861de9aa48d66b420858606998dd08a8401e03
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-05-21 21:57:20 +02:00
Marc Mutz
4e026a2076 QQnxIntegration: replace a Java-style iterator with an STL-style loop
Java-style iterators are going to be deprecated.

Change-Id: Ia55070608d3826bd84ed5d56a593c1c4918a6063
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-05-21 08:56:28 +02:00
Marc Mutz
88978a5b03 Add private qt_make_unique as a drop-in for C++14 std::make_unique
The original is much more subtle, so don't try to be a 100%
replacement. Most users will be able to use std::make_unique these
days. This is just a minimal implementation to enable using the
functionality in the implementation of Qt libraries. In particular,
it does not attempt to deal with arrays.

It is therefore not proposed as public API. It is placed in a new
private header, since the only header in QtCore that already
includes <memory> is sharedpointer_impl.h, and that did not seem
to be a good place to add it. It is probably too much of a
compilation-time drain to add <memory> to qglobal.h...

Change-Id: Ie206ef7ae9beb36c63aef4ec46dbde6c73e0d9f5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-05-21 20:17:21 +00:00
Giuseppe D'Angelo
8845caa057 QCharRef/QByteRef: warn when triggering the resizing operator= behavior
The whole reason of QCharRef/QByteRef existence is to have a magic
operator=. This operator= delays the actual detach up to
the moment something is written into the Ref, thus avoiding
spurious detaches to the underlying string/byte array.

operator= has also an extra feature, it allows this code to
succeed:

  QString s("abc");
  s[10] = 'z';
  assert(s == "abc      z");

This last behavior is *extremely* surprising.

The problem with all of this is that this extra convenience is
outweighted by the massive pessimization in the codegen for
operator[]; by the maintenance burden (QChar APIs need to be
mirrored in QCharRef, etc.), and, for the automatic resize, by the
fact that it's an super-niche use case.

Cherry on top, std::basic_string does not do that, and no Qt or std
container does that. In other words: any other container-like class
exhibits UB for out of bounds access.

We can't just go and change behavior, though. This is something
coming all the way back from Qt 2 (maybe even Qt 1), which means we
can't deprecate it at short notice.

This patch simply adds a warning in debug builds in case the special
resizing behavior is triggered. While at it, removes some code
duplication in QByteRef.

[ChangeLog][QtCore][QString] The behavior of operator[] to allow
implicit resizing of the string has been deprecated, and will be
removed in a future version of Qt.

[ChangeLog][QtCore][QByteArray] The behavior of operator[] to allow
implicit detaching and resizing of the byte array has been
deprecated, and will be removed in a future version of Qt.

Change-Id: I3b5c5191167f12a606bcf6e513e6f304b220d675
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-05-19 14:24:52 +02:00
Giuseppe D'Angelo
c7167509ac QPainterPath: convert manual memory management to std::unique_ptr
And default the destructor, now that it's empty.

Change-Id: I868d4fa04f8e82bc35f2364073d07fa47659b89c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-05-14 20:07:49 +02:00
Giuseppe D'Angelo
0060ff6749 QPainterPathPrivate: code tidies
* Honor the RO3, doing copies of the members where it belongs
(and not in its subclass), and properly handling the refcounting
by disabling the copy assignment

* Clean up construction of QPainterPathData by using ctor-init-lists,
getting rid of a warning because the base class copy constructor
wasn't being called by the subclass' copy constructor.

* Mark everything for cleanup in Qt 6.

Change-Id: I143a322dc816e2e12b454a9e5ffe63f1a86009a5
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-05-14 19:36:03 +02:00
Jędrzej Nowacki
f946c9fb78 Fix compilation error on compilers not supporting [[nodiscard]]
__warn_unused_result__ and [[nodiscard]] both are masked by
Q_REQUIRED_RESULT but there are some minor differences between them.
In general [[nodiscard]] is more flexible while
__warn_unused_result__ can cause warnings in some contexts, for
example:

  error #2621: attribute "__warn_unused_result__" does not apply here
  error #3058: GNU attributes on a template redeclaration have no effect

That is a fix for regression caused by
b91e6f6f40.

Change-Id: Icf11b832f31e714a88536828051f4b7f348cdb36
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-05-21 15:47:55 +02:00
Tasuku Suzuki
8afecdcccb Fix build without features.timezone on macOS
It is no longer needed after bd78f57463

Change-Id: I73aceb10eab7c9fdc7d0dfbe89012df7d0110205
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-05-21 11:34:39 +00:00
Mikhail Svetkin
9895cdd3ce rtems: Disable features which RTEMS does not support
build:
- shared
- use_gold_linker
- large file support

QtCore:
- systemsaphore
- process
- processenvironment

QtGui:
- clipboard
- multiprocess

Change-Id: I641b37d0b603bbe6f0a839019f458f8138c73d34
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-05-14 13:53:35 +02:00
Marc Mutz
1307bf2892 qlalr: replace a QMap-wrapping OrderedSet with std::set
Why roll your own if you can use the original. The clone was even
designed to be API-compatible with std::set, so porting is trivial,
except for the unholy int/size_t mismatch, which requires a few
casts.

Change-Id: Ieb99cbc019ef387c6901d7518d1e79585169b638
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-05-14 19:18:28 +02:00
Giuseppe D'Angelo
046a1b72b4 Qt 6: unexport QCharRef / QByteRef
They're fully inlined classes.

Change-Id: Id9e5f1a1a0b3d8ee49ba45ad2157ffa38fe265cd
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-05-18 18:48:55 +02:00
Marc Mutz
ed19fc0531 QFileSystemWatcher: lock autotest code away into a cold section
The code contained a sizeable chunk of string parsing along with
qDebug()s in the normal path of execution. That code, however, was
only used for Qt's own autotests.

The idea of this patch is, then, to not only move the autotest case
into the cold text section (using Q_UNLIKELY), but also to completely
exclude it, when QT_BUILD_INTERNAL is not set.

Unfortunately, the structure of the function did not really lend
itself to #ifdefing that part of the code out (production code was in
the middle of non-production code), so I transformed the engine
selection code into a lambda, replacing assignment with returns, and
swapping the branches of the central if around to yield a single block
of code that can be excluded from compilation with just one #ifdef.

As a consequence, the runtime code is almost unaffected, and the
function is much easier to read now.

Since the test-specific code is only compiled into Qt now in developer
builds, guard the tests that rely on this behavior with the same macro.

Change-Id: I9fd1c57020a13cef4cd1b1674ed2d3ab9424d7cd
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-05-21 12:58:27 +02:00
Giuseppe D'Angelo
eb8b63542f Disable copies in QObjectData / QObjectUserData
They're meant to be subclassed, so we need to avoid slicing.

Change-Id: I384b65478f728c69aaf1edbc985b3fb4150191fe
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-05-18 08:02:33 +02:00
Marc Mutz
2e83528856 QScopeGuard: some cleanups
Use qExchange() in the move ctor and pass the function object by
rvalue ref.

This saves one move construction and doesn't produce unexpected
results. The qScopeGuard free function should take the function object
by value, because it decays and because we can't create an rvalure
reference in a deduced context. But once we're inside qScopeGuard, the
extra object isn't needed anymore, so optimize it away.

Change-Id: I94cbc45f9bf6ca086e100efd922a0b4643a81671
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2019-05-21 12:48:11 +02:00
Marc Mutz
4b09d5a78d qmake: remove use of Java-style iterators
They will be deprecated, so qmake wouldn't compile anymore.

Change-Id: I42212fdf213df696d736ed34458f7e79bd902dd5
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2019-05-21 08:58:35 +02:00
Marc Mutz
0efc6a88b6 QtNetwork: port away from Java-style iterators
They are going to be deprecated.

Change-Id: Ib021aad108dc021df76ae21d1db6c8a1a734893d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-05-21 08:56:33 +02:00
Frederik Gladhorn
eeffdef1d7 macOS: Fix usage of deprecated accessibility APIs
The accessibilityAttributeValue method was deprecated and all needed
replacements are in macOS 10.12.

The new API is nicer, since it adds a lot of individual functions instead of
forcing one big switch statement on us. This makes it easier to implement
further protocols. When implementing e.g. the Button protocol, the old attribute
functions do not get called any more, so this is needed before implementing more
features.

Change-Id: I5a705edfa3f6bb0d25436df8cf5dd7f59e7e764e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-05-20 13:17:04 +00:00
Frederik Gladhorn
2bf7b15446 macOS accessibility: implement accessibilityLabel
We had an implementation of this based on the old attribute
based API, which also works. This cleans it up and adds
the setter.

Change-Id: I886fc9c89ee08b9f4f9aabec00ac1a5b9a800c6f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-05-16 13:37:24 +02:00
Erik Verbruggen
cfdbfcebbd QStateMachine: handle parallel child mode for state machines
Setting the childMode property to ParallelStates will result in an
invalid state machine. This is never checked (worse, we explicitly
allow it and have a constructor to set it), but it results in
findLCCA failing, which then results in a failing assert or crash.

This fix in this patch is to handle this case separately. The proper
fix would be to remove completely the ability to set the childMode
on a QStateMachine, but that will have to wait until Qt6.

Fixes: QTBUG-49975
Change-Id: I43692309c4d438ee1a9bc55fa4f65f8bce8e0a59
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2019-05-16 16:51:42 +02:00
Chris Adams
d7afd8bb38 Remove dead code from qdbusintegrator.cpp
This code has been there since the initial public commit, but has no
effect.

Change-Id: Iae80ae22a363b3bd0e6cf7706619b38edc47790f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-02-22 16:57:27 +10:00
Edward Welbourne
d3b887707d Clean up some poorly-placed newlines in the TLD suffix data
A comma appeared on a line on its own; a closing-brace didn't.

Change-Id: I33cf37bb3574cd421c8af5ab6312865b71ce61f1
Reviewed-by: Peter Hartmann <peter-qt@hartmann.tk>
2019-03-08 10:44:05 +01:00
Edward Welbourne
aca13a8eba Tidy up in qdatetime.cpp
Break a line before a close-brace. Added blank lines. Remove some
duplicate blank lines and spurious \fn directives. Fixed placement of
& between type and parameter name in the function declarations that
made these last redundant (these are the WS-only changes).

Change-Id: I7ee06a7cbb4f9cb275d5ad87246d8fbc9c9b6668
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-05-15 15:44:19 +02:00
Giuseppe D'Angelo
28ce318fcb Cleanup the fallout of QWeakPointer::data() deprecation
There are still users of QWeakPointer::data(), which under
certain compilers will make headersclean fail. So this
patch:

* ports data() to a private internalData() function and
calls it from all the usage points;

* adds cleanup notes for Qt 6, once some of the deprecated
machinery around storing unmanaged QObjects in QWeakPointers
can get removed.

Change-Id: Id3bcbd23374c18a2026861c08a4dcba1670673c1
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Mike Krus <mike.krus@kdab.com>
2019-05-17 20:42:36 +02:00
Christian Ehrlicher
edb53d761e QFileDialog: mark obsolete enum DontUseSheet as deprecated
QFileDialog::DontUseSheet is obsolete since 4.5 and not used anywhere
inside the Qt code base. Mark it as deprecated and remove the last usage
in the examples.

Change-Id: If3d23fd5906314e6ebc7080efa79da14a2aa2720
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2019-05-17 14:08:34 +00:00
Christian Ehrlicher
4f6eb43898 QtCore: mark obsolete enumerations as deprecated
The following enumerations were obsolete for a log time but not marked
as deprecated:
 - WA_NoBackground
 - WA_MacNoClickThrough
 - WA_MacBrushedMetal
 - WA_MacMetalStyle
 - WA_MSWindowsUseDirect3D
 - WA_MacFrameworkScaled
 - AA_MSWindowsUseDirect3DByDefault
 - AA_X11InitThreads
 - ImMicroFocus

mark them as deprecated and remove the usage inside QtBase so they can
be removed with Qt6

Change-Id: Ia087a7e1d0ff1945286895be6425a6cceaa483fb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2019-05-17 14:08:30 +00:00
Giuseppe D'Angelo
b7a7d61efc Deprecate QWeakPointer::data()
It's a dangerous API to have. Upgrade to a shared pointer
if accessing the raw pointer is required.

[ChangeLog][QtCore][QWeakPointer] The data() function has
been deprecated.

Change-Id: Ie5d34f4fb500b3cfa14d2c0b1b08484df072129c
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-05-16 13:59:52 +00:00
Marc Mutz
5497183c71 Add some examples to qExchange() docs
Change-Id: I758782f6566ab94006aedacc9988ec4eb09a14c6
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-05-16 13:18:06 +00:00
Joerg Bornemann
0e71db3c8e Deduplicate initialization code for default variables
Use the writeDefaultVariables method also for the
Win32MakeFileGenerator. Remove the initializations that are already done
in Makefile::writeDefaultVariables.

Change-Id: I590cc5d7031de67dd830e6113849ab080dbf2325
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-05-16 11:36:36 +00:00
Joerg Bornemann
43a66453c5 Clean up class definitions of makefile generators
Remove pointless constructors and destructors.

Change-Id: I7aea8587bf3598b6f5324aac8898edf227475d63
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-05-16 11:36:22 +00:00
Allan Sandfeld Jensen
db525e6e9d Fix race in colorspace LUT generation
The old code did not prevent concurrent writes to the LUTs by separate
threads, each finding lutsGenerated to be false.

Let's consider whether the change is safe now: the storeRelease(1)
comes before the QMutex::unlock(), but since it is release semantics
no writes may be ordered past it. We have two releases, and their
order doesn't matter, since nothing else happens in-between.

Could we use a normal relaxed store? No, because the unlock() of the
mutex only synchronizes with the lock() of the same mutex, which
doesn't happen if the loadAcquire() succeeds. For loadAcquire() to
happen-before a write to the luts, we need a storeRelease() on the
atomic.

So, everything is correct, and minimal.

But maybe, to save the next reader from having to do the same mental
exercise again, add a manual locker.unlock() in front of the
storeRelease()?

Again no: that opens a gap where the luts are already generated on T0,
and the mutex unlocked, but the atomic not set. If another thread T1
gets to execute the function, it will enter the critical section, then
writing new values to the LUT. Meanwhile, the T0 sets generate to true
and a T2 enters the function, sees the final write from T0 and starts
using the luts -> data race with the writes concurrently done by T1.

Change-Id: Id278812a74b6e326e3ddf0dbcbb94b34766aa52e
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-05-16 11:09:04 +00:00
Kai Pastor
a0d8fb4ac3 Fix mingw pkgconfig file and dependency naming
This change adds the correct suffix to debug mode .pc filenames for
MinGW and also to the Qt libraries listed in the `Requires` field.
The filename adjustment fixes the accidental overwriting of release
mode .pc files with the debug mode variant which required the wrong
variant of the libraries when `debug_and_release` is active.

Note that macOS also supports the `debug_and_release' configuration
but may use the regular library names together with DYLD_IMAGE_SUFFIX.
Creation of *_debug.pc files is turned off as they're identical to their
non-debug counterparts.

[ChangeLog][Platform Specific Changes][MinGW] Added a suffix to debug
mode pkgconfig files.

Task-number: QTBUG-4155
Change-Id: I221c2dae51d7bd011836cb03945631a43180d7b5
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2019-05-16 11:03:40 +00:00
Joerg Bornemann
5641650993 Add -qtlibinfix-plugins for renaming Qt plugins according to QT_LIBINFIX
[ChangeLog][configure] Added the configure option -qtlibinfix-plugins
to rename plugins according to QT_LIBINFIX. This option is off by
default.

Fixes: QTBUG-15192
Change-Id: Id5b267e169ee143fc8f7abc6b27bc0ed5306406f
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2019-05-16 06:22:25 +00:00
Frederik Gladhorn
77ad8dcfcc Enable tst_QWidget_window::tst_resize_count on Ubuntu 18.04
This test passes, according to our metrics it kept on failing on 16.04
and on OpenSuse.

This reverts commit d2015b4d06.

Change-Id: Ibe81f848238d9df651a74f9fd82ac636c2c249f1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2019-05-15 17:20:47 +00:00
Frederik Gladhorn
9ce6742790 macOS accessibility: Implement NSAccessibilityElement
Modern macOS accessibility is based on protocols.
By implementing NSAccessibilityElement we get warnings
for missing functions for the most basic accessibility
functionality.

Change-Id: I0595ea5b9927c5bfb4bbeff3fc9322cb1f232b9f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2019-05-15 17:03:08 +00:00
Mårten Nordheim
cd816d4b6a Add setAutoDeleteReplies to QNetworkAccessManager
Following the introduction of AutoDeleteReplyOnFinishAttribute to
QNetworkRequest it seems natural to make it easy to enable for all
replies created with the current QNetworkAccessManager.

[ChangeLog][QtNetwork][QNetworkAccessManager] Added setAutoDeleteReplies
to QNetworkAccessManager to enable the AutoDeleteReplyOnFinishAttribute
attribute for all QNetworkRequests that are passed to
QNetworkAccessManager.

Change-Id: I7f96dd1fc9a899328e89732be17780b4e710c2a2
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-05-15 12:48:07 +00:00
Mårten Nordheim
927eba344c Introduce AutoDeleteReplyOnFinishAttribute for QNetworkRequest
[ChangeLog][QtNetwork][QNetworkRequest] Added the
AutoDeleteReplyOnFinishAttribute attribute to QNetworkRequest, which
makes QNetworkAccessManager delete the QNetworkReply after it has
emitted the "finished" signal.

Change-Id: I03d4ac0830137882e51dd28795a8ec817762a300
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-05-15 12:47:55 +00:00
Giuseppe D'Angelo
15d3a52d4e QComboBox: do not bypass the base class' overrides
Change-Id: I01bb84a39d15231878ff267cfcb0f13167defd47
Reviewed-by: David Faure <david.faure@kdab.com>
2019-05-15 10:38:11 +00:00
Giuseppe D'Angelo
d0b293856b QSplitter: do not bypass the base class' overrides
Change-Id: Ie58025191bb250914c13385d6e374e8d0c3f99b6
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2019-05-15 09:56:25 +00:00
Marc Mutz
8b771e782d QNetworkReply: replace a QQueue with a std::vector
The 'queue' was never used as a queue: it was populated, and then
exchanged into a local copy to be consumed in a loop. This loop used
dequeue(), but of course it could just const-iterate the container and
dump it as the end, since the member variable was already reset at
that point, no-one could tell the difference from the outside.

So, no need for a queue. A vector will do very nicely.

The loop now uses ranged-for and qExchange(), greatly simplifying the
code over the old version.

Add another qExchange() call as a drive-by.

Change-Id: I6147453dc9edfe9500833627b123bb3a31114651
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-05-15 09:00:10 +00:00
Frederik Gladhorn
c871ba2b23 Add shortcut for select all in QSpinBox
This adds the shortcut to spinboxes and date edites.

Fixes: QTBUG-48231
Change-Id: I91400e1990e4b1d7d971198c1e2a64149c2a835e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2019-05-15 07:53:34 +00:00
Ryan Chu
33d2715dd3 QFtp: Skip the flaky QTestEventLoop::timeout in Coin network
When migrating QFtp test to docker server, it seems it is easy to get
"QTestEventLoop::instance().timeout()" during the test in Coin network.

To move the task of migration forward, those flaky timeout errors will
be ignored for short-term.

Task-number: QTBUG-75549
Change-Id: I797952b82c0ceb637f40c77fac2a88ca2a9a0eae
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2019-05-15 06:10:13 +00:00
Ryan Chu
835d83b134 Fix the timing issue of QFtp tests when using Docker servers
Sometimes, it fails in tst_QFtp::proxy or tst_QFtp::activeMode under the
stress test. It complains about "Network operation timed out" on
vsftpd.test-net.qt.local.

When this issue happens in tst_QFtp::proxy, it shows "USER-ERR reject:
172.18.0.5 (ForkLimit 40)" in the log of ftp-proxy. By default, the
ftp-proxy only supports 40 incoming client connections per minute. To
make the ftp-proxy more powerful, this change extends the limits from 40
to 2000.

When this issue happens in tst_QFtp:activeMode, vsftpd shows 426 Failure
writing network stream error. It is a known issue of vsftpd. A quick fix
is turning use_sendfile off.

Change-Id: Iad50469654041bf30f92ef00805034f0d4aa9c3f
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-05-15 06:10:01 +00:00
Ryan Chu
a7ed7c1230 Rework QFtp test and resolve the unresolved items
The proxy_data() defined in tst_qftp.cpp expects five items (bigfile,
nonASCII, rfc3252, rfc3252.txt, and upload) in the server folder
(ftp/qtest). The file rfc3252 and nonASCII folder were missing.

Change-Id: I995d6e254875ade22a1def53187077f1cc8d4c98
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-05-15 06:09:52 +00:00
Volker Hilsheimer
dfe497a14e Migrate QFtp test to new test server
Use docker test server to run test, following instructions on
https://wiki.qt.io/Network_Testing. Verified on Ubunutu 18.04.

Several test failures due to network timeouts and inconsistent
configuration of FTP server and assumptions made in the tests.
However, the test is either way blacklisted, and the docker test
server is not in use yet.

Done-with: Ryan Chu <ryan.chu@qt.io>
Fixes: QTQAINFRA-2275
Change-Id: I4cbd0109ce3f4cfb23ba2303a85796681d12febc
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-05-15 06:09:41 +00:00
Liang Qi
7bf90b0dde Merge "Merge remote-tracking branch 'origin/5.13' into dev" into refs/staging/dev 2019-05-15 10:08:53 +00:00