mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
64 lines
No EOL
1.7 KiB
C#
64 lines
No EOL
1.7 KiB
C#
using Avalonia;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Input;
|
|
using Mesen.Debugger.Controls;
|
|
using Mesen.Utilities;
|
|
|
|
namespace Mesen.Debugger.ViewModels
|
|
{
|
|
public interface IMouseOverViewerModel
|
|
{
|
|
DynamicTooltip? ViewerTooltip { get; set; }
|
|
PixelPoint? ViewerMousePos { get; set; }
|
|
|
|
DynamicTooltip? GetPreviewPanel(PixelPoint p, DynamicTooltip? tooltipToUpdate);
|
|
}
|
|
|
|
public class MouseViewerModelEvents
|
|
{
|
|
private IMouseOverViewerModel _model;
|
|
private Window _wnd;
|
|
|
|
public static void InitEvents(IMouseOverViewerModel model, Window wnd, PictureViewer viewer)
|
|
{
|
|
new MouseViewerModelEvents(model, wnd, viewer);
|
|
}
|
|
|
|
private MouseViewerModelEvents(IMouseOverViewerModel model, Window wnd, PictureViewer viewer)
|
|
{
|
|
_model = model;
|
|
_wnd = wnd;
|
|
viewer.PointerMoved += PicViewer_PointerMoved;
|
|
viewer.PointerExited += PicViewer_PointerExited;
|
|
}
|
|
|
|
private void PicViewer_PointerMoved(object? sender, PointerEventArgs e)
|
|
{
|
|
if(sender is PictureViewer viewer) {
|
|
PixelPoint? point = viewer.GetGridPointFromMousePoint(e.GetCurrentPoint(viewer).Position);
|
|
if(point == _model.ViewerMousePos) {
|
|
return;
|
|
}
|
|
_model.ViewerMousePos = point;
|
|
|
|
_model.ViewerTooltip = point == null ? null : _model.GetPreviewPanel(point.Value, _model.ViewerTooltip);
|
|
|
|
if(_model.ViewerTooltip != null) {
|
|
TooltipHelper.ShowTooltip(viewer, _model.ViewerTooltip, 15);
|
|
} else {
|
|
_model.ViewerTooltip = null;
|
|
TooltipHelper.HideTooltip(viewer);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void PicViewer_PointerExited(object? sender, PointerEventArgs e)
|
|
{
|
|
if(sender is PictureViewer viewer) {
|
|
TooltipHelper.HideTooltip(viewer);
|
|
}
|
|
_model.ViewerTooltip = null;
|
|
_model.ViewerMousePos = null;
|
|
}
|
|
}
|
|
} |