Patch craft-ui to aiongg/craft-libs 4bf1164 (docking branch). Floating
windows hold groups (Floating::single, panels()); matches on Node and
Action get wildcard arms; apply_action validates MoveGroup, MoveColumn,
MoveWindow, the group close actions, minimize and resize, and records
return locations for every panel a close action removes. PanelContent
gives preferred floating sizes. A pointer test drags the docked
Character Styles | Paragraph Styles group by its drag bar to the canvas
and onto another strip: order and the front tab are kept.
- The importer marks Panel Menus items as panel-menu entries.
- Show/Hide commands and the other show-and-hide toggles are marked as
toggles, so Show and Hide names match only them.
- The Preferences alias names its submenu (Preferences: General…).
- The import test checks an alias match (Exit).
- shortcuts() declines Clear and native-menu presses through
dispatch_filtered; clipboard events stay with the app by default.
- keys::conflicts uses Keymap::conflicts_with.
- Panel bindings share the default key of the UI command that opens the
same panel, so importing InDesign's set leaves both with it.
- Import aliases and a Tools path for InDesign feature names DesignCraft
has commands for.
- Overrides with one key per command save in the map form older versions
read.
shortcut_import.rs keeps the Show Set reader (decoding, the 8 MB cap,
header and item lines, entry splitting that keeps the comma key) and maps
each item to a craft_keymap::ForeignSet entry: `<menu> Menu` areas become
menus, the Tools area marks `... Tool` items as tool entries, and keys are
read with ForeignKey::read in the set's Windows or Mac flavour. Matching,
conflicts and apply are craft_keymap::plan + ImportPlan::apply with
Default as the home context and Text used when an item has no Default
keys; the keymap's overrides are stored afterwards.
- Window menu panel items and Tools items set panel and tool shortcuts.
- An item's Default keys all apply, not only the first readable one.
- The window.importShortcuts result keeps its field names and adds
failed, approximated, suggestions and truncated; rows carry line and
reason, ids are command keys.
- An engine command's own menu path is left out of the catalogue where a
menu row of another command already stands, so the importer can pick
the menu row's command.
- The dialog summary counts unmatched items without the rows for keys in
contexts DesignCraft lacks.
The shortcut model, dispatch and storage move onto the shared craft-keymap
crate. The catalogue is built from UI_COMMANDS, the engine command specs,
the panels (window.panel {panel}) and the tools (tool.select {tool}, one
group per Tools-panel group), with menu paths from the menu tree.
- Dispatch goes through craft_keymap::egui::Dispatcher; presentation keys,
Esc-to-selection, Clear and the native-menu skip stay app-side, and the
clipboard events stay with the canvas.
- Panels take InDesign's default keys where DesignCraft leaves them free.
- Tool keys are editable; tools sharing a key take turns.
- ui.json keeps its shortcuts as craft-keymap Overrides; the map form older
versions saved loads unchanged.
- window.setShortcut accepts params (panels), tool ids and steal; the
Keyboard Shortcuts dialog lists panels and tools and moves recorded keys.