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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user