@@ -583,17 +583,18 @@ export default function ContinuousView({
583583 // eslint-disable-next-line react-hooks/exhaustive-deps
584584 } , [ committedActiveSegmentId ] ) ;
585585
586- // Re-center the focused group when a view option toggles. Toggling `simplifyPhrases` changes
587- // the strip's layout, so the previously-centered group may drift off-center; snap it back into
588- // view. `hideInactiveLinkButtons` is excluded: inactive link slots now reserve their space even
589- // when hidden (`opacity: 0`; clickability is guarded at the button level), so toggling it does
590- // not shift the layout.
586+ // Re-center the focused group when a view option toggles. Toggling `simplifyPhrases` or
587+ // `showMorphology` changes the strip's layout (morpheme rows can widen phrase boxes), so the
588+ // previously-centered group may drift off-center; snap it back into view.
589+ // `hideInactiveLinkButtons` is excluded: inactive link slots now reserve their space even when
590+ // hidden (`opacity: 0`; clickability is guarded at the button level), so toggling it does not
591+ // shift the layout.
591592 useEffect ( ( ) => {
592593 centerGroup ( focusPhraseIndex , 'auto' ) ;
593594 // focusPhraseIndex is intentionally excluded: it has its own scroll effect above. This effect
594595 // only re-centers in response to layout-affecting option toggles. centerGroup is stable.
595596 // eslint-disable-next-line react-hooks/exhaustive-deps
596- } , [ simplifyPhrases ] ) ;
597+ } , [ simplifyPhrases , showMorphology ] ) ;
597598
598599 // When entering edit or confirm-unlink mode, smooth-scroll to the first group of the active
599600 // phrase by notifying the parent of the new focused token. Scroll then follows automatically
0 commit comments