diff options
Diffstat (limited to 'packages/app/src/components/session/session-context-tab.tsx')
| -rw-r--r-- | packages/app/src/components/session/session-context-tab.tsx | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/packages/app/src/components/session/session-context-tab.tsx b/packages/app/src/components/session/session-context-tab.tsx index b41578910..57648c380 100644 --- a/packages/app/src/components/session/session-context-tab.tsx +++ b/packages/app/src/components/session/session-context-tab.tsx @@ -282,7 +282,9 @@ export function SessionContextTab(props: SessionContextTabProps) { } }) - return <Code file={file()} overflow="wrap" class="select-text" /> + return ( + <Code file={file()} overflow="wrap" class="select-text" onRendered={() => requestAnimationFrame(restoreScroll)} /> + ) } function RawMessage(msgProps: { message: Message }) { @@ -314,19 +316,13 @@ export function SessionContextTab(props: SessionContextTabProps) { let frame: number | undefined let pending: { x: number; y: number } | undefined - const restoreScroll = (retries = 0) => { + const restoreScroll = () => { const el = scroll if (!el) return const s = props.view()?.scroll("context") if (!s) return - // Wait for content to be scrollable - content may not have rendered yet - if (el.scrollHeight <= el.clientHeight && retries < 10) { - requestAnimationFrame(() => restoreScroll(retries + 1)) - return - } - if (el.scrollTop !== s.y) el.scrollTop = s.y if (el.scrollLeft !== s.x) el.scrollLeft = s.x } |
