egui activates a focused button with Enter, and the footer, drawn
after it, took the same Enter for OK: the dialog closed and made the
table of contents. The toggle now consumes that Enter.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The dialog shows the first selected object's corners and sent all
four, so other objects lost corners nobody touched. object.cornerOptions
now takes null for a corner (each object keeps its own), and the dialog
sends only the corners edited: changed from the first object's, or set
by a linked edit (all four).
A shape the dialog doesn't offer is an error that keeps it open,
instead of another shape taking its place.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Moving a point makes a polygon a path (as the engine does for any
point edit), and four handle-free corners took the rectangle's branch:
a diamond's corners crossed as a plus. A path's corners are used only
when both diagonals cross as an X; a test edits a four-sided polygon
with path.moveAnchors.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The panel keeps the uid of the document it last showed; another one
(switched to, or moved into its place by a close) drops the rename and
the pending rename click, so a same-named swatch there isn't renamed.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The picker has no backdrop, so a page can lie under it; color_at only
checks the canvas. The drop now samples only when the picker's layer
isn't the topmost one there, and the test drops onto its colour field.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The caret in a footnote has a CellAddr too (FOOTNOTE_TABLE). Shift+Tab
and Esc there now act as outside a table, and table.nextCell,
table.prevCell and table.toggleSelection refuse it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
So the command refuses it (and the dialog stays open) instead of the
table being made unstyled.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
So the command refuses it (and the dialog stays open) instead of the
table being made unstyled.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A row wider than MAX_COLUMNS, or more cells than the largest table
table.insert makes (MAX_BODY_ROWS x MAX_COLUMNS), is an error before
the table is built; the text stays as it was.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* UI: the application bar uses craft-window's title bar
DesignCraft's title-bar code moved to craft-libs as craft_window::title_bar.
The application bar calls it instead of its own copy, and the macOS shell
takes sync_movable from it. Differences: a drag on an in-window panel lying
over the bar no longer moves the window, full screen ignores the bar's drag
and double-click, and floating panels in their own windows keep their own
movable flag.
* UI: craft-window from craft-libs main
* UI: the application bar ignores the title bar's response