Uh oh!
There was an error while loading. Please reload this page.
Conversation
The Avalonia detail host drives the legacy DataTree as a hidden command-routing adapter, but Mediator message-target selection dropped invisible trees and slices from the colleague chain. Every handler defined on the tree itself (JumpToTool, Delete, Insert, Move Field) and every slice-level handler (the Writing Systems options list) was unreachable, so those menu items were inert or wrongly disabled. Keep an adapter-flagged tree and its slices in the colleague chain via IsExternalCommandAdapter, and clear the flag when the legacy view reactivates so a runtime UI flip does not widen legacy targeting. Target the adapter's CurrentSlice by object and field name: sibling rows share one MoForm, and handlers such as GetGuidForJumpToTool resolve the target from CurrentSlice.Flid. Add SetCurrentSliceForCommandTarget because ShowObject suspends ordinary CurrentSlice assignment until an idle callback, silently discarding the adapter's targeting, and add ClearCurrentSlice as the sanctioned no-target state. Exclude lazy placeholders via the new Slice.IsLazyPlaceholder instead of IsRealSlice, which for view-backed slices reports layout state and is false forever in a tree that is never shown. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
NUnit Tests 1 files 1 suites 9m 5s ⏱️ Results for commit fab7e11. |
codecov-commenter
commented
Aug 18, 2026
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@## main #1079 +/- ##
=========================================
+ Coverage 0 38.26% +38.26%
=========================================
Files 0 1499 +1499 Lines 0 350242 +350242 Branches 0 40259 +40259 =========================================
+ Hits 0 134028 +134028 - Misses 0 186992 +186992 - Partials 0 29222 +29222
🚀 New features to boost your workflow:
|
jasonleenaylor
left a comment
There was a problem hiding this comment.
I can see how this is tackling the issue but I have a question about the direction of this commit. I was expecting that we would be implementing more Pub/Sub messaging into the Avalonia DataTree and slices to trigger the updates to the winforms controls which currently track the style, and the writing system that is under the cursor. This covers all the message handling which the DataTree handled by turning the old WinForms data tree into an invisible adapter layer. That's cute and effective, but doesn't move us toward a WinForms free future as much as I'd like. I'm willing to keep going this direction for now if the alternative was considered and ruled out for some reason.
@jasonleenaylor reviewed 2 files and all commit messages, and made 1 comment.
Reviewable status: 2 of 10 files reviewed, all discussions resolved.
mark-sil
left a comment
There was a problem hiding this comment.
Thanks for your comment, I mis-understood the scope of what we were doing. I was thinking the invisible adapter layer was an intentional design decision since it was already functioning (just not functioning well). I thought the Jira ticket was about fixing the problems with the current design.
I think it makes sense to Publish from the Avalonia view and Subscribe in the WinForms (or other) code. The part that is not clear is the adapters interaction with the Mediator to support command execution. Would we still want to keep that portion of the current design? PubSub currently doesn't do anything with command execution.
@mark-sil made 1 comment.
Reviewable status: 2 of 10 files reviewed, all discussions resolved (waiting on jasonleenaylor).
jasonleenaylor
left a comment
There was a problem hiding this comment.
@jasonleenaylor reviewed 8 files and made 1 comment.
Reviewable status:complete! all files reviewed, all discussions resolved (waiting on mark-sil).
Uh oh!
There was an error while loading. Please reload this page.
) The Avalonia detail host drives the legacy DataTree as a hidden command-routing adapter, but Mediator message-target selection dropped invisible trees and slices from the colleague chain. Every handler defined on the tree itself (JumpToTool, Delete, Insert, Move Field) and every slice-level handler (the Writing Systems options list) was unreachable, so those menu items were inert or wrongly disabled. Keep an adapter-flagged tree and its slices in the colleague chain via IsExternalCommandAdapter, and clear the flag when the legacy view reactivates so a runtime UI flip does not widen legacy targeting. Target the adapter's CurrentSlice by object and field name: sibling rows share one MoForm, and handlers such as GetGuidForJumpToTool resolve the target from CurrentSlice.Flid. Add SetCurrentSliceForCommandTarget because ShowObject suspends ordinary CurrentSlice assignment until an idle callback, silently discarding the adapter's targeting, and add ClearCurrentSlice as the sanctioned no-target state. Exclude lazy placeholders via the new Slice.IsLazyPlaceholder instead of IsRealSlice, which for view-backed slices reports layout state and is false forever in a tree that is never shown. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
The Avalonia detail host drives the legacy DataTree as a hidden command-routing adapter, but Mediator message-target selection dropped invisible trees and slices from the colleague chain. Every handler defined on the tree itself (JumpToTool, Delete, Insert, Move Field) and every slice-level handler (the Writing Systems options list) was unreachable, so those menu items were inert or wrongly disabled.
Keep an adapter-flagged tree and its slices in the colleague chain via IsExternalCommandAdapter, and clear the flag when the legacy view reactivates so a runtime UI flip does not widen legacy targeting.
Target the adapter's CurrentSlice by object and field name: sibling rows share one MoForm, and handlers such as GetGuidForJumpToTool resolve the target from CurrentSlice.Flid. Add
SetCurrentSliceForCommandTarget because ShowObject suspends ordinary CurrentSlice assignment until an idle callback, silently discarding the adapter's targeting, and add ClearCurrentSlice as the sanctioned no-target state. Exclude lazy placeholders via the new Slice.IsLazyPlaceholder instead of IsRealSlice, which for view-backed slices reports layout state and is false forever in a tree that is never shown.
Note: Other changes are need to complete LT-22691.
This change is