Uh oh!
There was an error while loading. Please reload this page.
Designer: deal the section settings out into four tabs - #21
Merged
Conversation
The editor pane was one column of fifteen groups -- what a section says, how its type is put together, where it sits, five text styles, eight panels and a table -- in a pane a third of a window wide. Folding the groups away made the column shorter without making it any less of a column: somebody working on the words of a list still scrolled past the geometry and the styles to reach the entry table. So the settings are dealt out into Content, Layout, Style and Background, which are the jobs somebody sits down to do rather than an arbitrary quartering: fill the section in, place it, ink it, put something behind it. A divider's piece stacks go where a list's entries do -- they are what a divider is made of, and a divider has no words to type. Nothing about the document changes; a tab is where a control is drawn and nothing else. The type picker, the label, the visible box and the advanced switch stay above the tab strip. They are not settings of any one job -- the type decides what every tab holds, and the advanced switch reaches rows on three of the four pages -- so leaving the tab you are working in to flip one of them would lose your place to change something that governs all of them. Each tab scrolls on its own, which is why the designer now adds the editor straight to the splitter instead of wrapping it in a QScrollArea: the scrolling moved inside, one area per page, so the header and the strip cannot be scrolled off the top and each page keeps the place it was left at. A tab with nothing on it goes away, since a Spacer has no words, no styles and no panels and three empty panes invite the reader to look for settings that are not there. That is asked of the groups on each page rather than of the section type, so it cannot disagree with the visibility pass that has just run. The tab the reader chose is remembered rather than forced: one going away under them takes the selection with it, and they are put back on it once the next section has one again. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019UvPd5wu54qwoNAHqN9U8o
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
The designer's middle pane was one column of fifteen groups — the content rows, the type's own settings, the placement rows, up to five
StyleEditors, eight background slots, and a table — all stacked in a pane a third of a window wide. Folding the groups away made the column shorter without making it any less of a column: somebody working on the words of a list still scrolled past the geometry and the styles to reach the entry table.The settings are now dealt out into four tabs (
EditorTab):%1 Settings) and Placement on the CanvasNothing about the document changes — a tab is where a control is drawn and nothing else. Section types, persistence and the visibility rules are untouched.
The header stays above the tabs
The type picker with its switches and help line, the label field, the visible box and the Show every setting switch sit above the tab strip. They aren't settings of any one job: the type decides what every tab holds, the label is how a section is found again in the list, and the advanced switch reaches rows on three of the four pages. Leaving the tab you're working in to flip one of them would lose your place to change something that governs all of them.
Scrolling moved inside
Each tab page has its own
QScrollArea, so the header and the tab strip can't be scrolled off the top and each page keeps the place it was left at.DesignerDialogtherefore adds the editor straight to the splitter instead of wrapping it in a scroll area of its own (editorScrollis gone;editortakes its place in the two spots that used it).Empty tabs go away
A Spacer has no words, no styles and no panels, so three of the four would be empty panes inviting the reader to look for settings that aren't there.
refreshTabVisibilityasks the groups on each page rather than re-deriving from the section type, so it can't disagree with the visibility pass that has just run; it usesisHiddenrather thanisVisiblebecause the page of an unselected tab is itself hidden. The chosen tab is remembered rather than forced — a tab going away under the reader takes the selection with it, anddesiredTabputs them back on it once the next section has one again, withrestoringTabkeeping that shuffle from being read as a choice.Other changes
Designer.Group.Placementrenamed from "Layout Properties" to "Placement on the Canvas" — "Layout ▸ Layout Properties" read as a stutter. Say the word and I'll put it back.Designer.Tab.{Content,Layout,Style,Background}.ARCHITECTURE.md's designer section rewritten to describe the tabs, the pinned header, the per-page scrolling and the empty-tab rule.Verification
The plugin's own UI isn't covered by
tests/(the harness compilesmodel/,render/andutil/without Qt Widgets), so this was checked two ways:cmake -S . -B build -DENABLE_TESTS=ON && ctest— passes, 0 failures.SectionEditorand its dependencies against a stubbed locale table, drives a section of each type through it and reads the tab bar back.Rendered grabs confirm the pinned header sits above the strip, each page's first group starts at the top of its own scroll area, and a list's Content tab is now the entry table filling the pane rather than a table below fifteen groups.
clang-format19.1.1 reports no diffs on the four touched source files.🤖 Generated with Claude Code
https://claude.ai/code/session_019UvPd5wu54qwoNAHqN9U8o
Generated by Claude Code