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 commit1074c2ffce
. Change-Id: I89d32f31281c3ef720bbc2a21d5a99bfd0066ba3 Reviewed-by: Christian Stenger <christian.stenger@qt.io> (cherry picked from commitffe3c56670
)
This commit is contained in:
@@ -3816,6 +3816,25 @@ class DumperBase():
|
||||
self.registerType(typeId, tdata)
|
||||
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):
|
||||
if isinstance(typish, self.Type):
|
||||
#typish.check()
|
||||
@@ -3823,6 +3842,15 @@ class DumperBase():
|
||||
if isinstance(typish, str):
|
||||
ns = self.qtNamespace()
|
||||
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)
|
||||
if tdata is not None:
|
||||
return self.Type(self, typish)
|
||||
|
@@ -243,11 +243,15 @@ def qdump__Qt__ItemDataRole(d, value):
|
||||
|
||||
|
||||
def qdump__QStandardItemData(d, value):
|
||||
d.createType('@Qt::ItemDataRole') # warm up cache
|
||||
role, pad, val = value.split('{@Qt::ItemDataRole}@{@QVariant}')
|
||||
d.putPairContents(role.value(), (role, val), 'role', 'value')
|
||||
|
||||
|
||||
def qdump__QStandardItem(d, value):
|
||||
d.createType('@QStandardItemData') # warm up cache
|
||||
d.createType('@QStandardItem')
|
||||
d.createType('@QStandardItem*')
|
||||
vtable, dptr = value.split('pp')
|
||||
# There used to be a virtual destructor that got removed in
|
||||
# 88b6abcebf29b455438 on Apr 18 17:01:22 2017
|
||||
|
Reference in New Issue
Block a user