diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2012-05-15 15:40:58 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-18 21:42:58 +0200 |
commit | 8df298665a1e637ab6d26d5fcc447d5502afe31a (patch) | |
tree | 9d36f54835b70b04bd6ae0bc72aee2a8ea659143 | |
parent | 6c06e14a49773ce5572935864ed6b9be219c6103 (diff) |
Move QIcon metatype handlers back to QtGui
QIcon has been moved back from QWidget to QtGui, so the QIcon QVariant
and QMetaType handler can now be moved back to QtGui.
Also we can give back QIcon its old number, allowing to get rid of some
compatibility hack when unstreaming QVariant
Change-Id: I439d5c2987c06ecd619f394407850f678164afb8
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
31 files changed, 51 insertions, 72 deletions
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 48cabeb636..e1cebc453d 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -845,11 +845,11 @@ bool QMetaType::save(QDataStream &stream, int type, const void *data) case QMetaType::QVector3D: case QMetaType::QVector4D: case QMetaType::QQuaternion: + case QMetaType::QIcon: if (!qMetaTypeGuiHelper) return false; qMetaTypeGuiHelper[type - FirstGuiType].saveOp(stream, data); break; - case QMetaType::QIcon: case QMetaType::QSizePolicy: if (!qMetaTypeWidgetsHelper) return false; @@ -1069,11 +1069,11 @@ bool QMetaType::load(QDataStream &stream, int type, void *data) case QMetaType::QVector3D: case QMetaType::QVector4D: case QMetaType::QQuaternion: + case QMetaType::QIcon: if (!qMetaTypeGuiHelper) return false; qMetaTypeGuiHelper[type - FirstGuiType].loadOp(stream, data); break; - case QMetaType::QIcon: case QMetaType::QSizePolicy: if (!qMetaTypeWidgetsHelper) return false; diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 33e7fa43f1..74702540f2 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -127,26 +127,27 @@ QT_BEGIN_NAMESPACE F(QBrush, 66, QBrush) \ F(QColor, 67, QColor) \ F(QPalette, 68, QPalette) \ - F(QImage, 69, QImage) \ - F(QPolygon, 70, QPolygon) \ - F(QRegion, 71, QRegion) \ - F(QBitmap, 72, QBitmap) \ - F(QCursor, 73, QCursor) \ - F(QKeySequence, 74, QKeySequence) \ - F(QPen, 75, QPen) \ - F(QTextLength, 76, QTextLength) \ - F(QTextFormat, 77, QTextFormat) \ - F(QMatrix, 78, QMatrix) \ - F(QTransform, 79, QTransform) \ - F(QMatrix4x4, 80, QMatrix4x4) \ - F(QVector2D, 81, QVector2D) \ - F(QVector3D, 82, QVector3D) \ - F(QVector4D, 83, QVector4D) \ - F(QQuaternion, 84, QQuaternion) \ - F(QPolygonF, 85, QPolygonF) \ + F(QIcon, 69, QIcon) \ + F(QImage, 70, QImage) \ + F(QPolygon, 71, QPolygon) \ + F(QRegion, 72, QRegion) \ + F(QBitmap, 73, QBitmap) \ + F(QCursor, 74, QCursor) \ + F(QKeySequence, 75, QKeySequence) \ + F(QPen, 76, QPen) \ + F(QTextLength, 77, QTextLength) \ + F(QTextFormat, 78, QTextFormat) \ + F(QMatrix, 79, QMatrix) \ + F(QTransform, 80, QTransform) \ + F(QMatrix4x4, 81, QMatrix4x4) \ + F(QVector2D, 82, QVector2D) \ + F(QVector3D, 83, QVector3D) \ + F(QVector4D, 84, QVector4D) \ + F(QQuaternion, 85, QQuaternion) \ + F(QPolygonF, 86, QPolygonF) \ + #define QT_FOR_EACH_STATIC_WIDGETS_CLASS(F)\ - F(QIcon, 120, QIcon) \ F(QSizePolicy, 121, QSizePolicy) \ // ### FIXME kill that set @@ -208,7 +209,7 @@ public: LastCoreType = SChar, FirstGuiType = QFont, LastGuiType = QPolygonF, - FirstWidgetsType = QIcon, + FirstWidgetsType = QSizePolicy, LastWidgetsType = QSizePolicy, HighestInternalId = LastWidgetsType, @@ -232,11 +233,11 @@ public: QObjectStar = 39, QWidgetStar = 40, QVariantMap = 8, QVariantList = 9, QVariantHash = 28, QFont = 64, QPixmap = 65, QBrush = 66, QColor = 67, QPalette = 68, - QImage = 69, QPolygon = 70, QRegion = 71, QBitmap = 72, QCursor = 73, - QKeySequence = 74, QPen = 75, QTextLength = 76, QTextFormat = 77, - QMatrix = 78, QTransform = 79, QMatrix4x4 = 80, QVector2D = 81, - QVector3D = 82, QVector4D = 83, QQuaternion = 84, QPolygonF = 85, - QIcon = 120, QSizePolicy = 121, + QIcon = 69, QImage = 70, QPolygon = 71, QRegion = 72, QBitmap = 73, + QCursor = 74, QKeySequence = 75, QPen = 76, QTextLength = 77, QTextFormat = 78, + QMatrix = 79, QTransform = 80, QMatrix4x4 = 81, QVector2D = 82, + QVector3D = 83, QVector4D = 84, QQuaternion = 85, QPolygonF = 86, + QSizePolicy = 121, User = 256 }; #endif diff --git a/src/corelib/kernel/qmetatype_p.h b/src/corelib/kernel/qmetatype_p.h index b593489963..cffc45c988 100644 --- a/src/corelib/kernel/qmetatype_p.h +++ b/src/corelib/kernel/qmetatype_p.h @@ -236,6 +236,9 @@ template<> struct TypeDefinition<QVector4D> { static const bool IsAvailable = fa #ifdef QT_NO_QUATERNION template<> struct TypeDefinition<QQuaternion> { static const bool IsAvailable = false; }; #endif +#ifdef QT_NO_ICON +template<> struct TypeDefinition<QIcon> { static const bool IsAvailable = false; }; +#endif } //namespace QtMetaTypePrivate QT_END_NAMESPACE diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index cb50603354..3d3183a5c9 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -1669,18 +1669,12 @@ void QVariant::load(QDataStream &s) // In Qt4 id == 128 was FirstExtCoreType. In Qt5 ExtCoreTypes set was merged to CoreTypes // by moving all ids down by 97. typeId -= 97; - } else if (typeId == 69 /* QIcon */) { - // In Qt5 after modularization project these types where moved to a separate module (and ids were downgraded) - typeId = QMetaType::QIcon; } else if (typeId == 75 /* QSizePolicy */) { typeId = QMetaType::QSizePolicy; - } else if (typeId >= 70) { + } else if (typeId > 75 && typeId <= 86) { // and as a result these types received lower ids too - if (typeId <= 74) { // QImage QPolygon QRegion QBitmap QCursor - typeId -=1; - } else if (typeId <= 86) { // QKeySequence QPen QTextLength QTextFormat QMatrix QTransform QMatrix4x4 QVector2D QVector3D QVector4D QQuaternion - typeId -=2; - } + // QKeySequence QPen QTextLength QTextFormat QMatrix QTransform QMatrix4x4 QVector2D QVector3D QVector4D QQuaternion + typeId -=1; } } @@ -1744,18 +1738,11 @@ void QVariant::save(QDataStream &s) const // In Qt4 id == 128 was FirstExtCoreType. In Qt5 ExtCoreTypes set was merged to CoreTypes // by moving all ids down by 97. typeId += 97; - } else if (typeId == QMetaType::QIcon) { - // In Qt5 after modularization project these types where moved to a separate module (and ids were downgraded) - typeId = 69; } else if (typeId == QMetaType::QSizePolicy) { typeId = 75; - } else if (typeId >= QMetaType::QImage) { + } else if (typeId >= QMetaType::QKeySequence && typeId <= QMetaType::QQuaternion) { // and as a result these types received lower ids too - if (typeId <= QMetaType::QCursor) { - typeId +=1; - } else if (typeId <= QMetaType::QQuaternion) { - typeId +=2; - } + typeId +=1; } } s << typeId; diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 8ba27d2354..15fbfc991f 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -184,9 +184,9 @@ class Q_CORE_EXPORT QVariant Vector4D = QMetaType::QVector4D, Quaternion = QMetaType::QQuaternion, PolygonF = QMetaType::QPolygonF, + Icon = QMetaType::QIcon, LastGuiType = QMetaType::LastGuiType, - Icon = QMetaType::QIcon, SizePolicy = QMetaType::QSizePolicy, UserType = QMetaType::User, diff --git a/src/gui/kernel/qguivariant.cpp b/src/gui/kernel/qguivariant.cpp index 9d1294d588..8a5c083840 100644 --- a/src/gui/kernel/qguivariant.cpp +++ b/src/gui/kernel/qguivariant.cpp @@ -64,6 +64,7 @@ #include "qvector3d.h" #include "qvector4d.h" #include "qquaternion.h" +#include "qicon.h" // Core types #include "qvariant.h" @@ -137,7 +138,7 @@ static bool isNull(const QVariant::Private *d) return QMetaTypeSwitcher::switcher<bool>(isNull, d->type, 0); } -// This class is a hack that customizes access to QPixmap, QBitmap and QCursor +// This class is a hack that customizes access to QPixmap, QBitmap, QCursor and QIcon template<class Filter> class QGuiVariantComparator : public QVariantComparator<Filter> { typedef QVariantComparator<Filter> Base; @@ -164,6 +165,12 @@ public: return v_cast<QCursor>(Base::m_a)->shape() == v_cast<QCursor>(Base::m_b)->shape(); } #endif +#ifndef QT_NO_ICON + bool delegate(const QIcon *) + { + return false; + } +#endif bool delegate(const void *p) { return Base::delegate(p); } }; @@ -289,6 +296,13 @@ static bool convert(const QVariant::Private *d, int t, } } #endif +#ifndef QT_NO_ICON + case QVariant::Icon: { + if (ok) + *ok = false; + return false; + } +#endif default: break; } diff --git a/src/widgets/kernel/qwidgetsvariant.cpp b/src/widgets/kernel/qwidgetsvariant.cpp index 15935a5886..e19d955b2b 100644 --- a/src/widgets/kernel/qwidgetsvariant.cpp +++ b/src/widgets/kernel/qwidgetsvariant.cpp @@ -41,7 +41,6 @@ #include "qvariant.h" -#include "qicon.h" #include "qsizepolicy.h" #include "private/qvariant_p.h" @@ -53,11 +52,6 @@ namespace { static void construct(QVariant::Private *x, const void *copy) { switch (x->type) { -#ifndef QT_NO_ICON - case QVariant::Icon: - v_construct<QIcon>(x, copy); - break; -#endif case QVariant::SizePolicy: v_construct<QSizePolicy>(x, copy); break; @@ -72,11 +66,6 @@ static void construct(QVariant::Private *x, const void *copy) static void clear(QVariant::Private *d) { switch (d->type) { -#ifndef QT_NO_ICON - case QVariant::Icon: - v_clear<QIcon>(d); - break; -#endif case QVariant::SizePolicy: v_clear<QSizePolicy>(d); break; @@ -93,12 +82,6 @@ static void clear(QVariant::Private *d) static bool isNull(const QVariant::Private *d) { - switch(d->type) { -#ifndef QT_NO_ICON - case QVariant::Icon: - return v_cast<QIcon>(d)->isNull(); -#endif - } return false; } @@ -106,10 +89,6 @@ static bool compare(const QVariant::Private *a, const QVariant::Private *b) { Q_ASSERT(a->type == b->type); switch(a->type) { -#ifndef QT_NO_ICON - case QVariant::Icon: - return false; -#endif case QVariant::SizePolicy: return *v_cast<QSizePolicy>(a) == *v_cast<QSizePolicy>(b); default: @@ -133,11 +112,6 @@ static void streamDebug(QDebug dbg, const QVariant &v) { QVariant::Private *d = const_cast<QVariant::Private *>(&v.data_ptr()); switch (d->type) { -#ifndef QT_NO_ICON - case QVariant::Icon: - dbg.nospace() << *v_cast<QIcon>(d); - break; -#endif case QVariant::SizePolicy: dbg.nospace() << *v_cast<QSizePolicy>(d); break; diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.bin Binary files differindex 511e260744..13f4dc374d 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.bin Binary files differindex a7be10e143..545fa96a1f 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.bin Binary files differindex d3281b1336..cc8f894b25 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.bin Binary files differindex 664eb736a7..ee3da63a18 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.bin Binary files differindex 5cf664eb27..b3fce0db6d 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.bin Binary files differindex e8aa03af9b..ce31032451 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.bin Binary files differindex bf3ca9ed4b..2f8713244c 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.bin Binary files differindex 03665c1edc..0ab1cbf6fa 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.bin Binary files differindex 7f7447a821..ec82cc2871 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.bin Binary files differindex 93434b42c9..24bf570968 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.bin Binary files differindex 8d3f9b81e8..e4fc8054f9 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.bin Binary files differindex 503c1a4664..b3caa096cb 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.bin Binary files differindex edafc2d185..964eaa4ee2 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.bin Binary files differindex 8d3275df41..fbdab8fffc 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.bin Binary files differindex 3e85997f2d..c4b5f652b3 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.bin Binary files differindex c498f8fd08..558767a6b4 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.bin Binary files differindex ecf01a8b31..27eec8c4d5 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.bin Binary files differindex 432068d921..0d91130d62 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.bin Binary files differindex 3b209f1be2..640abfba00 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.bin Binary files differindex 52cddb5e93..86a7aaf1ed 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.bin Binary files differindex 1c8bc45769..18267d24f5 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.bin Binary files differindex 2bc3aeb18d..9fe7d9f936 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.bin Binary files differindex b035f7f074..b3c502f546 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.bin diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.bin Binary files differindex a804c5e655..2db479c9ce 100644 --- a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.bin +++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.bin |