Skip to content

Rework the editor's menu bar, tree panel and class graph, and take ImGuiApp 3.16.8 - #144

Merged
matt-edmondson merged 2 commits into
mainfrom
claude/editor-layout-and-imguiapp-3.16.8
Sep 6, 2026
Merged

Rework the editor's menu bar, tree panel and class graph, and take ImGuiApp 3.16.8#144
matt-edmondson merged 2 commits into
mainfrom
claude/editor-layout-and-imguiapp-3.16.8

Conversation

@matt-edmondson

Copy link
Copy Markdown
Contributor

The editor's menu bar, left panel and class graph all get their layout reworked, and the package fixes they were waiting on land with them.

What changes for the user

The menu bar is File, Edit and Theme again. The open document's name lives in the window title alone, and the validation counts ride on the Diagnostics tab's label, one click from the list they count.

The four schema trees each get a tab instead of sharing one narrow column, so a schema with a dozen classes no longer pushes its data sources and code generators off the bottom. Selecting an element opens the tab it lives in, and every "+ New" button sits at the top of its tree.

The class graph opens around the middle of its canvas instead of in the top-left corner, and no longer draws an ImGui warning over the application or grows an unreferenced enum's node wider every frame. The type picker shows what you have selected and confirms on a single click.

How

ShowDocumentStatus is gone, and DiagnosticsTab keeps the counts on the tab label. That work turned up a defect worth naming: the summary had never actually been coloured, because EditorTheme.Severity scopes a widget's frame and picks whichever text colour reads on top of it, so plain text inside that scope came out black or white. The new EditorTheme.SeverityText colours plain text, and the diagnostics panel headline uses it too.

TreeSchema draws a tab per kind and can be asked to open one, which SchemaEditor.SelectTree exposes and the Edit* methods call. The "+ New" buttons moved from OnTreeEnd to OnTreeStart in all six trees, nested member and enum value trees included.

ClassGraphView seeds its ring on the canvas centre, clamped to fit, so the layout's gravity settles the graph in view. Popups.OpenTypeList materialises the available types and resolves the current one to the instance in that list, because the picker redraws from the same sequence every frame and Schema.GetAvailableTypes builds fresh objects on each enumeration.

The package bump moves all eight packages that ship from ImGuiApp together, since they release as one version, and ThemeProvider to 3.0.15 with them because ImGui.Styler 3.16.8 requires it.

Tests

100 pass, none skipped. The tree tests open the tab they need through a new harness helper. New tests cover what changed: the Diagnostics tab carries the counts, the graph opens around the middle of the canvas, and a node with no pins draws without an ImGui error and keeps its size. The last of those was written against 3.16.6, where it failed, and is what confirms the package fix.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AWrfVmf1yQ7vE4ZFab7qV7

The menu bar carried the open document's name and the validation counts, which
put a file name and a pair of numbers among File, Edit and Theme, reading as
menus nobody could open. The name lives in the window title alone now, and the
counts ride on the Diagnostics tab's own label, one click from the list they
count. Along the way the summary turned out never to have been coloured: the
scope it used picks whichever text colour reads on top of a coloured frame, so
plain text inside it came out black or white. It takes the severity colour
directly now, in the panel headline as well.

The four trees shared one narrow column, and a schema with a dozen classes
pushed the data sources and code generators off the bottom of it. Each kind now
has its own tab, selecting an element opens the tab it lives in, and every
"+ New" button moved to the top of its tree where it is reachable without
scrolling past everything already there.

The class graph opened in the top-left corner because its nodes were seeded on
a ring around the origin, and ImNodes measures a node's position from the
canvas's top-left. Three quarters of that ring was off the canvas, and the
layout's gravity, initialised to the centroid of those seeds, held what was
left in the corner. The ring is centred on the canvas now and no wider than it.

The type picker was handed the schema's available types as the lazy sequence
that builds them, so it saw a new set of equal objects every frame and could
never recognise the one that had been picked. The list is materialised once,
with the current type resolved to the instance in it.

The tree tests open the tab they need first, which the harness now offers.
Three fixes the editor was waiting on, all made in that repo: a node with no
pins submits an item of its own, so the class graph no longer draws over the
application with "code uses SetCursorPos() to extend window/parent boundaries"
and an unreferenced enum's node no longer grows eight pixels a frame; and the
type picker confirms on the click that picks a row, keeps choices that share a
ToString apart, and marks the row holding the current type.

All eight packages that ship from that repo move together, since they release
as one version and mixing them invites conflicts. ImGui.Styler 3.16.8 wants
ThemeProvider 3.0.15, so that moves too.

The class graph's regression test drops its Ignore and passes.
@sonarqubecloud

sonarqubecloud Bot commented Sep 6, 2026

Copy link
Copy Markdown

@matt-edmondson
matt-edmondson merged commit e0990f1 into main Sep 6, 2026
12 checks passed
@matt-edmondson
matt-edmondson deleted the claude/editor-layout-and-imguiapp-3.16.8 branch September 6, 2026 10:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant