diff --git a/Assets/XCharts/CHANGELOG.md b/Assets/XCharts/CHANGELOG.md index 3ad165cc..b30e2e3a 100644 --- a/Assets/XCharts/CHANGELOG.md +++ b/Assets/XCharts/CHANGELOG.md @@ -1,6 +1,8 @@ # 更新日志 +* (2020.07.16) Fixed a problem with `Tooltip` that would also show up if it was blocked on top. #74 + 修复`Tooltip`在上层有遮挡还会显示的问题#74 * (2020.07.08) 优化`Scatter`类型`Serie`支持`Log`轴#70 * (2020.07.07) 修复`SerieLabel`位置错乱的问题 * (2020.07.07) 增加`Tooltip`的`offset`参数配置偏移 diff --git a/Assets/XCharts/Runtime/API/BaseGraph_API.cs b/Assets/XCharts/Runtime/API/BaseGraph_API.cs index 359c3e0f..22e4015f 100644 --- a/Assets/XCharts/Runtime/API/BaseGraph_API.cs +++ b/Assets/XCharts/Runtime/API/BaseGraph_API.cs @@ -45,10 +45,15 @@ namespace XCharts public Rect graphRect { get { return m_GraphRect; } } /// /// The postion of pointer. - /// 鼠标位置 + /// 鼠标位置。 /// public Vector2 pointerPos { get; protected set; } /// + /// Whether the mouse pointer is in the chart. + /// 鼠标是否在图表内。 + /// + public bool isPointerInChart { get; protected set; } + /// /// 警告信息。 /// public string warningInfo { get; protected set; } diff --git a/Assets/XCharts/Runtime/Internal/BaseChart.cs b/Assets/XCharts/Runtime/Internal/BaseChart.cs index b55f0262..fdbfb046 100644 --- a/Assets/XCharts/Runtime/Internal/BaseChart.cs +++ b/Assets/XCharts/Runtime/Internal/BaseChart.cs @@ -543,7 +543,7 @@ namespace XCharts private void CheckTooltip() { - if (!m_Tooltip.show || !m_Tooltip.runtimeInited) + if (!isPointerInChart || !m_Tooltip.show || !m_Tooltip.runtimeInited) { if (m_Tooltip.IsActive()) { diff --git a/Assets/XCharts/Runtime/Internal/BaseGraphic.cs b/Assets/XCharts/Runtime/Internal/BaseGraphic.cs index 6ab228d4..82fe8e5d 100644 --- a/Assets/XCharts/Runtime/Internal/BaseGraphic.cs +++ b/Assets/XCharts/Runtime/Internal/BaseGraphic.cs @@ -160,6 +160,7 @@ namespace XCharts if (m_ForceOpenRaycastTarget) raycastTarget = true; if (IsNeedCheckPointerPos()) { + raycastTarget = true; if (canvas == null) return; Vector2 local; var cam = canvas.renderMode == RenderMode.ScreenSpaceOverlay ? null : canvas.worldCamera; @@ -173,6 +174,10 @@ namespace XCharts pointerPos = local; } } + else + { + raycastTarget = false; + } } protected virtual bool IsNeedCheckPointerPos() @@ -215,6 +220,7 @@ namespace XCharts public virtual void OnPointerClick(PointerEventData eventData) { + Debug.LogError("click"); if (m_OnPointerClick != null) m_OnPointerClick(this, eventData); } @@ -230,11 +236,13 @@ namespace XCharts public virtual void OnPointerEnter(PointerEventData eventData) { + isPointerInChart = true; if (m_OnPointerEnter != null) m_OnPointerEnter(this, eventData); } public virtual void OnPointerExit(PointerEventData eventData) { + isPointerInChart = false; if (m_OnPointerExit != null) m_OnPointerExit(this, eventData); }