From 7218e95ff08729aa05b4d9b7c0e4f6b2f3503f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr> Date: Fri, 25 Mar 2022 14:59:37 +0100 Subject: [PATCH] [ivette] ASTinfo: scrolls to the hovered marker info. --- ivette/src/frama-c/kernel/ASTinfo.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ivette/src/frama-c/kernel/ASTinfo.tsx b/ivette/src/frama-c/kernel/ASTinfo.tsx index 4db1300e626..8eeff601e8c 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 ( <> -- GitLab