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 && !previewPrimitiveRef.current) return;
|
||||
|
||||
let isUpdating = false;
|
||||
const handleCrosshairMove = (param: any) => {
|
||||
if (isUpdating) return;
|
||||
if (!param.point) return;
|
||||
|
||||
const time = chartRef.current!.timeScale().coordinateToTime(param.point.x);
|
||||
|
|
@ -986,6 +988,8 @@ const CandleChart = forwardRef<CandleChartHandle, CandleChartProps>(
|
|||
|
||||
const currentPoint = { time, price };
|
||||
|
||||
isUpdating = true;
|
||||
try {
|
||||
// Update preview primitive endpoint during drawing
|
||||
if (drawingState && previewPrimitiveRef.current) {
|
||||
if (previewPrimitiveRef.current instanceof TrendLine) {
|
||||
|
|
@ -1017,6 +1021,9 @@ const CandleChart = forwardRef<CandleChartHandle, CandleChartProps>(
|
|||
seriesRef.current!.applyOptions({});
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
isUpdating = false;
|
||||
}
|
||||
};
|
||||
|
||||
chartRef.current.subscribeCrosshairMove(handleCrosshairMove);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue