Repository navigation
hover: send the move through the window's input, so a declared ToolTip.Tip opens (#1265) - #1304
Merged
Merged
Conversation
…p.Tip opens (#1265) hover raised PointerEntered/PointerMoved on the element, which Avalonia's tooltip service never sees: it handles raw input as the input manager processes it. The move now goes through TopLevel.PlatformImpl.Input with the window's input root and a raw pointer event, each reached by reflection since 12.0.4 hides them, so it is hit-tested and routed as a real move. The tool waits for the window's next frame first, as click does. When the target does not see the move, or a member is unreachable, the move is raised on the target as before and the reply says why. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…1265) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#1265 review) - The move's hit is what the window routed it to. A control drawn over the target is reported by name with its tip; a disabled target is said to be disabled. Only a move that hits nothing, or an Avalonia whose members cannot be reached, falls back to raising on the control. - One mouse device for every hover, and the code editor forgets its hover on pointer exit: a second hover at the same point opened no quick info. - The tool ends the hover with a raw LeaveWindow, so the tip does not cover the next click. - Reflection lookups live in their own class, so a changed Avalonia fails only this; what a handler throws is no longer swallowed and retried. - The live run is #1303; the gap stays open, narrowed, until it is done. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1265. The live measurement is split out as #1303, and the gaps doc keeps a narrowed entry 7 until it is done.
What changed
hovernow sends its mouse move through the window's own input, the way the platform delivers a real one. Previously it raisedPointerEntered/PointerMovedon the element, which Avalonia's tooltip service never sees, so a declaredToolTip.Tipnever opened.How the move is sent:
TopLevel.PlatformImpl.Input, with the window's non-public input root, a raw pointer event and one mouse device shared by every hover.clickdoes.What the reply says:
hovered (60, 20) through the window's input.After the watch:
LeaveWindow), which closes the tip, so the tip doesn't cover the next click.Review
One adversarial reviewer, working headless with probes against both this branch and
main.LeaveWindow. Tested, including that a click reaches its target afterwards.dap-adapter-smoke.mdline, the reply not naming the route.Mutation-checked: shared device, editor exit reset, the reached/covered decision, the disabled case and
EndHover. Each mutant fails a test.Not covered by any test: the tool-level frame wait, the
EndHovercall in the tool, and the declared-tip notes. No test project referencesHexIDE.Desktop. These parts were read from code, not run.Full suites: HexIDE.Tests 3086 passed, HexIDE.Integration.Tests 1459 passed.
🤖 Generated with Claude Code