修复Tooltip在对数轴时指示不准确的问题

This commit is contained in:
monitor1394
2023-11-28 10:04:15 +08:00
parent 7ea260b986
commit 0a19b2a6cc
8 changed files with 81 additions and 22 deletions

View File

@@ -18,6 +18,11 @@ namespace XCharts.Runtime
InitTooltip(component);
}
public override void BeforceSerieUpdate()
{
UpdateTooltipData(component);
}
public override void Update()
{
UpdateTooltip(component);
@@ -86,8 +91,9 @@ namespace XCharts.Runtime
}
}
private void UpdateTooltip(Tooltip tooltip)
private void UpdateTooltipData(Tooltip tooltip)
{
showTooltip = false;
if (tooltip.trigger == Tooltip.Trigger.None) return;
if (!chart.isPointerInChart || !tooltip.show)
{
@@ -98,7 +104,28 @@ namespace XCharts.Runtime
}
return;
}
var showTooltip = false;
for (int i = chart.series.Count - 1; i >= 0; i--)
{
var serie = chart.series[i];
if (!(serie is INeedSerieContainer))
{
showTooltip = true;
return;
}
}
containerSeries = ListPool<Serie>.Get();
UpdatePointerContainerAndSeriesAndTooltip(tooltip, ref containerSeries);
if (containerSeries.Count > 0)
{
showTooltip = true;
}
}
private bool showTooltip;
private List<Serie> containerSeries;
private void UpdateTooltip(Tooltip tooltip)
{
if (!showTooltip) return;
for (int i = chart.series.Count - 1; i >= 0; i--)
{
var serie = chart.series[i];
@@ -106,20 +133,19 @@ namespace XCharts.Runtime
{
if (SetSerieTooltip(tooltip, serie))
{
showTooltip = true;
chart.RefreshTopPainter();
return;
}
}
}
var containerSeries = ListPool<Serie>.Get();
UpdatePointerContainerAndSeriesAndTooltip(tooltip, ref containerSeries);
if (containerSeries.Count > 0)
if (containerSeries != null)
{
if (SetSerieTooltip(tooltip, containerSeries))
showTooltip = true;
if (!SetSerieTooltip(tooltip, containerSeries))
{
showTooltip = false;
}
ListPool<Serie>.Release(containerSeries);
}
ListPool<Serie>.Release(containerSeries);
if (!showTooltip)
{
if (tooltip.context.type == Tooltip.Type.Corss && m_PointerContainer != null && m_PointerContainer.IsPointerEnter())
@@ -138,10 +164,6 @@ namespace XCharts.Runtime
}
}
private void UpdateTooltipTypeAndTrigger(Tooltip tootip)
{
}
private void UpdateTooltipIndicatorLabelText(Tooltip tooltip)
{
if (!tooltip.show) return;