Files
MesenCE/UI/Debugger/ViewModels/IMouseOverViewerModel.cs
SourMesen e391fd8f9a Code: Add auto-formatting rules for C++ (clang-format) and enforce in CI via "clang-format" and "dotnet format" (#78)
* Code: Add auto-formatting rules for C++ projects (clang-format) and enforce code style via "clang-format" and "dotnet format"

* fix ui format warnings
2026-04-30 06:03:55 -07:00

65 lines
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;
}
}
}