Skip to content

Pointer diagnostics reports the window fallback border instead of the actual hit target #186

Description

@RolandUI

Actual native #172 exploration on 8e36e2a exposed a reproducible pointer diagnostic failure on the expanded shared fixture. Windows / Avalonia 12.1.3 / standalone provider 47034aa / scale 1 / client 1120x800. The original failed evidence is retained.

Reproduction:

  1. Launch the standalone native QA app, select Input (tab 6), find qa-pointer-pad.
  2. Its observed bounds are 44,315,520,150 in top-level DIP. Explicit synthetic click and CLI native drag succeed; independent journal/native pixels show two presses/two releases/one drag at delta 80,30, with no held input.
  3. MCP pointer_diagnostics with move/assert_hit at center 304,390 rejects qa-pointer-pad.
  4. A fresh actual CLI pointer-diagnostics at 150,390 (clear pad area, away from its non-hit-testable text) fails identically. The bridge move metadata reports the expected pad node visual:2984e99 at bounds 44,315,520,150, but the diagnostics path ends at PART_TransparencyFallback (visual:184a24a, full window bounds), excluding the actual pad. CLI exit 1, structured error runtime_pointer_input_hit_path_mismatch, followed by runtime_pointer_expected_node_not_hit.

Evidence: artifacts/agent-qa/keyed-standalone-01/qa-run.json, artifact-identity.json, D001-D005 positive/input-guard results, D004-drag-state.json, D006-pointer-diagnostics.arguments.json / .result.json, D007-cli-pointer.request.json / .stdout.json / .stderr.log / .exit.txt. Native pad/Unicode/focus images and independent journal are retained. Session c4b0dd0dc8cf41c9adb64aaade7567f8, owned PID 20960; stop state will be recorded separately.

Likely area: RuntimePointerDiagnosticsRunner reconstructs a path from rectangular tree bounds rather than respecting Avalonia's actual hit path. Confirm ordering/visibility/clipping/transform and depth-limit behavior before choosing the fix; do not special-case the QA window or silently discard mismatches. The second reproduction rules out the center TextBlock as the sole cause. This is distinct from #185's macOS gesture guard and must not be conflated with it.

Acceptance:

  • Reproduce the incorrect path with meaningful real-Avalonia and/or controlled tree regression coverage.
  • Prefer current public Avalonia hit-test evidence where available; preserve explicit unavailable/partial/unsupported coverage instead of reporting guessed bounds as a verified hit.
  • Preserve true overlay/occlusion, popup ownership, clipping/transforms and mismatch diagnostics; no QA-specific control-name workaround.
  • Actual native CLI/MCP positive and negative assertions agree with independent input counters/pixels on both fixture integrations.
  • Relevant focused/full validation and issue/commit handoff pass. No release.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:runtimeRuntime bridge, attach, inspection, or inputpriority:p1High priority release workstatus:doneCompleted and validatedtype:bugDefect or regression

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions