From b859422e23a31af1cda5011883d8a25c934cea65 Mon Sep 17 00:00:00 2001 From: Aaron Kennedy Date: Thu, 30 Jul 2009 15:52:29 +1000 Subject: Make QAbstractItemModel default rolenames reentrant Reviewed-by: Martin Jones Reviewed-by: mbm --- src/corelib/kernel/qabstractitemmodel.cpp | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/corelib/kernel/qabstractitemmodel.cpp b/src/corelib/kernel/qabstractitemmodel.cpp index cd17076..01440e4 100644 --- a/src/corelib/kernel/qabstractitemmodel.cpp +++ b/src/corelib/kernel/qabstractitemmodel.cpp @@ -467,19 +467,25 @@ QAbstractItemModel *QAbstractItemModelPrivate::staticEmptyModel() return qEmptyModel(); } +namespace { + struct DefaultRoleNames : public QHash + { + DefaultRoleNames() { + (*this)[Qt::DisplayRole] = "display"; + (*this)[Qt::DecorationRole] = "decoration"; + (*this)[Qt::EditRole] = "edit"; + (*this)[Qt::ToolTipRole] = "toolTip"; + (*this)[Qt::StatusTipRole] = "statusTip"; + (*this)[Qt::WhatsThisRole] = "whatsThis"; + } + }; +} + +Q_GLOBAL_STATIC(DefaultRoleNames, q_defaultRoleNames); + const QHash &QAbstractItemModelPrivate::defaultRoleNames() { - static QHash roleNames; - if (roleNames.isEmpty()) { - roleNames[Qt::DisplayRole] = "display"; - roleNames[Qt::DecorationRole] = "decoration"; - roleNames[Qt::EditRole] = "edit"; - roleNames[Qt::ToolTipRole] = "toolTip"; - roleNames[Qt::StatusTipRole] = "statusTip"; - roleNames[Qt::WhatsThisRole] = "whatsThis"; - } - - return roleNames; + return *q_defaultRoleNames(); } /*! -- cgit v0.12