diff --git a/ivette/src/frama-c/kernel/ASTinfo.tsx b/ivette/src/frama-c/kernel/ASTinfo.tsx index 4db1300e6262d71d0729d7b0ca0c99c5ab9ceea7..8eeff601e8c0a51ecd5b6460654bccddf4ce9e49 100644 --- a/ivette/src/frama-c/kernel/ASTinfo.tsx +++ b/ivette/src/frama-c/kernel/ASTinfo.tsx @@ -318,6 +318,10 @@ export default function ASTinfo(): JSX.Element { States.MetaSelection.on(pinMarker); return () => States.MetaSelection.off(pinMarker); }, [pinMarker]); + const scrollTarget = React.useRef<HTMLInputElement>(null); + React.useEffect(() => { + scrollTarget.current?.scrollIntoView({ block: 'nearest' }); + }); // Rendering const renderMark = (mark: Mark): JSX.Element | null => { const { marker } = mark; @@ -331,7 +335,8 @@ export default function ASTinfo(): JSX.Element { const onSelect = () => void States.setSelection(mark); const onHover = (h: boolean): void => States.setHovered(h ? mark : undefined); - return ( + const ref = isHovered ? scrollTarget : undefined; + const markInfo = <MarkInfos key={marker} marker={marker} @@ -344,8 +349,8 @@ export default function ASTinfo(): JSX.Element { onRemove={onRemove} onHover={onHover} onSelect={onSelect} - /> - ); + />; + return <div ref={ref}>{markInfo}</div>; }; return ( <>