From 56c9435bd51222d482f51337f51ee02c7de1aa4c Mon Sep 17 00:00:00 2001 From: Chaiwat Ekkaewnumchai Date: Fri, 26 Jun 2020 02:16:28 -0700 Subject: [PATCH] Fix Always Scrolling to Selected Element Summary: `forwardedRef` was always triggered, so it forced the container to scroll to the selected element. This diff stores element id so that it scrolls only once. Reviewed By: mweststrate Differential Revision: D22235284 fbshipit-source-id: 0eb7aaf2b484d345865db4da66d0f555dc314710 --- .../app/src/ui/components/elements-inspector/elements.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/desktop/app/src/ui/components/elements-inspector/elements.tsx b/desktop/app/src/ui/components/elements-inspector/elements.tsx index ebefd1d64..5e3e6b4f4 100644 --- a/desktop/app/src/ui/components/elements-inspector/elements.tsx +++ b/desktop/app/src/ui/components/elements-inspector/elements.tsx @@ -452,6 +452,7 @@ type ElementsState = { flatKeys: Array; flatElements: FlatElements; maxDepth: number; + scrolledElement: string | null | undefined; }; export type ContextMenuExtension = { @@ -470,6 +471,7 @@ export class Elements extends PureComponent { flatElements: [], flatKeys: [], maxDepth: 0, + scrolledElement: null, }; } @@ -678,11 +680,12 @@ export class Elements extends PureComponent { contextMenuExtensions={contextMenuExtensions || []} decorateRow={decorateRow} forwardedRef={ - selected == row.key + selected == row.key && this.state.scrolledElement !== selected ? (selectedRow) => { if (!selectedRow || !this._outerRef.current) { return; } + this.setState({scrolledElement: selected}); const outer = this._outerRef.current; if (outer.scrollTo) { outer.scrollTo(