Skip to content

Redesign the Actions editor as a live pie menu - #70

Open
danielchalmers wants to merge 3 commits into
mainfrom
claude/pie-editor-redesign
Open

Redesign the Actions editor as a live pie menu#70
danielchalmers wants to merge 3 commits into
mainfrom
claude/pie-editor-redesign

Conversation

@danielchalmers

@danielchalmers danielchalmers commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Redesigns the Actions settings tab around a single idea: the editor is the menu. Instead of a ListBox with Add/Remove/Up/Down buttons next to a form, the tab now shows a full-size live pie where you work on the real thing. Fixes #16, since the editor itself is now the always-current preview.

How it works

  • Click a slice to edit it. The inspector on the right binds to the selected slice and highlights it on the pie with the system accent color. Edits to name and icon appear on the slice as you type.
  • Drag a slice around the ring to reorder. Reuses the same drag-reorder machinery as the live menu.
  • Click the dashed "+" ghost slice to add an action. With no actions at all, the ghost becomes a clickable full ring.
  • Hidden actions stay visible but dimmed in the editor so they can still be selected and edited.
  • Drop files, apps, folders, or links anywhere on the pie card to add them as actions, same as before.
  • Full keyboard support: the pie is focusable; arrow keys move the selection around the ring, Ctrl+Arrow reorders the selected action, Enter or Insert adds one, and Delete removes it.
  • Screen reader support: a custom automation peer exposes the editor as a list of selectable action items plus an invokable "Add an action" button, with selection events raised as the user moves.
  • The inspector gains Test, Duplicate, and Remove buttons and an icon + name header. Type-specific fields are unchanged.

Implementation notes

  • PieControl gets an IsEditMode dependency property that renders all slices (disabled ones dimmed), appends the ghost slice, suppresses digit hints and the hub close target, and turns clicks into selection via a new TwoWay-bindable SelectedSlice property. The live menu path is untouched.
  • Drag reorder now wraps over the full layout slot ring (including the ghost slot) so a full lap lands home, and drops on the ghost wedge clamp to the last real slot.
  • PieControl now detaches its CollectionChanged/PropertyChanged handlers on unload, so the short-lived settings window no longer stays reachable from the app-lifetime actions collection after closing.
  • PieAction.Clone() backs the Duplicate button so future properties can't be silently dropped from copies.
  • MoveUpCommand/MoveDownCommand and the write-only SelectedActionIndex are gone; tests updated and extended (144 passing).

Verification

Drove the real SettingsWindow in an automated harness using genuine mouse and keyboard input (SendInput): click-to-select, live rename, ghost-slice add, Duplicate/Remove buttons, drag reorder (including a full-lap drag and a drop on the ghost wedge), hidden-action dimming, adding the first action from an empty editor, arrow-key selection, Ctrl+Arrow reorder, Enter add, Delete remove, and the UI Automation peer (child enumeration, SelectionItem.Select, and Invoke on the add button). All 26 checks pass, plus the full unit test suite.

Screenshots

image

The Actions tab now edits the menu on the pie itself: every action renders as a slice (hidden ones dimmed), clicking a slice selects it in the inspector, dragging reorders using the same drag logic as the live menu, and a dashed ghost "+" slice appends a new action. The inspector pane gains Test, Duplicate, and Remove buttons and an icon+name header, replacing the old list with Add/Remove/Up/Down buttons.

PieControl gains an IsEditMode dependency property (all-slices rendering, ghost slice, accent selection highlight via a new SelectedSlice property, inert hub, no digit hints) and now detaches its collection handlers on unload so short-lived hosts like the settings window are not kept alive by the app-lifetime actions collection. Drag reorder wraps over the full slot ring including the ghost slot, and an empty editor renders the ghost as a clickable full ring. PieAction gains Clone() for duplication.

Fixes #16
The edit-mode pie is now focusable: arrow keys move the selection around the ring, Ctrl+arrow reorders the selected action (wrapping like the ring), Enter or Insert adds a new action, and Delete removes the selected one. Clicking a slice or the ghost focuses the control so mouse and keyboard mix naturally. The live menu keeps its window-level key handling and stays unfocusable.

A custom automation peer exposes the editor to UI Automation as a list of selectable items (with the SelectionItem pattern and hidden-state help text) plus an invokable "Add an action" button, and raises selection events so screen readers can follow along.
Splits the Actions tab evenly so the inspector gets as much room as the pie, shrinks the icon box to sit beside a standard-height name field, gives every section a consistent label rhythm, and replaces most inline helper paragraphs with tooltips. The hint under the pie is now one sentence with the keyboard shortcuts in its tooltip.
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.

Render a preview of the pie menu inside the actions editor in the settings window so you can see your changes immediately

1 participant