detectOffsetOnRenderFluentFragment function
CursorOffset?
detectOffsetOnRenderFluentFragment(
- RenderFluentFragment fragment,
- RenderBox renderBox,
- Offset localPosition,
- BuildContext context,
- Widget widget,
Implementation
CursorOffset? detectOffsetOnRenderFluentFragment(RenderFluentFragment fragment, RenderBox renderBox, Offset localPosition, BuildContext context, Widget widget) {
final fragmentBox = fragment;
final localInFragment = fragmentBox.globalToLocal(
renderBox.localToGlobal(localPosition),
);
final localOffset = fragment.getOffsetForPosition(localInFragment);
// Walk up the render tree to find the top-level RenderFluentNode
final topLevel = _findTopLevelRenderNodeRecursive(fragment);
if (topLevel != null) {
final globalOffset = _computeGlobalOffset(topLevel.node, fragment.node, localOffset);
return CursorOffset(
id: topLevel.id,
offset: globalOffset,
);
}
// Fallback: use widget's node (may be Link-relative for nested structures)
return CursorOffset(
id: (widget as FluentParagraphWidget).node.id,
offset: absoluteOffset(fragment, localOffset, widget),
);
}