fix: guard crosshair move handler against re-entrant recursion from applyOptions
This commit is contained in:
parent
0ba3592679
commit
148fe22cd7
1 changed files with 34 additions and 27 deletions
|
|
@ -976,7 +976,9 @@ const CandleChart = forwardRef<CandleChartHandle, CandleChartProps>(
|
||||||
if (!drawingState && !dragState) return;
|
if (!drawingState && !dragState) return;
|
||||||
if (drawingState && !previewPrimitiveRef.current) return;
|
if (drawingState && !previewPrimitiveRef.current) return;
|
||||||
|
|
||||||
|
let isUpdating = false;
|
||||||
const handleCrosshairMove = (param: any) => {
|
const handleCrosshairMove = (param: any) => {
|
||||||
|
if (isUpdating) return;
|
||||||
if (!param.point) return;
|
if (!param.point) return;
|
||||||
|
|
||||||
const time = chartRef.current!.timeScale().coordinateToTime(param.point.x);
|
const time = chartRef.current!.timeScale().coordinateToTime(param.point.x);
|
||||||
|
|
@ -986,6 +988,8 @@ const CandleChart = forwardRef<CandleChartHandle, CandleChartProps>(
|
||||||
|
|
||||||
const currentPoint = { time, price };
|
const currentPoint = { time, price };
|
||||||
|
|
||||||
|
isUpdating = true;
|
||||||
|
try {
|
||||||
// Update preview primitive endpoint during drawing
|
// Update preview primitive endpoint during drawing
|
||||||
if (drawingState && previewPrimitiveRef.current) {
|
if (drawingState && previewPrimitiveRef.current) {
|
||||||
if (previewPrimitiveRef.current instanceof TrendLine) {
|
if (previewPrimitiveRef.current instanceof TrendLine) {
|
||||||
|
|
@ -1017,6 +1021,9 @@ const CandleChart = forwardRef<CandleChartHandle, CandleChartProps>(
|
||||||
seriesRef.current!.applyOptions({});
|
seriesRef.current!.applyOptions({});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
|
isUpdating = false;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
chartRef.current.subscribeCrosshairMove(handleCrosshairMove);
|
chartRef.current.subscribeCrosshairMove(handleCrosshairMove);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue