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 PlateRenderer renderer;
|
||||||
private LayoutPart hoveredPart;
|
private LayoutPart hoveredPart;
|
||||||
private Point hoverPoint;
|
private Point hoverPoint;
|
||||||
|
private bool showTooltip;
|
||||||
|
private Timer hoverTimer;
|
||||||
|
|
||||||
public Box ActiveWorkArea
|
public Box ActiveWorkArea
|
||||||
{
|
{
|
||||||
@@ -99,6 +101,9 @@ namespace OpenNest.Controls
|
|||||||
};
|
};
|
||||||
redrawTimer.Elapsed += redrawTimer_Elapsed;
|
redrawTimer.Elapsed += redrawTimer_Elapsed;
|
||||||
|
|
||||||
|
hoverTimer = new Timer() { AutoReset = false, Interval = 1000 };
|
||||||
|
hoverTimer.Elapsed += (s, _) => { showTooltip = true; Invalidate(); };
|
||||||
|
|
||||||
SetStyle(
|
SetStyle(
|
||||||
ControlStyles.AllPaintingInWmPaint |
|
ControlStyles.AllPaintingInWmPaint |
|
||||||
ControlStyles.OptimizedDoubleBuffer |
|
ControlStyles.OptimizedDoubleBuffer |
|
||||||
@@ -369,12 +374,22 @@ namespace OpenNest.Controls
|
|||||||
if (hoveredPart != null)
|
if (hoveredPart != null)
|
||||||
{
|
{
|
||||||
hoverPoint = e.Location;
|
hoverPoint = e.Location;
|
||||||
|
showTooltip = false;
|
||||||
|
hoverTimer.Stop();
|
||||||
|
hoverTimer.Start();
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
hoverTimer.Stop();
|
||||||
|
showTooltip = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (hoveredPart != null)
|
else if (hoveredPart != null)
|
||||||
{
|
{
|
||||||
hoveredPart = null;
|
hoveredPart = null;
|
||||||
|
hoverTimer.Stop();
|
||||||
|
showTooltip = false;
|
||||||
Invalidate();
|
Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -487,7 +502,7 @@ namespace OpenNest.Controls
|
|||||||
|
|
||||||
base.OnPaint(e);
|
base.OnPaint(e);
|
||||||
|
|
||||||
if (hoveredPart != null)
|
if (hoveredPart != null && showTooltip)
|
||||||
{
|
{
|
||||||
e.Graphics.ResetTransform();
|
e.Graphics.ResetTransform();
|
||||||
var text = hoveredPart.BasePart.BaseDrawing.Name;
|
var text = hoveredPart.BasePart.BaseDrawing.Name;
|
||||||
|
|||||||
Reference in New Issue
Block a user