340 Commits

Author SHA1 Message Date
Lars Knoll
993b049adf Get rid of the locking in activate()
Removing connections and resizing the signal vector now
happens in a way that will not interfere with activate(),
as the old objects won't get deleted if we are somewhere
inside a signal emission.

This means that we don't need to lock the senders mutex
in activate anymore, as long as the reference counting
on the ConnectionData is atomic and we are in the senders
thread.

This implies that we now need to lock the receivers mutex in
queued_activate() abd blocking queued activation to ensure
it hasn't been deleted while we are emitting.

In addition, some precautions need to be taken to not read
from the receiver without holding the lock, as it could get
deleted while we're activating (if it's in a different thread).
To make that possible store the receivers thread id in the
connection data.

Use atomic pointers for all variables that can get modified
with the signalSlotLock() held and that are being read
without the lock being held.

This gives us a very nice additional speed improvement
for signal emissions.

                       without change    with change
string based connect:  3287              2436
pointer based connect: 3941              3265
not connected:          403               400
disconnected:           460               489
5 slots connected:     9112              4515

Change-Id: Ib7324bb74c389dcc3b6581a03c31469a6e589fc2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-03-29 13:46:39 +00:00
Lars Knoll
13ab090977 Add safe way to resize the signalVector
Change-Id: Ib55da020f22e981bc379af3b4cf3431bf0fa0c20
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-03-29 13:46:29 +00:00
Lars Knoll
999c26dd83 Add a QAbstractMetaCallEvent
And use it to clean up the reimplementations in Qt DBus.

Change-Id: I8e3fe35e8db6405cbcbfb45b42a8f2efecc1cef0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-03-29 13:46:22 +00:00
Lars Knoll
6e0b5dadc7 Change cleanup mechanism for orphaned connections
Put all connections that get disconnected into a singly
linked orphaned list.

Whenever the refcount on the connectionData drops down to
one, this list can safely be cleared, even with the planned
removal of locking in activate().

Use an id integer in the connection to acoid activating newly
added connections.

Fixes: QTBUG-72649
Change-Id: Ide3d116ae7fc9ca497598c1c2b71d43b4339c92d
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-03-29 13:46:17 +00:00
Lars Knoll
12bc039baa Don't iterate over the connections without holding a lock
When checking whether a slot is connected to a signal, we need to
hold the signalSlotLock to be sure about the answer, or we can
get crashes when a connection gets removed while doing the check.

The check in activate() can handle some uncertainty as it's only
a shortcut to the longer path.

Fixes: QTBUG-74604
Change-Id: I3fc822455fbadc0223ef68632f5fb3df3ff3e86d
Reviewed-by: Aapo Keskimolo <aapo.keskimolo@qt.io>
2019-03-21 21:58:06 +00:00
Qt Forward Merge Bot
32084b0733 Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	src/corelib/tools/qcollator_win.cpp

Change-Id: I6d806d7c58b2057ebde3ad915bb5551f34b700e5
2019-03-14 10:49:29 +01:00
Christian Ehrlicher
fed9fa1714 Doc: replace 0 with \nullptr in documentation
Replace some more 0 with \nullptr.

Change-Id: I2af91bf3712eef5161b11da0c44614bc039ade03
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-03-13 10:57:25 +00:00
Qt Forward Merge Bot
7aa204d5b3 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: Icec0aa703d8a13efa9f1634a1a353eb9d63685c8
2019-03-01 01:00:54 +01:00
Qt Forward Merge Bot
043f99954f Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: Icc9b061c56e969756f0351c936cdeb8063c86079
2019-02-28 01:00:15 +01:00
Mårten Nordheim
2ec47d6cb5 Fix crash in QTest's signal dumper
It Q_ASSERTs that argv is not a nullptr, so it would fail when an
unconnected signal with 0 arguments was emitted.

Change-Id: I5dd810fbeea5b6b511eff4705efdaa6a55739604
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-02-27 14:27:04 +00:00
Thiago Macieira
96404f7ac8 Doc: update the note about nested deleteLater()
If you enter a nested event loop, cause a deleteLater(), exit that event
loop, then enter a new one, the nesting count will be the same so those
are legitimate targets for deletion.

Task-number: QTBUG-73432
Change-Id: Id98140e1c2f0426cabbefffd157f975b5e291ccd
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-02-27 04:27:45 +00:00
Qt Forward Merge Bot
c6fc2bc3e2 Merge remote-tracking branch 'origin/5.13' into dev
Change-Id: I14eaabe98845445a9ea5266872cc1797786cfe04
2019-02-27 01:00:45 +01:00
Robert Loehning
85b0ce8ca3 Fix can not -> cannot
Change-Id: Ie9992f67ca59aff662a4be046ace08640e7c2714
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-02-25 13:03:45 +00:00
Ulf Hermann
46589056c3 QObject: count declarative receivers also if there are no C++ ones
Change-Id: If998cdd5eeb8a3ae85cd540cc9c1fd0c051e1d4b
Fixes: QTBUG-73753
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-02-22 11:36:18 +00:00
Qt Forward Merge Bot
035f934d7a Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
	tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp

Added tests/auto/testlib/selftests/expected_crashes_5.txt to work
round the output of the crashes test (which exercises UB, see
QTBUG-73903) being truncated on one test platform.

Change-Id: I9cd3f2639b4e50c3c4513e14629a40bdca8f8273
2019-02-20 09:51:12 +01:00
Christian Ehrlicher
91deac4a65 QtCore: replace null and nullptr with \nullptr in documentation
Replace null and '\c nullptr' with \nullptr in the documentation.

Change-Id: Ib9e0cfc2eb2830b213e6523773603d56180b0998
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2019-02-18 18:35:16 +00:00
Lars Knoll
aea500d5d7 Use QBasicMutex instead of QMutex in the signalSlockLock()
Add a simple private QBasicMutexLocker class, and let the
QOrderedMutexLocker operate on a QBasicMutex.

This allows the compiler to inline more things when handling
connections and speeds up activate() a bit more.

                       without change    with change
string based connect:  3621              3368
pointer based connect: 4341              3919
not connected:          433               437
disconnected:           551               538

Change-Id: If979337891178aaeb0b3340b6d4f68b6f86b0260
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-02-08 21:55:41 +00:00
Lars Knoll
0e534bf8b7 Replace the ConnectionData::inUse int with a proper refcount
The main difference is that QObject itself also holds on reference
on the structure.

Also rename the orphaned flag to objectDeleted for clarity.

Change-Id: Ief9b9ff9c8b9cc3630dcfd29806ed24cd07150e4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-02-08 21:55:35 +00:00
Lars Knoll
5cc6f90910 Move all connection related data into one data structure
Adn create that data structure on demand on the heap.

This reduces the size of QObjectPrivate if there are no
connections. If we have connections, it'll use the same
amount of allocations and memory as before.

Change-Id: I900f6980a2cd8a5f72c3ad18697b5dd49100217d
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-02-08 21:55:29 +00:00
Lars Knoll
ab92b9e400 Simplify the code required for switching the current sender
Squeezes another percent of performance out of
QMetaObject::activate().

Change-Id: I620b8c578681280efcc9bec50cfb1020d2afc928
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-02-08 21:55:22 +00:00
Lars Knoll
a65752c71b Shave ~5% off from signal emission time
Refactor activate(), so that we eliminate almost all
checks for signal hooks in the common case.

Here are the benchmark numbers showing the improvement
for 100M signal emissions

                       without change    with change
string based connect:  3836              3693
pointer based connect: 4571              4510
not connected:          479               433
disconnected:           559               522

Change-Id: I394e6ea5d5bc96e298e8cc0c763eed78c8041876
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-02-08 21:55:16 +00:00
Lars Knoll
a5a859e721 Get rid of the connectedSignals bitflags
Measurements show that it's just almost as fast to simply query
the connectionlist directly and avoid both the memory
overhead of the bitfield and the associated bookkeeping.

For connected signals, the difference is not relevant at all.
With a signal that was never connected, removing the bitfield will
cause signal emission to be ~2.5% faster. And if you ever disconnect
from a signal, the bitfields might not be accurate and this can
cause a major slowdown.

Here are some numbers to validate this. All times are measured
in ms for 100M signal emissions:

                       without change    with change
string based connect:  3817              3836
pointer based connect: 4552              4571
not connected:          493               479
disconnected:          2113               559

Change-Id: Ia2c85036afaa7f991b883c8ff812f69cf4580f7e
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: hjk <hjk@qt.io>
2019-02-08 21:55:10 +00:00
Lars Knoll
88a2a746b7 Always return early if no signal is connected
And simply emit the signal spy and tracing callbacks in
that code path as well.

Change-Id: I17f65055c7044caf1be58fac94bb7fe3487f3060
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-02-08 21:55:02 +00:00
Liang Qi
fbfacd33be Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts:
	src/android/templates/AndroidManifest.xml
	src/network/ssl/qsslsocket_mac.cpp
	src/widgets/styles/qstylesheetstyle.cpp
	tests/auto/corelib/kernel/qtimer/BLACKLIST
	tests/auto/testlib/selftests/blacklisted/tst_blacklisted.cpp
	tests/auto/testlib/selftests/expected_blacklisted.lightxml
	tests/auto/testlib/selftests/expected_blacklisted.tap
	tests/auto/testlib/selftests/expected_blacklisted.teamcity
	tests/auto/testlib/selftests/expected_blacklisted.txt
	tests/auto/testlib/selftests/expected_blacklisted.xml
	tests/auto/testlib/selftests/expected_blacklisted.xunitxml
	tests/auto/testlib/selftests/expected_float.tap
	tests/auto/testlib/selftests/expected_float.teamcity
	tests/auto/testlib/selftests/expected_float.txt
	tests/auto/testlib/selftests/expected_float.xunitxml

Done-With: Christian Ehrlicher <ch.ehrlicher@gmx.de>
Done-With: Edward Welbourne <edward.welbourne@qt.io>
Done-With: Timur Pocheptsov <timur.pocheptsov@qt.io>
Change-Id: If93cc432a56ae3ac1b6533d0028e4dc497415a52
2019-02-08 12:31:02 +01:00
Andreas Hartmetz
ddb5d39045 QMetaObject::Connection overview documentation improvements
Try to better describe what it is and what it does. Also mention
its strongest use case.

Change-Id: Ib5c3e8a3c9b96169c139c5d7e8995a6a49d7d5e1
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-02-06 10:35:03 +00:00
Christian Ehrlicher
6298850293 QtCore: replace 0 with \nullptr in documentation
Replace 0 with \nullptr in the documentation.
As a drive-by also replace some 0 with nullptr in the corresponding
code.

Change-Id: I101a61f5fad71cadb73bba9a8fd5dce6cc0836d0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-01-28 19:37:22 +00:00
Liang Qi
980567b3a3 Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
	src/android/templates/AndroidManifest.xml
	tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp

Change-Id: I4c9679e3a8ebba118fbf4772301ff8fde60455b9
2019-01-26 08:35:40 +01:00
Ulf Hermann
4faf011c3f Document that you shouldn't Q_ENUM() things outside the int range
The meta object system stores enums as signed int, probably for
performance reasons. This is good enough for about 99% of the use cases.
If you try to register larger types and then access them through the
metaobject system, you can get undefined behavior.

Task-number: QTBUG-71947
Change-Id: I16b395547c22fad10b476c2c2a0768538db0a20e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-01-22 17:21:35 +00:00
Kai Koehne
119487650e Doc: End sentence about Q_GADGET with dot
Change-Id: I55380d133017670f212df331fba655e80538e412
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2019-01-22 15:18:24 +00:00
Qt Forward Merge Bot
f94ca82e0f Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
	.qmake.conf

Change-Id: Ibfcb30053f3aacb8ec2ec480e146538c9bf440ea
2019-01-21 13:03:09 +01:00
Mitch Curtis
574b56913f Doc: mention that some filtered events need to be explicitly accepted
QKeyEvent's detailed description already documents this:

"A key event contains a special accept flag that indicates whether the
receiver will handle the key event. This flag is set by default for
QEvent::KeyPress and QEvent::KeyRelease, so there is no need to call
accept() when acting on a key event. For QEvent::ShortcutOverride the
receiver needs to explicitly accept the event to trigger the override.
Calling ignore() on a key event will propagate it to the parent widget.
The event is propagated up the parent widget chain until a widget
accepts it or an event filter consumes it."

However, someone looking at eventFilter() won't see this, resulting in
the shortcut not being consumed and propagating elsewhere, so mention
it in the docs for eventFilter() too.

Change-Id: I14fece52133be641ccdabd81f75706cd10b64669
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-01-10 10:45:53 +00:00
Lars Knoll
87c47c6a82 Minor optimization
Avoid a couple of branches in QMetaObject::activate().

Change-Id: I15394d1ede48be771797fc5f64a5de6387e6f814
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2019-01-07 08:15:14 +00:00
Lars Knoll
43720ec200 Deprecate QObject::findChildren(const QRegExp &, ...)
Use the overload using QRegularExpression instead.

Change-Id: I1bf468b248c0a3f5b2304b1831379a127093df06
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2018-12-14 07:52:10 +00:00
Liang Qi
58437fb125 Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
	src/corelib/serialization/qcborcommon.h
	src/corelib/tools/qlocale_data_p.h
	tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp

Done-with: Edward Welbourne <edward.welbourne@qt.io>
Change-Id: Ibed987f6d77a0294f78f67d78625237616082416
2018-11-10 11:38:40 +01:00
Kari Oikarinen
b971310e2d QObject: Check for declarative signals in isSignalConnected
Amends a952fd7d5b03ce1968ec58871fbb8b3600895900.

The mentioned commit started to skip QObjectPrivate::isSignalConnected() call if
the connectionLists are dirty, which lead to tst_qqmllanguage::receivers() test
inside qtdeclarative breaking.

Declarative signals were not checked if that function was not called. It
previously also wasn't called for signals higher than 64. Fix that by checking
for declarative signals after the connectionLists search is unsuccessful.

Fixes: QTBUG-71550
Change-Id: Ifcb5fdd0dc9a6b14b9f448a016fd09356a55b985
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2018-11-08 15:15:59 +00:00
Qt Forward Merge Bot
f09fc1f352 Merge remote-tracking branch 'origin/5.12' into dev
Change-Id: I6f8d3abd3247dc980dc7834801a017a89c8f4286
2018-11-01 01:01:28 +01:00
Kari Oikarinen
a952fd7d5b QObject: Fix isSignalConnected() when signals have been disconnected
The bitmap cache for the first 64 signals being connected was only set when the
connection is added. It was never unset when the connection was removed.

Internal use of the connectedSignals bitmap is not hurt by it occasionally
saying a signal is connected even though it is not, since the purpose of those
checks is avoiding expensive operations that are not necessary if nothing is
connected to the signal.

However, the public API using this cache meant that it also never spotted
signals being disconnected. This was not documented. Fix the behavior by only
using the cache if it is up to date. If it is not, use a slower path that gives
the correct answer.

To avoid making disconnections and QObject destructions slower, the cache is
only updated to unset disconnected signals when new signal connections are
added. No extra work is done in the common case where signals are only
removed in the end of the QObject's lifetime.

Fixes: QTBUG-32340
Change-Id: Ieb6e498060157153cec60d9c8f1c33056993fda1
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
2018-10-31 10:32:41 +00:00
Liang Qi
e28e91ae99 Merge remote-tracking branch 'origin/5.12' into dev
Conflicts:
	src/corelib/animation/qpropertyanimation.cpp
	src/gui/image/qicon.cpp
	tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp

Change-Id: I3698172b7b44ebb487cb38f50fd2c4a9f8a35b21
2018-10-25 07:21:53 +02:00
Cristian Maureira-Fredes
1f6bfc2207 Doc: Move literal code block to a separate file
We need to override this snippet for the documentation
we generate for Qt for Python, and it is easier to have
it on a separate file.

Task-number: PYSIDE-801
Task-number: PYSIDE-691
Change-Id: Ideb5b6af25024279f167137d3b65660bb9c96a7e
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2018-10-15 10:55:18 +00:00
Qt Forward Merge Bot
0e1866017f Merge remote-tracking branch 'origin/5.12' into dev
Change-Id: I6083c3e61b7dbe188f83676f7e7bb268e5ccf2f3
2018-09-29 01:00:10 +02:00
Giuseppe D'Angelo
42c545faf7 Tracepoints: trace signal activation
Change-Id: I1ef8074178386166157d9b3416fd432014585857
Reviewed-by: Rafael Roquetto <rafael@roquetto.com>
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2018-09-25 21:22:47 +00:00
Ulf Hermann
dd944136a2 QObject: Document order of events on destruction
Weak pointers are zeroed before destroyed() is emitted. This makes sense
because the signal is called "destroyed()", not "aboutToBeDestroyed()",
and the code has been like this for a long time.

Change-Id: Ic852fe354405e328d1922a75931e7eb7bf651b26
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-09-04 07:05:00 +00:00
Ulf Hermann
0a06e1baf9 Modernize the "thread" feature
Add it to configure.json and replace all occurrences of QT_NO_THREAD
with QT_CONFIG(thread). Add conditions for other features that depend
on thread support. Remove conditions where we can use the QMutex and
QThreadStorage stubs.

Change-Id: I284e5d794fda9a4c6f4a1ab29e55aa686272a0eb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2018-08-17 00:34:36 +00:00
Qt Forward Merge Bot
053e7cce79 Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	.qmake.conf
	src/corelib/doc/src/objectmodel/signalsandslots.qdoc
	src/plugins/platforms/cocoa/qcocoamenuloader.mm
	src/plugins/platforms/xcb/qxcbconnection.cpp
	src/plugins/platforms/xcb/qxcbconnection.h
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/plugins/platforms/xcb/qxcbwindow.cpp
	tests/auto/gui/image/qimage/tst_qimage.cpp

Done-with: Gatis Paeglis <gatis.paeglis@qt.io>
Change-Id: I9bd24ee9b00d4f26c8f344ce3970aa6e93935ff5
2018-08-07 17:44:51 +02:00
Thiago Macieira
64a560d977 QObject: do allow setProperty() to change the type of the property
[ChangeLog][QtCore][QObject] Fixed a bug in setProperty() that caused a
property change not to take effect if the old value compared equal using
QVariant's equality operator, but the values were not strictly equal.

Task-number: QTBUG-69744
Change-Id: I00e04a465fcf4fc1a462fffd1547885861a07a64
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2018-08-04 15:46:02 +00:00
Frederik Gladhorn
3b1340fdc1 Fix typo as->has
Change-Id: I4f9033660c06686d7b499ec6d28be2c3b64353e2
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Martin Smith <martin.smith@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-07-16 18:48:17 +00:00
Giuseppe D'Angelo
5e5072c654 Tracepoints: trace QObject construction and destruction
Change-Id: I10f5ef391a2d3059ed5e8a26afe5e191adc31e85
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2018-07-04 23:24:38 +00:00
Liang Qi
e3ed2281c0 Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
	src/plugins/platforms/cocoa/qnsview.mm
	src/plugins/platforms/cocoa/qnsview_dragging.mm
	src/plugins/platforms/ios/qiosinputcontext.mm
	src/plugins/platforms/xcb/qxcbconnection.cpp
	src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
	src/plugins/platforms/xcb/qxcbwindow.cpp
	src/tools/androiddeployqt/main.cpp
		Was moved from qttools into qtbase in 5.11.
		So re-apply 32398e4d here.
	tests/auto/corelib/global/qlogging/test/test.pro
	tests/auto/corelib/global/qlogging/tst_qlogging.cpp
	tests/auto/corelib/io/qfile/tst_qfile.cpp
	tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
	tests/auto/corelib/thread/qthreadstorage/test/test.pro
	tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
	tests/auto/widgets/kernel/qapplication/test/test.pro

Done-with: Gatis Paeglis <gatis.paeglis@qt.io>
Done-with: Mårten Nordheim <marten.nordheim@qt.io>
Done-with: Oliver Wolff <oliver.wolff@qt.io>
Change-Id: Id970486c5315a1718c540f00deb2633533e8fc7b
2018-07-02 11:23:45 +02:00
Paul Wicking
8bd73ad989 Doc: Add missing full stops in briefs
Task-number: QTBUG-68933
Change-Id: I3f2a9f8c562f9a44bb32bddd31d75abbfe6de04d
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2018-06-21 14:23:30 +00:00
Simon Hausmann
bf1f17364f Add note about calling invokable functions from QML when returning QObjects
Link to the data ownership section of the QML documentation to elaborate
on the special rules that apply for invokable functions that return
QObjects.

Change-Id: I41ea9089468c9505807cf1fde22be759b397a6d3
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2018-06-06 16:41:51 +00:00