openpencil/crates
Kayshen-X d5885045c1 refactor(native): split widget_host/input.rs to honor 800-line cap (Task #49)
`widget_host/input.rs` was 882 lines, over the project's documented
800-line ceiling. Split the `impl WidgetHostNative` block into two
files along a natural boundary:

  input.rs    (417 lines — pointer / wheel / pan / cursor-move /
               release + drag-commit helpers)
  keyboard.rs (481 lines — text / backspace / delete / duplicate /
               nudge / send / escape / click routing)

Both `impl WidgetHostNative` blocks share the same type, and Rust
allows multiple impl blocks for one type in the same crate so the
public method surface is preserved verbatim. No behavior changes —
every method moved verbatim with its full body + doc-comment.

Module wiring:
  crates/openpencil-shell-native/src/widget_host.rs:
    `mod keyboard;` registered between `input_tests` and `paint`
    in the alphabetical mod list.

Imports adjusted: keyboard.rs picks up only the symbols its
methods reference (PropertyFocus, AIChatHit / AIChatPlaceholder /
LayerPanel / LayoutCx / Toolbar / Widget + TOOLBAR_WIDTH +
TOP_BAR_HEIGHT, Point2D + Rect, TOOLBAR_INSET_X/Y from helpers).
input.rs drops the now-unused imports of those symbols.

Tests: 54 desktop + 250+ shell-core + 20 shell-native all pass.
File-cap check:
  input.rs     417 (was 882, well under 800)
  keyboard.rs  481 (new, well under 800)

main.rs still pending — Task #55 follow-up (804 lines today, 4 over).
2026-05-14 17:36:24 +08:00
..
anthropic-agent-sdk chore(crates): move vendored SDKs into workspace as forkable crates 2026-05-14 16:49:17 +08:00
copilot-sdk chore(crates): move vendored SDKs into workspace as forkable crates 2026-05-14 16:49:17 +08:00
openpencil-app feat(openpencil-app): skeleton crate (Stage F entry placeholder) 2026-05-03 22:05:00 +08:00
openpencil-desktop fix(desktop/chat): downgrade HttpServer for_cli — wire protocol not verified 2026-05-14 17:06:07 +08:00
openpencil-shell-core fix(mcp): parse real MCP tools/call envelope (nested name + arguments) 2026-05-14 17:31:10 +08:00
openpencil-shell-native refactor(native): split widget_host/input.rs to honor 800-line cap (Task #49) 2026-05-14 17:36:24 +08:00
openpencil-shell-web feat(shell): export dialog + multi-format raster (PNG/JPEG/WEBP) + Property-panel preview 2026-05-14 14:02:52 +08:00
pen-codegen chore(workspace): cargo-deny 0.18 activation (Phase 1 Task 1.8 Step 6) 2026-05-03 23:05:00 +08:00
pen-core chore(workspace): cargo-deny 0.18 activation (Phase 1 Task 1.8 Step 6) 2026-05-03 23:05:00 +08:00
pen-engine chore(workspace): cargo-deny 0.18 activation (Phase 1 Task 1.8 Step 6) 2026-05-03 23:05:00 +08:00
pen-figma chore(workspace): cargo-deny 0.18 activation (Phase 1 Task 1.8 Step 6) 2026-05-03 23:05:00 +08:00
pen-types feat(pen-types): skeleton crate (bucket A) 2026-05-03 22:35:00 +08:00
wasm-libc-shim style(shell): cargo fmt --all (rustfmt-clean) 2026-05-10 18:47:33 +08:00
CLAUDE.md feat(shell): canonical .op loader + jian-core layout + visual fidelity pass 2026-05-14 09:26:08 +08:00