summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
Commit message (Collapse)AuthorAgeFilesLines
...
* Add a convenient way to get a type-erased smart pointer from a QVariant.Stephen Kelly2013-09-112-0/+61
| | | | | | | | | | | | Any known smart pointer in a QVariant can be handled in this way. The metatype system can be informed of new smart pointer types using an existing macro which is now documented. This is very similar to the existing infrastructure for containers. Change-Id: Iac4f9fabbc5a0626c04e1185d51d720b8b54603d Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Sergio Ahumada2013-09-101-2/+7
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/stable' into devSergio Ahumada2013-09-071-2/+7
| |\ | | | | | | | | | Change-Id: I9ee4176f0a0078908d49896508826154c9f71530
| | * QMetaMethod::invoke: compare the QMetaType id of the return typesOlivier Goffart2013-08-291-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since Qt5, the QMetaObject do not contains the string name of the builtin types, but only the QMetaType id. QMetaMethod::typeName convert back from the id to the string. But if the type is aliased, the string of the main type is returned. This was the case for example for qint64 which is transformed to "qlonglong". This causes a regression in QMetaType::invoke when trying to invoke a method which return an aliased type, since the string comparison would fail. Fix the problem by also comparing the metatype id. Changelog: QMetaMethod::invoke: Fix return of aliased meta type Task-number: QTBUG-33222 Change-Id: Iec7b99dcbf7b23eb818de74f413e4451ce510ac4 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | | Fix escape handling in qWinCmdArgsDavid Faure2013-09-101-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -DKEY="VALUE" was correctly turned into -DKEY=VALUE, but -DKEY=\"VALUE\" was turned into -DKEY=\VALUE" due to the erroneous check ('quote' is still 0 when encountering the first '\' character). This fixes QCoreApplication::arguments() as used by moc.exe after porting to QCommandLineParser. Further investigation shows that double-quotes and single-quotes are handled differently. The tests now ensure that this parser respects what Windows sends in argv, and in particular that QTBUG-15379 doesn't regress, as well as fixing QTBUG-30628. Task-number: QTBUG-15379, QTBUG-30628 Change-Id: I95062c9a6022632b321b2f6fae3089f07be7b5c6 Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Metatype: Remove the need for runtime-registration of 3rd party containers.Stephen Kelly2013-09-092-100/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | Replace that need with a macro so that registration of the container helper conversions is done at the time of registration of the container (usually when it is put into a QVariant). Change-Id: I823fb3fdbce306ebc9f146675ac43724cec678d5 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | | Windows logging: Fix check for console applications.Friedemann Kleint2013-09-091-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old code used to check for usingWinMain, which is not set when Qt is used within a DLL. Try to check for presence of stderr by checking for a console window or a redirected stderr-handle. Task-number: QTBUG-32044 Change-Id: I87893c3438f5e92d73488e9c25b95cbfeaacc1f6 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* | | QMetaMethod and QDBusMetaObject: Give public access to signal methodsCaroline Chao2013-09-091-3/+2
| | | | | | | | | | | | | | | | | | | | | To be consistent with signals which are public since Qt5. Change-Id: I633077e37d0851b118c22da0681e8b8b1892ddbb Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | | Android: Fix unused variable/argument warningsEskil Abrahamsen Blomfeldt2013-09-092-0/+7
| | | | | | | | | | | | | | | | | | | | | There were a bunch of these in Android specific code. Change-Id: Icf6cda40302171810c1b559f9d442fba6444a3a5 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* | | Change template parameter name of qt_check_for_QOBJECT_macroOlivier Goffart2013-09-071-1/+1
|/ / | | | | | | | | | | | | | | | | | | | | | | 'T' is a fairly common name for template parameter. So if we use it in Q_OBJECT, it means you cannot use it as a template parameter name of the object itself (otherwise it does not compile as it shadow a template parameter) Use a more explicit name instead Change-Id: Id317c5b11d87f370eed6d1dc0b0142c9eb4994db Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Move the preprocessor iterator for Qt smart pointers with the others.Stephen Kelly2013-09-061-8/+10
| | | | | | | | | | | | | | Use it to forward declare the types. Change-Id: I48d9e32dcf02471d197a82502d96d60807d11d57 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Make the automatic 1arg and 2arg metatype macros work with namespaced Qt.Stephen Kelly2013-09-061-4/+13
| | | | | | | | | | Change-Id: I64aa3cacd0cf57235ad43f089716765b384ef412 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Fix the automatic declaration of smart pointer types.Stephen Kelly2013-09-061-6/+34
| | | | | | | | | | | | | | | | | | | | | | | | Before this patch, qRegisterMetaType<QSharedPointer<double> >("QSharedPointer<double>") without a metatype declaration fails to compile, whereas it works with Qt 5.1 (ie, before commit e9a69c3ba928bd88974563b386b000ad6583f969) Change-Id: I9408f711c9df810ff29b879b7696dab81c1160f1 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | QVariant: Make it possible to extract a QObject* from a wrapper without ↵Stephen Kelly2013-09-051-1/+3
| | | | | | | | | | | | | | conversion. Change-Id: I3a054d87d12e08d72dd4c77b6d467dc63f9a2231 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | QVariant: Don't crash when doing user-defined conversion to QObject*Stephen Kelly2013-09-051-0/+2
| | | | | | | | | | | | | | | | | | The destructor of the ConverterFunctor calls unregisterConverter. If the instance is static (as it is in qmetatype.h), then this method can be called after the QGlobalStatic has already been destroyed. Change-Id: I33b70734cbe09dfa888e887280c349e43ad1b855 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | QVariant::canConvert: Use the old type when checking for QObject* conversion.Stephen Kelly2013-09-051-1/+1
| | | | | | | | | | Change-Id: I8450c74ecfdeee96e73b82438c5ef83c3acf4444 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Simplify the smart pointer metatype templateStephen Kelly2013-09-051-17/+6
| | | | | | | | | | | | | | | | | | | | Don't use ## concatenation to create an identifier. That won't work for types in namespaces: Q_DECLARE_SMART_POINTER_METATYPE(QtPrivate::FutureSmartPointer) Change-Id: I876ea93d817724005efc28413f09c01623c2a7a1 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Fix Clang 3.3 warning on using an undefined inline functionThiago Macieira2013-09-051-12/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clang doesn't like forward-declared inline functions. qmetatype.h:70:29: error: inline function 'qMetaTypeId<QtMetaTypePrivate::QPairVariantInterfaceImpl>' is not defined [-Werror,-Wundefined-inline] inline Q_DECL_CONSTEXPR int qMetaTypeId(); ^ qmetatype.h:1463:30: note: used here const int toId = qMetaTypeId<QtMetaTypePrivate::QPairVariantInterfaceImpl>(); ^ Change-Id: I1454af5cce56512f0b3d63cfaf51a536207fc511 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Fix ICC warnings about functions declared but not usedThiago Macieira2013-09-042-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added Q_DECL_UNUSED for the function used in Q_ASSERT; removed the functions that really weren't used and added the #ifdef for the function that was only used under #ifdef. qmetaobjectbuilder.cpp(93): warning #177: function "priv" was declared but never referenced qobject.cpp(2349): warning #177: function "check_and_warn_compat" was declared but never referenced qpathsimplifier.cpp(141): error #177: function "<unnamed>::Rational::isValid" was declared but never referenced qtextengine.cpp(2584): error #177: function "<unnamed>::QScriptItemComparator::operator()(const QScriptItem &, const QScriptItem &)" was declared but never referenced Change-Id: I89a140d59211f10ecd88d751f0bcc0ea2fedff7f Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Long live QCommandLineParser!David Faure2013-08-241-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The QCommandLineParser class provides a means for handling the command line options. QCoreApplication provides the command-line arguments as a simple list of strings. QCommandLineParser provides the ability to define a set of options, parse the command-line arguments, and store which options have actually been used, as well as option values. Done-with: Laszlo Papp <lpapp@kde.org> Change-Id: Ic7bebc10b3f8d8dd06ad0f4bb897c51d566e3b7c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-212-18/+23
|\| | | | | | | | | | | | | | | | | Conflicts: qmake/doc/src/qmake-manual.qdoc src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/src.pro Change-Id: I0a560826c420e46988da3776bd8f9160c365459a
| * Use correct mask constant in the Windows event dispatcher.Friedemann Kleint2013-08-201-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | Mask out QS_TOUCH, QS_POINTER when running a VS2012-compiled binary on pre-Windows 8 systems. Task-number: QTBUG-32257 Task-number: QTBUG-28513 Task-number: QTBUG-29097 Task-number: QTBUG-29435 Change-Id: I33ce3a659a234cb04d3b5ae9d668d193d681be7f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
| * Revert "Disable precision timers when running MSVC2012 code on pre-Windows 8."Friedemann Kleint2013-08-201-8/+0
| | | | | | | | | | | | | | | | | | | | This reverts commit aa1b4c0943187d82e0c313b93559e99226a9c75a. It turns out that the bug is caused by a different mask constant in Windows 8 which should not take effect in pre-Windows 8. Change-Id: I1ad502262dae42856c07d48ee3bc9dc032ab379b Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
| * Rename template parameter: "I" -> "II"Sze Howe Koh2013-08-181-9/+9
| | | | | | | | | | | | | | | | | | | | C99 defines the "I" macro in complex.h. qobjectdefs_impl.h can be indirectly included in user code, which raises the possibility of a name clash if the user's compiler supports C99 and the user includes complex.h Change-Id: Ie79ec7baf2d49a34b66a01556c7e57324303dc04 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-08-144-9/+37
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/macx-xcode/Info.plist.app mkspecs/macx-xcode/Info.plist.lib qmake/doc/qmake.qdocconf src/corelib/global/qglobal.h tests/auto/other/exceptionsafety/exceptionsafety.pro tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp Change-Id: I3c769a4a82dc2e99a12c69123fbf17613fd2ac2a
| * Android: Fix QCoreApplication::applicationDirPath()Eskil Abrahamsen Blomfeldt2013-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Disable the code path which queries /proc/<pid>/exe for the current executable path, as from a Q_OS_ANDROID perspective, this executable will be the Dalvik binary. Instead we get the application directory via the fallback, by looking in argv[0], since this is set to the location of the application binary. Task-number: QTBUG-32852 Change-Id: Ib93050f41cbd47aaf71284e8bfa6a3247131d978 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
| * qobject: Do not destroy slot objects inside a lockDario Freddi2013-08-071-8/+26
| | | | | | | | | | | | | | | | | | This prevents deadlocks in case the destructor re-enters. (Example: a functor containing a QSharedPointer of a QObject) This also fixes a leaked slot object in disconnectHelper. Change-Id: Ia939790e3b54e64067b99540974306b4808a77f2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| * Symbol for max number of arguments in QMetaMethod::invoke()Illya Kovalevskyy2013-07-302-0/+10
| | | | | | | | | | | | | | | | | | | | | | QMetaMethod::invoke(..) takes fixed number of arguments for execution. Adding preprocessor macros which literaly equals this number would be useful for writing some generic code. Task-number: QTBUG-31821 Change-Id: Ia2faf291f3f7df44a47c3cf18f5cd587d37d7d2e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-07-151-5/+1
|\| | | | | | | Change-Id: I0218a1f08b89f2d56757ab35eec06799d2a1492f
| * QCoreApplication: Removed out-of-date docs (argv() method).Tomasz Olszak2013-07-121-5/+1
| | | | | | | | | | | | | | | | QCoreApplication::argv() method was obsolete in Qt4.8 and removed in Qt5.0. Change-Id: I217402f774f5509c8ca317a35c831ffa5ac2af06 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge branch 'stable' into devSergio Ahumada2013-07-118-66/+65
|\| | | | | | | | | | | | | | | | | | | Conflicts: qmake/generators/mac/pbuilder_pbx.cpp src/corelib/json/qjsonwriter.cpp src/corelib/kernel/qeventdispatcher_blackberry.cpp src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm Change-Id: I24df576c4cbd18fa51b03122f71e32bb83b9028f
| * Accept defeat when select(2)ing without a monotonic clockThiago Macieira2013-07-101-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We prefer to use the monotonic clock because it's never affected by time jumps (such as the user changing the date, or the system adjusting for any other reasons, including automatic leap seconds). But if a system doesn't have a monotonic clock, we simply accept the regular, real time clock and hope it doesn't jump. This is better than the current code that never restarts a call. The side-effect is that a 30-second select may become a 3630-second select if someone sets the clock back one hour. Task-number: QTBUG-22301 Change-Id: Ia5a3bb453cd475f45b03637e2549165589fd2524 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
| * Fix dead lock in the Qt event handlingOlivier Goffart2013-07-101-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The deadlock is caused because the QEvent is destroyed while holding the event list mutex. And the QEvent may have a custom destructor that will re-enter the event handlng code. The QScopedPointer that should destroy the event must be created after the MutexUnlocker. Regression introduced by commit f9035587b98ac5dc9491e642b8ec84470ec03f0e Task-number: QTBUG-31606 Change-Id: I6b2cbc2656eacdec61b641886953f00bf5b3ff36 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Doc: Uniformize the syntax description of Q_PROPERTYOlivier Goffart2013-07-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | In the qobject.html page, the description of the syntax of Q_PROPERTY does not include the MEMBER keyword added in Qt 5.1. But it was well documented in the documentation of the property system. Merge the two code snipppets. Task-number: QTBUG-32211 Change-Id: I7b57329c201b6f3bc812155f21dbfb2c6423494e Reviewed-by: Martin Smith <martin.smith@digia.com>
| * Clean up evaluation license logicTor Arne Vestbø2013-07-053-47/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of storing the application type as a uint, we use the enum provided by QCoreApplicationPrivate. The former resulted in a few cases of wrong logic where the values got mixed up, such as always printing the QtCore console warning, even for GUI applications. The qt_eval_is_supported function has been refactored to return enums instead of magic values, to make the logic easier to read. The same goes for qt_eval_days_left, which now only concerns itself with the number of days left. qt_eval_is_expired() has been added to use for easy checking of expiration date. Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Change-Id: Ia0e85b2103f790a7e02e0d6e567a477b3145fcb9 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * QtCore: Fix remaining MSVC-64 warnings about integer truncation.Friedemann Kleint2013-07-021-5/+5
| | | | | | | | | | | | | | | | | | warning C4267: 'argument' : conversion from 'size_t' to ' int', possible loss of data. Change-Id: I8d1ca27d4d66a9ce0deb70766446e780308bba33 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| * BlackBerry: Increased loop level around bps_get_eventBernd Weimer2013-06-291-4/+10
| | | | | | | | | | | | | | | | | | | | | | | | This is needed, because bps_get_event can also invoke callbacks. Deferred deletions in such a callback are not executed for instance, because the loop level might already be at its minimum. Change-Id: I8a1b3a3f92de139575654de011352f8abc6c3c1a Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Fabian Bumberger <fbumberger@rim.com> Reviewed-by: Jeff Kehres <jkehres@rim.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
| * Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-06-281-1/+1
| |\ | | | | | | | | | Change-Id: I53112e20a65b7d706755b4a22622979f3b91a2c2
| | * Fix compilation with ICC 13.1: the MSVC 2005 & 2008 code is badThiago Macieira2013-06-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | qvariant_p.h(226): error: name followed by "::" must be a class or namespace name template<class C> static Yes test(char (*)[(&C::isNull == 0) + 1]); ^ Change-Id: I42eef44d46ca0fb7aac8f82150e917c4fb912b15 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-271-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/features/create_cmake.prf Change-Id: I94aea83b83833395d5db399209e0e51b92ef23b5
| * | Further followup to Q_OS_MACX changes.Jake Petroules2013-06-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Flip !Q_OS_IOS conditions to Q_OS_MACX where it seems appropriate, remove a redundant condition in qtextcodec_p.h. Change-Id: I21c8c0c490f1eb4a9337a7f2f3e907c125489438 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* | | Make the qfatal for redeclaring a type with the same name a warning.Richard J. Moore2013-06-251-5/+5
| | | | | | | | | | | | | | | | | | Change-Id: I5a25b2043a6b5a598a004d30c9a8056564c136e3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-208-26/+72
|\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm src/plugins/platforms/qnx/qqnxrasterbackingstore.cpp tools/configure/configureapp.cpp Change-Id: I3092bd3276af14304b7ab3ae1e1cc05d11cdede0
| * | Doc: QTranslator::translate() isn't an overload anymoreDavid Faure2013-06-191-2/+0
| | | | | | | | | | | | | | | | | | Change-Id: Ib50044da48be3fb4f43300aa285e15403bd8d65e Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
| * | Remove use of 'register' from Qt.Stephen Kelly2013-06-176-24/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is deprecated and clang is starting to warn about it. Patch mostly generated by clang itself, with some careful grep and sed for the platform-specific parts. Change-Id: I8058e6db0f1b41b33a9e8f17a712739159982450 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | Add basic conversion functions from QVariant(QJsonValue).Jędrzej Nowacki2013-06-141-0/+48
| | | | | | | | | | | | | | | | | | | | | | | | There is a mismatch how QML and C++ converts QJsonValue. This patch unifies conversions by adding QJsonValue support in QVariant::convert(). Change-Id: I8a1db3d77c517945ef48064b4b66ba03aa4f2fd0 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* | | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-122-2/+3
|\| | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoamenubar.mm Change-Id: I4a699fc8a7f30b2af9de8e496c3d5f027b7495bb
| * | Mark the Q_DECLARE_OPAQUE_POINTER macro as introduced in 5.0Laszlo Papp2013-06-121-0/+1
| | | | | | | | | | | | | | | Change-Id: Ida52c9f1f72b628d9a7faaf7998798e781b53df2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | QtCore: Fix MSVC-64 warnings about integer truncation.Friedemann Kleint2013-06-081-2/+2
| |/ | | | | | | | | | | | | | | warning C4267: 'argument' : conversion from 'size_t' to ' int', possible loss of data. Change-Id: I79af7497420d468b5bc7c48c9ae21b86117519a9 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
* | Add internal functions to QObjectPrivate for signal & slot connections in QMLSimon Hausmann2013-06-073-2/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In QML it is common to connect signals to slots that are implemented as JavaScript functions. QML used to maintain separate data structures that mirrored the QObject connection list and kept references to the JavaScript objects necessary to perform the call on signal activation. The recent addition of functor based QObject::connect makes it possible to store this information in QSlotObjectBase sub-class instead, which eliminates any extra bookkeeping. This patch adds internal connect and disconnect overloads to QObjectPrivate that allow for connecting QObject *sender, int signalIndex to a given QSlotObjectBase and similar for disconnect. Change-Id: I90f43d13eb95bd884d752484cf4faacc446f4d6a Reviewed-by: Olivier Goffart <ogoffart@woboq.com>