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) <noreply@anthropic.com>
This commit is contained in:
2026-04-07 16:12:02 -04:00
parent 41c20eaf75
commit 30f1008fa9

View File

@@ -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;