forked from qt-creator/qt-creator
Make handling of model ids compatible with Qt 5.
QAbstractItemModel::internalId() returns a quintptr in Qt 5. Handle this in a way compatible with both Qt 4 and Qt 5. Change-Id: Iacb9ab71e95085f061fac1e3f4e4759ed43ca7ef Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
@@ -294,6 +294,12 @@ static int bitWidthFromType(int type, int subType)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const int TopLevelId = -1;
|
||||||
|
static bool isTopLevelItem(const QModelIndex &index)
|
||||||
|
{
|
||||||
|
return quintptr(index.internalId()) == quintptr(TopLevelId);
|
||||||
|
}
|
||||||
|
|
||||||
Register::Register(const QByteArray &name_)
|
Register::Register(const QByteArray &name_)
|
||||||
: name(name_), changed(true)
|
: name(name_), changed(true)
|
||||||
{
|
{
|
||||||
@@ -322,7 +328,7 @@ int RegisterHandler::rowCount(const QModelIndex &idx) const
|
|||||||
return 0;
|
return 0;
|
||||||
if (!idx.isValid())
|
if (!idx.isValid())
|
||||||
return m_registers.size(); // Top level.
|
return m_registers.size(); // Top level.
|
||||||
if (idx.internalId() >= 0)
|
if (!isTopLevelItem(idx))
|
||||||
return 0; // Sub-Items don't have children.
|
return 0; // Sub-Items don't have children.
|
||||||
if (idx.row() >= m_registers.size())
|
if (idx.row() >= m_registers.size())
|
||||||
return 0;
|
return 0;
|
||||||
@@ -335,7 +341,7 @@ int RegisterHandler::columnCount(const QModelIndex &idx) const
|
|||||||
return 0;
|
return 0;
|
||||||
if (!idx.isValid())
|
if (!idx.isValid())
|
||||||
return 2;
|
return 2;
|
||||||
if (idx.internalId() >= 0)
|
if (!isTopLevelItem(idx))
|
||||||
return 0; // Sub-Items don't have children.
|
return 0; // Sub-Items don't have children.
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
@@ -345,8 +351,8 @@ QModelIndex RegisterHandler::index(int row, int col, const QModelIndex &parent)
|
|||||||
if (row < 0 || col < 0 || col >= 2)
|
if (row < 0 || col < 0 || col >= 2)
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
if (!parent.isValid()) // Top level.
|
if (!parent.isValid()) // Top level.
|
||||||
return createIndex(row, col, -1);
|
return createIndex(row, col, TopLevelId);
|
||||||
if (parent.internalId() >= 0) // Sub-Item has no children.
|
if (!isTopLevelItem(parent)) // Sub-Item has no children.
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
if (parent.column() > 0)
|
if (parent.column() > 0)
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
@@ -357,8 +363,8 @@ QModelIndex RegisterHandler::parent(const QModelIndex &idx) const
|
|||||||
{
|
{
|
||||||
if (!idx.isValid())
|
if (!idx.isValid())
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
if (idx.internalId() >= 0)
|
if (!isTopLevelItem(idx))
|
||||||
return createIndex(idx.internalId(), 0, -1);
|
return createIndex(idx.internalId(), 0, TopLevelId);
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ QModelIndex StackModel::parent(const QModelIndex &child) const
|
|||||||
{
|
{
|
||||||
QTC_ASSERT(!child.isValid() || child.model() == this, return QModelIndex());
|
QTC_ASSERT(!child.isValid() || child.model() == this, return QModelIndex());
|
||||||
|
|
||||||
if (child.internalId() == -1)
|
if (quintptr(child.internalId()) == quintptr(-1))
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
return createIndex(child.internalId(), 0, -1);
|
return createIndex(child.internalId(), 0, -1);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user