106 lines
2.5 KiB
C#
106 lines
2.5 KiB
C#
|
|
// Licensed to the .NET Foundation under one or more agreements.
|
||
|
|
// The .NET Foundation licenses this file to you under the MIT license.
|
||
|
|
|
||
|
|
using Microsoft.Maui.Graphics;
|
||
|
|
using Microsoft.Maui.Platform.Linux.Handlers;
|
||
|
|
using Microsoft.Maui.Platform.Linux.Services;
|
||
|
|
|
||
|
|
namespace Microsoft.Maui.Platform;
|
||
|
|
|
||
|
|
public abstract partial class SkiaView
|
||
|
|
{
|
||
|
|
#region Input Events
|
||
|
|
|
||
|
|
public virtual void OnPointerEntered(PointerEventArgs e)
|
||
|
|
{
|
||
|
|
if (MauiView != null)
|
||
|
|
{
|
||
|
|
GestureManager.ProcessPointerEntered(MauiView, e.X, e.Y);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public virtual void OnPointerExited(PointerEventArgs e)
|
||
|
|
{
|
||
|
|
if (MauiView != null)
|
||
|
|
{
|
||
|
|
GestureManager.ProcessPointerExited(MauiView, e.X, e.Y);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public virtual void OnPointerMoved(PointerEventArgs e)
|
||
|
|
{
|
||
|
|
if (MauiView != null)
|
||
|
|
{
|
||
|
|
GestureManager.ProcessPointerMove(MauiView, e.X, e.Y);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public virtual void OnPointerPressed(PointerEventArgs e)
|
||
|
|
{
|
||
|
|
if (MauiView != null)
|
||
|
|
{
|
||
|
|
GestureManager.ProcessPointerDown(MauiView, e.X, e.Y);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public virtual void OnPointerReleased(PointerEventArgs e)
|
||
|
|
{
|
||
|
|
DiagnosticLog.Debug("SkiaView", $"OnPointerReleased on {GetType().Name}, MauiView={MauiView?.GetType().Name ?? "null"}");
|
||
|
|
if (MauiView != null)
|
||
|
|
{
|
||
|
|
GestureManager.ProcessPointerUp(MauiView, e.X, e.Y);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public virtual void OnScroll(ScrollEventArgs e) { }
|
||
|
|
public virtual void OnKeyDown(KeyEventArgs e) { }
|
||
|
|
public virtual void OnKeyUp(KeyEventArgs e) { }
|
||
|
|
public virtual void OnTextInput(TextInputEventArgs e) { }
|
||
|
|
|
||
|
|
public virtual void OnFocusGained()
|
||
|
|
{
|
||
|
|
IsFocused = true;
|
||
|
|
Invalidate();
|
||
|
|
}
|
||
|
|
|
||
|
|
public virtual void OnFocusLost()
|
||
|
|
{
|
||
|
|
IsFocused = false;
|
||
|
|
Invalidate();
|
||
|
|
}
|
||
|
|
|
||
|
|
#endregion
|
||
|
|
|
||
|
|
#region IDisposable
|
||
|
|
|
||
|
|
protected virtual void Dispose(bool disposing)
|
||
|
|
{
|
||
|
|
if (!_disposed)
|
||
|
|
{
|
||
|
|
if (disposing)
|
||
|
|
{
|
||
|
|
// Clean up gesture tracking to prevent memory leaks
|
||
|
|
if (MauiView != null)
|
||
|
|
{
|
||
|
|
GestureManager.CleanupView(MauiView);
|
||
|
|
}
|
||
|
|
|
||
|
|
foreach (var child in _children)
|
||
|
|
{
|
||
|
|
child.Dispose();
|
||
|
|
}
|
||
|
|
_children.Clear();
|
||
|
|
}
|
||
|
|
_disposed = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public void Dispose()
|
||
|
|
{
|
||
|
|
Dispose(true);
|
||
|
|
GC.SuppressFinalize(this);
|
||
|
|
}
|
||
|
|
|
||
|
|
#endregion
|
||
|
|
}
|