From 54d81d118997fc4c238b7266571d220d7a6065f1 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Wed, 18 May 2022 00:16:10 +0200 Subject: QAbstractItemModel: Fix Qt::TextAlignmentRole when metatype is uint When combining text alignment flags, it no longer works since the metatype for example QVariant(Qt::AlignRight | Qt::AlignVCenter) is uint, not int. Fixes: QTBUG-103576 Pick-to: 6.2 6.3 Change-Id: If0291b99606787081c4bc26fd00431f8a17a61a2 Reviewed-by: Volker Hilsheimer --- src/corelib/itemmodels/qabstractitemmodel_p.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/corelib/itemmodels/qabstractitemmodel_p.h') diff --git a/src/corelib/itemmodels/qabstractitemmodel_p.h b/src/corelib/itemmodels/qabstractitemmodel_p.h index e449e04cb8..e34dc3262c 100644 --- a/src/corelib/itemmodels/qabstractitemmodel_p.h +++ b/src/corelib/itemmodels/qabstractitemmodel_p.h @@ -145,10 +145,12 @@ template T legacyEnumValueFromModelData(const QVariant &data) { static_assert(std::is_enum_v); - if (data.userType() == qMetaTypeId()) + if (data.userType() == qMetaTypeId()) { return data.value(); - else if (data.userType() == qMetaTypeId()) + } else if (std::is_same_v, int> || + std::is_same_v, uint>) { return T(data.toInt()); + } return T(); } @@ -156,10 +158,12 @@ T legacyEnumValueFromModelData(const QVariant &data) template T legacyFlagValueFromModelData(const QVariant &data) { - if (data.userType() == qMetaTypeId()) + if (data.userType() == qMetaTypeId()) { return data.value(); - else if (data.userType() == qMetaTypeId()) + } else if (std::is_same_v, int> || + std::is_same_v, uint>) { return T::fromInt(data.toInt()); + } return T(); } -- cgit v1.2.3