Struct headers: type+name format, auto-collapse, no footer when collapsed

- Add structTypeName field to Node for struct type names
- Struct headers now show: struct TYPENAME name {
- Auto-collapse structs/arrays by default
- Skip footer rendering when collapsed (cleaner view)
- Fix header span calculations for new format
- Disable brace matching (not needed for structured viewer)
- Change hover color to muted teal (distinct from keywords)
This commit is contained in:
sysadmin
2026-02-05 08:56:50 -07:00
parent a0d6b769b6
commit 6b9adf03fe
6 changed files with 90 additions and 25 deletions

View File

@@ -102,14 +102,23 @@ QString fmtOffsetMargin(int64_t relativeOffset, bool isContinuation) {
// ── Struct header / footer ──
QString fmtStructHeader(const Node& node, int depth) {
return indent(depth) + typeName(node.kind).trimmed() +
QStringLiteral(" ") + node.name + QStringLiteral(" {");
// Format: "struct TypeName name {" or "struct name {" if no type name
QString type = typeName(node.kind).trimmed();
if (!node.structTypeName.isEmpty())
return indent(depth) + type + QStringLiteral(" ") + node.structTypeName +
QStringLiteral(" ") + node.name + QStringLiteral(" {");
return indent(depth) + type + QStringLiteral(" ") + node.name + QStringLiteral(" {");
}
QString fmtStructHeaderWithBase(const Node& node, int depth, uint64_t baseAddress) {
// Format: "struct Name { base: 0x00400000" - single space after {
QString header = indent(depth) + typeName(node.kind).trimmed() +
QStringLiteral(" ") + node.name + QStringLiteral(" { ");
// Format: "struct TypeName Name { // base: 0x..." or "struct Name { // base: 0x..."
QString type = typeName(node.kind).trimmed();
QString header;
if (!node.structTypeName.isEmpty())
header = indent(depth) + type + QStringLiteral(" ") + node.structTypeName +
QStringLiteral(" ") + node.name + QStringLiteral(" { ");
else
header = indent(depth) + type + QStringLiteral(" ") + node.name + QStringLiteral(" { ");
QString baseHex = QStringLiteral("0x") + QString::number(baseAddress, 16).toUpper();
return header + QStringLiteral("// base: ") + baseHex;
}