From 30f1008fa9f507e1701a8725df4643fc6f954532 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Tue, 7 Apr 2026 16:12:02 -0400 Subject: [PATCH] feat: show hover tooltip only after 1000ms of mouse stillness Add a hoverTimer that restarts on each mouse move over a part. Tooltip only renders after the timer fires, hiding while the cursor is in motion. Co-Authored-By: Claude Opus 4.6 (1M context) --- OpenNest/Controls/PlateView.cs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/OpenNest/Controls/PlateView.cs b/OpenNest/Controls/PlateView.cs index d2c8413..c8be6ca 100644 --- a/OpenNest/Controls/PlateView.cs +++ b/OpenNest/Controls/PlateView.cs @@ -36,6 +36,8 @@ namespace OpenNest.Controls private PlateRenderer renderer; private LayoutPart hoveredPart; private Point hoverPoint; + private bool showTooltip; + private Timer hoverTimer; public Box ActiveWorkArea { @@ -99,6 +101,9 @@ namespace OpenNest.Controls }; redrawTimer.Elapsed += redrawTimer_Elapsed; + hoverTimer = new Timer() { AutoReset = false, Interval = 1000 }; + hoverTimer.Elapsed += (s, _) => { showTooltip = true; Invalidate(); }; + SetStyle( ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | @@ -369,12 +374,22 @@ namespace OpenNest.Controls if (hoveredPart != null) { hoverPoint = e.Location; + showTooltip = false; + hoverTimer.Stop(); + hoverTimer.Start(); Invalidate(); } + else + { + hoverTimer.Stop(); + showTooltip = false; + } } else if (hoveredPart != null) { hoveredPart = null; + hoverTimer.Stop(); + showTooltip = false; Invalidate(); } @@ -487,7 +502,7 @@ namespace OpenNest.Controls base.OnPaint(e); - if (hoveredPart != null) + if (hoveredPart != null && showTooltip) { e.Graphics.ResetTransform(); var text = hoveredPart.BasePart.BaseDrawing.Name;