Move alignas alignment to context menu, fix hover state across refreshes

Replace inline alignas() editing with a proper "Align Members" submenu
in the right-click context menu. Remove alignas display from command row
and all related span/hit-test/edit machinery. Preserve hover highlight
state across document refreshes.
This commit is contained in:
MegaBlocksTM
2026-02-07 10:40:04 -07:00
committed by sysadmin
parent 02a5542f38
commit 9ec06d9658
7 changed files with 81 additions and 104 deletions

View File

@@ -484,7 +484,7 @@ struct ColumnSpan {
enum class EditTarget { Name, Type, Value, BaseAddress, Source, ArrayIndex, ArrayCount,
ArrayElementType, ArrayElementCount, PointerTarget,
RootClassType, RootClassName, Alignas };
RootClassType, RootClassName };
// Column layout constants (shared with format.cpp span computation)
inline constexpr int kFoldCol = 3; // 3-char fold indicator prefix per line
@@ -587,7 +587,7 @@ inline ColumnSpan commandRowAddrSpan(const QString& lineText) {
}
// ── CommandRow2 spans ──
// Line format: "struct ClassName alignas(8)"
// Line format: "struct ClassName"
inline ColumnSpan commandRow2TypeSpan(const QString& lineText) {
int start = 0;
@@ -606,22 +606,12 @@ inline ColumnSpan commandRow2NameSpan(const QString& lineText) {
int nameStart = space + 1;
while (nameStart < lineText.size() && lineText[nameStart].isSpace()) nameStart++;
if (nameStart >= lineText.size()) return {};
// Name ends before "alignas(" if present, otherwise at line end
int nameEnd = lineText.indexOf(QStringLiteral(" alignas("), nameStart);
if (nameEnd < 0) nameEnd = lineText.size();
int nameEnd = lineText.size();
while (nameEnd > nameStart && lineText[nameEnd - 1].isSpace()) nameEnd--;
if (nameEnd <= nameStart) return {};
return {nameStart, nameEnd, true};
}
inline ColumnSpan commandRow2AlignasSpan(const QString& lineText) {
int idx = lineText.indexOf(QStringLiteral("alignas("));
if (idx < 0) return {};
int end = lineText.indexOf(')', idx);
if (end < 0) return {};
return {idx, end + 1, true};
}
// ── Array element type/count spans (within type column of array headers) ──
// Line format: " int32_t[10] name {"
// arrayElemTypeSpan covers "int32_t", arrayElemCountSpan covers "10"