diff options
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r-- | src/corelib/kernel/qeventdispatcher_blackberry.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qmetatype.h | 17 | ||||
-rw-r--r-- | src/corelib/kernel/qobject.cpp | 16 | ||||
-rw-r--r-- | src/corelib/kernel/qtimer.cpp | 6 | ||||
-rw-r--r-- | src/corelib/kernel/qtranslator.cpp | 6 | ||||
-rw-r--r-- | src/corelib/kernel/qvariant.cpp | 4 | ||||
-rw-r--r-- | src/corelib/kernel/qwineventnotifier.h | 9 |
7 files changed, 39 insertions, 21 deletions
diff --git a/src/corelib/kernel/qeventdispatcher_blackberry.cpp b/src/corelib/kernel/qeventdispatcher_blackberry.cpp index 2252b73ad4..69b4a8b172 100644 --- a/src/corelib/kernel/qeventdispatcher_blackberry.cpp +++ b/src/corelib/kernel/qeventdispatcher_blackberry.cpp @@ -132,7 +132,7 @@ static int bpsIOHandler(int fd, int io_events, void *data) } // post unblock event to our thread; in this callback the bps channel is - // guarenteed to be the same that was active when bps_add_fd was called + // guaranteed to be the same that was active when bps_add_fd was called result = bps_push_event(event); if (result != BPS_SUCCESS) { qWarning("QEventDispatcherBlackberryPrivate::QEventDispatcherBlackberry: bps_push_event() failed"); diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 06d325f383..09c641e4a3 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -252,7 +252,8 @@ public: IsEnumeration = 0x10, SharedPointerToQObject = 0x20, WeakPointerToQObject = 0x40, - TrackingPointerToQObject = 0x80 + TrackingPointerToQObject = 0x80, + WasDeclaredAsMetaType = 0x100 }; Q_DECLARE_FLAGS(TypeFlags, TypeFlag) @@ -563,12 +564,19 @@ namespace QtPrivate { | (Q_IS_ENUM(T) ? QMetaType::IsEnumeration : 0) }; }; + + template<typename T, bool defined> + struct MetaTypeDefinedHelper + { + enum DefinedType { Defined = defined }; + }; } template <typename T> int qRegisterNormalizedMetaType(const QT_PREPEND_NAMESPACE(QByteArray) &normalizedTypeName #ifndef qdoc , T * dummy = 0 + , typename QtPrivate::MetaTypeDefinedHelper<T, QMetaTypeId2<T>::Defined && !QMetaTypeId2<T>::IsBuiltIn>::DefinedType defined = QtPrivate::MetaTypeDefinedHelper<T, QMetaTypeId2<T>::Defined && !QMetaTypeId2<T>::IsBuiltIn>::Defined #endif ) { @@ -580,6 +588,10 @@ int qRegisterNormalizedMetaType(const QT_PREPEND_NAMESPACE(QByteArray) &normaliz return QMetaType::registerNormalizedTypedef(normalizedTypeName, typedefOf); QMetaType::TypeFlags flags(QtPrivate::QMetaTypeTypeFlags<T>::Flags); + + if (defined) + flags |= QMetaType::WasDeclaredAsMetaType; + return QMetaType::registerNormalizedType(normalizedTypeName, QtMetaTypePrivate::QMetaTypeFunctionHelper<T>::Delete, QtMetaTypePrivate::QMetaTypeFunctionHelper<T>::Create, @@ -594,6 +606,7 @@ template <typename T> int qRegisterMetaType(const char *typeName #ifndef qdoc , T * dummy = 0 + , typename QtPrivate::MetaTypeDefinedHelper<T, QMetaTypeId2<T>::Defined && !QMetaTypeId2<T>::IsBuiltIn>::DefinedType defined = QtPrivate::MetaTypeDefinedHelper<T, QMetaTypeId2<T>::Defined && !QMetaTypeId2<T>::IsBuiltIn>::Defined #endif ) { @@ -602,7 +615,7 @@ int qRegisterMetaType(const char *typeName #else QT_PREPEND_NAMESPACE(QByteArray) normalizedTypeName = QMetaObject::normalizedType(typeName); #endif - return qRegisterNormalizedMetaType<T>(normalizedTypeName, dummy); + return qRegisterNormalizedMetaType<T>(normalizedTypeName, dummy, defined); } #ifndef QT_NO_DATASTREAM diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index 9d0854f3a9..9091b5579e 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -1945,7 +1945,7 @@ void QObject::deleteLater() is available. Example: - \snippet mainwindows/sdi/mainwindow.cpp implicit tr context + \snippet ../widgets/mainwindows/sdi/mainwindow.cpp implicit tr context \dots If the same \a sourceText is used in different roles within the @@ -3864,9 +3864,9 @@ QDebug operator<<(QDebug dbg, const QObject *o) { Example: - \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.h 1 + \snippet ../widgets/tools/plugandpaintplugins/basictools/basictoolsplugin.h 1 \dots - \snippet tools/plugandpaintplugins/basictools/basictoolsplugin.h 3 + \snippet ../widgets/tools/plugandpaintplugins/basictools/basictoolsplugin.h 3 See the \l{tools/plugandpaintplugins/basictools}{Plug & Paint Basic Tools} example for details. @@ -4293,6 +4293,16 @@ bool QObject::disconnect(const QMetaObject::Connection &connection) if (c->next) c->next->prev = c->prev; c->receiver = 0; + + // destroy the QSlotObject, if possible + if (c->isSlotObject) { + c->slotObj->destroyIfLastRef(); + c->isSlotObject = false; + } + + const_cast<QMetaObject::Connection &>(connection).d_ptr = 0; + c->deref(); // has been removed from the QMetaObject::Connection object + // disconnectNotify() not called (the signal index is unknown). return true; diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp index 9dea666363..9126d7ea17 100644 --- a/src/corelib/kernel/qtimer.cpp +++ b/src/corelib/kernel/qtimer.cpp @@ -62,9 +62,9 @@ QT_BEGIN_NAMESPACE Example for a one second (1000 millisecond) timer (from the \l{widgets/analogclock}{Analog Clock} example): - \snippet widgets/analogclock/analogclock.cpp 4 - \snippet widgets/analogclock/analogclock.cpp 5 - \snippet widgets/analogclock/analogclock.cpp 6 + \snippet ../widgets/widgets/analogclock/analogclock.cpp 4 + \snippet ../widgets/widgets/analogclock/analogclock.cpp 5 + \snippet ../widgets/widgets/analogclock/analogclock.cpp 6 From then on, the \c update() slot is called every second. diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp index f934202cf6..58e4f202d5 100644 --- a/src/corelib/kernel/qtranslator.cpp +++ b/src/corelib/kernel/qtranslator.cpp @@ -343,10 +343,10 @@ public: The most common use of QTranslator is to: load a translation file, install it using QCoreApplication::installTranslator(), and use - it via QObject::tr(). Here's the \c main() function from the - \l{linguist/hellotr}{Hello tr()} example: + it via QObject::tr(). Here's an example \c main() function using the + QTranslator: - \snippet linguist/hellotr/main.cpp 2 + \snippet hellotrmain.cpp 0 Note that the translator must be created \e before the application's widgets. diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 9ff9d10bf0..26deeba6a2 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -341,11 +341,9 @@ static bool convert(const QVariant::Private *d, int t, void *result, bool *ok) *str = v_cast<QUrl>(d)->toString(); break; #endif -#ifndef QT_NO_QUUID_STRING case QVariant::Uuid: *str = v_cast<QUuid>(d)->toString(); break; -#endif default: return false; } @@ -722,11 +720,9 @@ static bool convert(const QVariant::Private *d, int t, void *result, bool *ok) #endif case QVariant::Uuid: switch (d->type) { -#ifndef QT_NO_QUUID_STRING case QVariant::String: *static_cast<QUuid *>(result) = QUuid(*v_cast<QString>(d)); break; -#endif default: return false; } diff --git a/src/corelib/kernel/qwineventnotifier.h b/src/corelib/kernel/qwineventnotifier.h index d5e4d0f7e3..291d953e58 100644 --- a/src/corelib/kernel/qwineventnotifier.h +++ b/src/corelib/kernel/qwineventnotifier.h @@ -42,12 +42,9 @@ #ifndef QWINEVENTNOTIFIER_H #define QWINEVENTNOTIFIER_H -#if 0 -// inform syncqt -#pragma qt_no_master_include -#endif - #include "QtCore/qobject.h" + +#ifdef Q_OS_WIN #include "QtCore/qt_windows.h" QT_BEGIN_HEADER @@ -88,4 +85,6 @@ QT_END_NAMESPACE QT_END_HEADER +#endif // Q_OS_WIN + #endif // QWINEVENTNOTIFIER_H |