Add a dockable Block Editor palette with selectable Parameters, Actions,
Parameter Sets and Constraints pages, reusing shared dock controls, icons
and ribbon-style hover bubbles.
Parameters, Actions, Parameter Sets and Block Properties Table are UI
catalogs only. Their entries remain disabled; this commit does not add
parameter placement, dynamic action behavior, parameter-set authoring or
block properties table functionality.
The Constraints page connects its geometric and dimensional entries to
existing ribbon commands. It reuses their implementations and adds no new
constraint behavior.
Keep the palette specific to BEDIT and retain its placement and selected
page across closing/reopening and Test Block. Opening, closing, switching
pages and clicking disabled entries preserve the document, undo history
and any running command.
Validation: 7 palette tests, 57 dock checks and 46 ribbon checks passed
(overlapping groups); rendered pages inspected and native debug build passed.
PROPERTIES only flipped the visibility flag, so a Properties pallet in
an edge's inactive group or behind auto-hide stayed out of sight. It
now opens through the dock, which brings its group forward. In clean
screen the pallet shows on top without changing its normal state;
leaving clean screen drops that overlay.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Resolve conflicts with the new gradient and graphic-attributes colour
targets: keep main's targets and menu handling, routed through the new
ColorPicker state; adapt dock/view.rs to `color_picker`.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013rGmDUNr1hUf4zo1X3dak8
The two dock tests that build and drive the real view overflowed a
default test thread's stack, and made in parallel their headless
renderers crashed the test process about one run in three.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Only docked pallets have a width divider, so the Width drag and
WidthReset no longer carry a branch for an undocked pallet; remove the
then unused DockState::set_width / reset_width. Per-pallet widths are
still read (older configs, floating size). Tests now size groups.
- on_dock hands hover messages to dock_hover and the release to
dock_drag_release.
- dock_slot_spans and dock_landing share dock_open_spans.
No behaviour change.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013RyGiMXcsf9HTKfqDxaQGt
- dock_hover_pending is an Option<HoverPending> (Reveal / Hide) instead
of a nested Option.
- dock_float_frame returns a FloatFrame with width() and bar_x(), so the
floating menu no longer repeats the frame-width formula.
- Put dock_reveal's doc comment back on dock_reveal, and the group-move
comment back above the match it describes.
No behaviour change.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013RyGiMXcsf9HTKfqDxaQGt
Remove floating groups: a floating window is a single pallet once more,
and the Pallets submenu is gone from its title-bar menu. Kept: the menu
opens at the pointer with Allow docking, Dock left and Dock right;
close / pin show only while the bar is hovered; content is clipped to
its frame. A config saved by the floating-group build still loads, its
windows floating their first pallet. Drops the unused Pallets string.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013RyGiMXcsf9HTKfqDxaQGt
- The floating title bar's right-click menu opens where the pointer is,
flipped to stay on screen; the Pallets submenu sits beside it.
- Close and pin on a floating title bar only show while it is hovered,
as on docked title bars.
- New Allow docking check in that menu: off, dragging the window (or a
pallet out of it) only floats it, never docks it on an edge.
- Floating windows and stacked pallets clip their content, so a pallet
sized below its content no longer draws outside its frame.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013RyGiMXcsf9HTKfqDxaQGt
- A docked group floats as one window: drag its edge band over the
drawing or double-click the band. Floating windows hold a stack of
pallets with splitters; the vertical title bar shows each pallet's
icon (press one to drag that pallet out). Dragging the bar moves the
whole window; dropping it on an edge docks or joins it as a group.
- Right-click a floating title bar: Pallets submenu (add or hide
pallets in the window), Dock left, Dock right.
- Close on a floating bar closes every pallet in the window; its pin
sets auto-hide for the whole window.
- Older configs with single floating pallets still load.
- Translate the new dock texts (Auto-hide, Dock left/right, New group,
Pallets, Browser, Node Graph) in all 21 languages.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013RyGiMXcsf9HTKfqDxaQGt
- LAYERS ribbon button runs a command that opens the Layer Manager pallet;
the ribbon no longer keeps it highlighted.
- Layer Manager: search box stays right-aligned, the column header fills
the row, no stray contour lines when the pallet is taller than its rows.
- Auto-hidden edges don't show the shown-group accent bar.
- Auto-hide reveal and hide wait 150 ms of rest, so passing over the
strip doesn't flash groups open.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013RyGiMXcsf9HTKfqDxaQGt
Fixes:
- Hover state no longer drops when the pointer moves up from one strip
icon, group grip or title bar to the one above: iced handles the
element above first, so the old element's "left" (None) cleared the
hover just set. Leave messages now carry the element and only clear
their own hover.
- The drop preview used the pallets' own widths; it now uses the
group's width, matching where the pallet lands.
- Group indexes from messages (group grab, splitter) are looked up
safely, so a message from before a layout change no longer panics.
- Floating placements read from the config are healed (finite, positive,
at least the minimum size), like the group weights already were.
- The shown group's edge bar is centred in its row: a stack takes its
height from its first layer, and the icon column was shorter than the
row. The "Drag to move group" tooltip is removed.
Simplifications (no behaviour change):
- dock_open_at_default / dock_unpeek replace seven copies of "dock on
the right if unplaced, then reveal" and four of "stop peeking".
- The drop target takes the grab offset as a parameter, so a drag
update stores its state once.
- dock_set_open, ensure_settings, the shown-index bookkeeping after a
group is removed and the on-screen width clamp each lose duplication.
- VBarLabel drops options its single caller never varied.
- The drop preview's landing computation is one helper.
Naming and consistency: pallet names in the + menu, the drag ghost and
the floating title bar go through t!(); StripHit::Tab becomes
StripHit::Join; stale comments updated.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013RyGiMXcsf9HTKfqDxaQGt
- The dock's state handling and drawing move out of update/dialog.rs and
view/mod.rs into src/app/dock/ (update.rs, view.rs, tests.rs). The
overlay view_main stacked over the workspace (floating pallets, + menu,
drag preview, pointer capture) becomes one `dock_overlay` call. Code is
moved, not changed.
- Strip icons no longer show the pallet name on hover.
- Tests trimmed where they overlapped: the top / bottom half drops are
one test, the two hover tests are one, and the in-group icon reorder,
raise-float, empty floating title bar and slot-span tests are dropped
(each is covered by another test).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013RyGiMXcsf9HTKfqDxaQGt