forked from qt-creator/qt-creator
Debugger: Re-enable shortcut to get known type sizes in dumpers
Looks like we need to continue with this crutch for MinGW.
This partiall reverts commit 1074c2ffce
.
Change-Id: I89d32f31281c3ef720bbc2a21d5a99bfd0066ba3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -3831,6 +3831,25 @@ class DumperBase():
|
|||||||
self.registerType(typeId, tdata)
|
self.registerType(typeId, tdata)
|
||||||
return self.Type(self, typeId)
|
return self.Type(self, typeId)
|
||||||
|
|
||||||
|
def knownArrayTypeSize(self):
|
||||||
|
return 3 * self.ptrSize() if self.qtVersion() >= 0x060000 else self.ptrSize()
|
||||||
|
|
||||||
|
def knownTypeSize(self, typish):
|
||||||
|
if typish[0] == 'Q':
|
||||||
|
if typish.startswith('QList<') or typish.startswith('QVector<'):
|
||||||
|
return self.knownArrayTypeSize()
|
||||||
|
if typish == 'QObject':
|
||||||
|
return 2 * self.ptrSize()
|
||||||
|
if typish == 'QStandardItemData':
|
||||||
|
return 4 * self.ptrSize() if self.qtVersion() >= 0x060000 else 2 * self.ptrSize()
|
||||||
|
if typish == 'Qt::ItemDataRole':
|
||||||
|
return 4
|
||||||
|
if typish == 'QChar':
|
||||||
|
return 2
|
||||||
|
if typish in ('quint32', 'qint32'):
|
||||||
|
return 4
|
||||||
|
return None
|
||||||
|
|
||||||
def createType(self, typish, size=None):
|
def createType(self, typish, size=None):
|
||||||
if isinstance(typish, self.Type):
|
if isinstance(typish, self.Type):
|
||||||
#typish.check()
|
#typish.check()
|
||||||
@@ -3838,6 +3857,15 @@ class DumperBase():
|
|||||||
if isinstance(typish, str):
|
if isinstance(typish, str):
|
||||||
ns = self.qtNamespace()
|
ns = self.qtNamespace()
|
||||||
typish = typish.replace('@', ns)
|
typish = typish.replace('@', ns)
|
||||||
|
if typish.startswith(ns):
|
||||||
|
if size is None:
|
||||||
|
size = self.knownTypeSize(typish[len(ns):])
|
||||||
|
else:
|
||||||
|
if size is None:
|
||||||
|
size = self.knownTypeSize(typish)
|
||||||
|
if size is not None:
|
||||||
|
typish = ns + typish
|
||||||
|
|
||||||
tdata = self.typeData.get(typish, None)
|
tdata = self.typeData.get(typish, None)
|
||||||
if tdata is not None:
|
if tdata is not None:
|
||||||
return self.Type(self, typish)
|
return self.Type(self, typish)
|
||||||
|
@@ -243,11 +243,15 @@ def qdump__Qt__ItemDataRole(d, value):
|
|||||||
|
|
||||||
|
|
||||||
def qdump__QStandardItemData(d, value):
|
def qdump__QStandardItemData(d, value):
|
||||||
|
d.createType('@Qt::ItemDataRole') # warm up cache
|
||||||
role, pad, val = value.split('{@Qt::ItemDataRole}@{@QVariant}')
|
role, pad, val = value.split('{@Qt::ItemDataRole}@{@QVariant}')
|
||||||
d.putPairContents(role.value(), (role, val), 'role', 'value')
|
d.putPairContents(role.value(), (role, val), 'role', 'value')
|
||||||
|
|
||||||
|
|
||||||
def qdump__QStandardItem(d, value):
|
def qdump__QStandardItem(d, value):
|
||||||
|
d.createType('@QStandardItemData') # warm up cache
|
||||||
|
d.createType('@QStandardItem')
|
||||||
|
d.createType('@QStandardItem*')
|
||||||
vtable, dptr = value.split('pp')
|
vtable, dptr = value.split('pp')
|
||||||
# There used to be a virtual destructor that got removed in
|
# There used to be a virtual destructor that got removed in
|
||||||
# 88b6abcebf29b455438 on Apr 18 17:01:22 2017
|
# 88b6abcebf29b455438 on Apr 18 17:01:22 2017
|
||||||
|
Reference in New Issue
Block a user