Skip to content

Improve menu interaction and themes for Icod.Widgets 1.6.0 - #12

Merged
uniblab merged 5 commits into
mainfrom
feature/1.6.0-menu-interaction
Oct 15, 2026
Merged

uniblab merged 5 commits into
mainfrom
feature/1.6.0-menu-interaction

Conversation

@uniblab

@uniblab uniblab commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

This PR adds a persistent one-row menu bar with content-sized dropdowns anchored beneath the selected heading. Up/Down wrap enabled commands, Left/Right switch roots or navigate nested submenus, and Escape restores editor focus. Nested submenus now preserve their parent in separate panels: open to the right when space permits, otherwise overlay the parent. Exposed parent rows remain clickable; child borders occlude parent hit testing.

Themes control colors, mnemonic styling and optional hover (HighlightMenuHover, off by default). Hover never changes keyboard selection. An optional ModalBackdrop dims underlying host content while preserving cells and nested modal focus.

The gallery has File/Edit/View/Help above an editable document, F8 hover, Ctrl+T themes, Help > About, and Ctrl+Z/Ctrl+Y/Ctrl+A edit bindings. The sample refresh now finishes at the editor caret, hides it before non-editor refreshes, uses synchronized output, and avoids repeating unavailable cursor-style queries.

Message dialogs now activate OK, Yes/No, and OK/Cancel on a matching primary-button press and release. Hit testing follows the rendered, clipped labels; gaps and Escape hints are inert. Focus loss, layout changes, disabling, closing, or keyboard input cancel pending clicks. Completion restores prior focus.

README remains brief. It now records cascading submenu placement and message-dialog pointer activation; the sample index adds the corresponding review walkthrough. CHANGELOG, the interaction guide, gallery guide and expanded curated 1.6.0 notes carry the full behavior and compatibility details. NuGet package notes summarize the complete release. Version is 1.6.0; targets remain net8/net9/net10, assembly identity remains 1.0.0.0.

Dependency gate — do not merge yet

The owner's recording exposed two defects in Icod.Terminal 1.29.0: legacy Alt+F splits into Escape and text, and Windows console stream reads can interpret Ctrl+Z as EOF. Companion Terminal PR #88 prepares 1.29.1. Publish that patch and update the Widgets/DCurses dependency chain before the physical Windows retest. Current references stay on published DCurses 2.5.0; this PR alone does not resolve those transport defects.

Validation

  • 349 tests pass per target framework in Staging; local net8/net9 use runtime roll-forward to .NET 10.
  • All four sample smokes pass; the gallery additionally verifies Undo/Redo, refresh caret placement, and closing About by clicking OK.
  • Sixteen message-dialog cases cover every choice, mismatched and secondary clicks, clipping, keyboard selection, interrupted presses, exact-once completion, and focus restoration.
  • A real Linux PTY mouse walkthrough with the published dependency versions passed Help > About > OK, completion on release, typing back in the editor, and clean exit.
  • Cascade tests cover right placement, overlay fallback, parent restoration, and exposed-parent clicks.
  • A real Linux PTY run using the patched Terminal assembly passed legacy Alt+F, Undo/Redo, parent/child menu visibility, Escape and clean exit. This was a local integration check, not a change to package dependencies.
  • Local Staging packaging verifies version 1.6.0, the embedded README, and the expanded NuGet release notes.
  • Windows, Linux and macOS CI pass on 4ff630274d5d77d54856e17c0625679b9bb37cab, including sample smokes and exact package/consumer validation.
  • Physical Windows validation is pending the dependency patch; the companion PR adds a native Windows CI smoke.

Do not merge or publish automatically.

@uniblab
uniblab merged commit 215d6b4 into main Oct 15, 2026
4 checks passed
@uniblab
uniblab deleted the feature/1.6.0-menu-interaction branch October 15, 2026 21:00
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.

1 participant