forked from qt-creator/qt-creator
Debugger: Fix QObject property display with Qt 6
Task-number: QTCREATORBUG-24098 Change-Id: I6e1013fe39208ef6e9ba792e6b2fb745eb5e3108 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -1743,13 +1743,6 @@ class DumperBase():
|
|||||||
data = array + begin * stepSize
|
data = array + begin * stepSize
|
||||||
return data, size
|
return data, size
|
||||||
|
|
||||||
def listChildrenGenerator(self, addr, innerType):
|
|
||||||
stepSize = self.ptrSize()
|
|
||||||
data, size = self.listData(addr)
|
|
||||||
for i in range(size):
|
|
||||||
yield self.createValue(data + i * stepSize, innerType)
|
|
||||||
#yield self.createValue(data + i * stepSize, 'void*')
|
|
||||||
|
|
||||||
def vectorChildrenGenerator(self, value, innerType):
|
def vectorChildrenGenerator(self, value, innerType):
|
||||||
data, size = self.vectorData(value)
|
data, size = self.vectorData(value)
|
||||||
for i in range(size):
|
for i in range(size):
|
||||||
@@ -2035,6 +2028,9 @@ class DumperBase():
|
|||||||
with Children(self):
|
with Children(self):
|
||||||
# Static properties.
|
# Static properties.
|
||||||
for i in range(propertyCount):
|
for i in range(propertyCount):
|
||||||
|
if self.qtVersion() >= 0x60000:
|
||||||
|
t = self.split('IIIII', dataPtr + properties * 4 + 20 * i)
|
||||||
|
else:
|
||||||
t = self.split('III', dataPtr + properties * 4 + 12 * i)
|
t = self.split('III', dataPtr + properties * 4 + 12 * i)
|
||||||
name = self.metaString(metaObjectPtr, t[0], revision)
|
name = self.metaString(metaObjectPtr, t[0], revision)
|
||||||
if qobject and self.qtPropertyFunc:
|
if qobject and self.qtPropertyFunc:
|
||||||
@@ -2064,19 +2060,38 @@ class DumperBase():
|
|||||||
|
|
||||||
# Dynamic properties.
|
# Dynamic properties.
|
||||||
if extraData:
|
if extraData:
|
||||||
|
def list6Generator(addr, innerType):
|
||||||
|
data, size = self.listData(addr)
|
||||||
|
for i in range(size):
|
||||||
|
yield self.createValue(data + i * innerType.size(), innerType)
|
||||||
|
|
||||||
|
def list5Generator(addr, innerType):
|
||||||
|
data, size = self.listData(addr)
|
||||||
|
for i in range(size):
|
||||||
|
yield self.createValue(data + i * ptrSize, innerType)
|
||||||
|
|
||||||
|
def vectorGenerator(addr, innerType):
|
||||||
|
data, size = self.vectorData(addr)
|
||||||
|
for i in range(size):
|
||||||
|
yield self.createValue(data + i * innerType.size(), innerType)
|
||||||
|
|
||||||
byteArrayType = self.createType('@QByteArray')
|
byteArrayType = self.createType('@QByteArray')
|
||||||
variantType = self.createType('@QVariant')
|
variantType = self.createType('@QVariant')
|
||||||
if self.qtVersion() >= 0x50600:
|
if self.qtVersion() >= 0x60000:
|
||||||
values = self.vectorChildrenGenerator(
|
values = vectorGenerator(extraData + 3 * ptrSize, variantType)
|
||||||
extraData + 2 * ptrSize, variantType)
|
elif self.qtVersion() >= 0x50600:
|
||||||
|
values = vectorGenerator(extraData + 2 * ptrSize, variantType)
|
||||||
elif self.qtVersion() >= 0x50000:
|
elif self.qtVersion() >= 0x50000:
|
||||||
values = self.listChildrenGenerator(
|
values = list5Generator(extraData + 2 * ptrSize, variantType)
|
||||||
extraData + 2 * ptrSize, variantType)
|
|
||||||
else:
|
else:
|
||||||
values = self.listChildrenGenerator(
|
values = list5Generator(extraData + 2 * ptrSize,
|
||||||
extraData + 2 * ptrSize, variantType.pointer())
|
variantType.pointer())
|
||||||
names = self.listChildrenGenerator(
|
|
||||||
extraData + ptrSize, byteArrayType)
|
if self.qtVersion() >= 0x60000:
|
||||||
|
names = list6Generator(extraData, byteArrayType)
|
||||||
|
else:
|
||||||
|
names = list5Generator(extraData + ptrSize, byteArrayType)
|
||||||
|
|
||||||
for (k, v) in zip(names, values):
|
for (k, v) in zip(names, values):
|
||||||
with SubItem(self, propertyCount + dynamicPropertyCount):
|
with SubItem(self, propertyCount + dynamicPropertyCount):
|
||||||
if not self.isCli:
|
if not self.isCli:
|
||||||
|
@@ -3101,6 +3101,7 @@ void tst_Dumpers::dumper_data()
|
|||||||
+ Check5("mm", "destroyed", "@QMetaMethod")
|
+ Check5("mm", "destroyed", "@QMetaMethod")
|
||||||
+ Check4("mm", "destroyed(QObject*)", "@QMetaMethod")
|
+ Check4("mm", "destroyed(QObject*)", "@QMetaMethod")
|
||||||
+ Check("mm.handle", "14", TypeDef("unsigned int", "uint"))
|
+ Check("mm.handle", "14", TypeDef("unsigned int", "uint"))
|
||||||
|
% QtVersion(0, 0x5ffff) // Gone in Qt 6
|
||||||
+ Check("mp", "objectName", "@QMetaProperty");
|
+ Check("mp", "objectName", "@QMetaProperty");
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user