Skip to content

Commit

Permalink
Clean up code and add nullability
Browse files Browse the repository at this point in the history
  • Loading branch information
rachelkang committed Aug 24, 2022
1 parent fb50c2d commit 0520381
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 77 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,6 @@ public FrameworkElement? Control
{
_control.Tapped -= HandleTapped;
_control.DoubleTapped -= HandleDoubleTapped;
//_control.PointerEntered -= HandlePointerEventExecuted;
//_control.PointerExited -= HandlePointerEventExecuted;
}

_control = value;
Expand Down Expand Up @@ -357,8 +355,6 @@ protected virtual void Dispose(bool disposing)
{
_control.Tapped -= HandleTapped;
_control.DoubleTapped -= HandleDoubleTapped;
//_control.PointerEntered -= HandlePointerEventExecuted;
//_control.PointerExited -= HandlePointerEventExecuted;
}

Control = null;
Expand Down Expand Up @@ -519,57 +515,16 @@ void OnPointerReleased(object sender, PointerRoutedEventArgs e)
PanComplete(true);
}

void OnPgrPointerEntered(object sender, PointerRoutedEventArgs e)
{
var view = Element as View;
if (view == null)
return;

var pointerPoint = e.GetCurrentPoint(Control);
var children = (view as IGestureController)?.GetChildElements(new Point(pointerPoint.Position.X, pointerPoint.Position.Y));

if (children != null)
foreach (var recognizer in children.GetChildGesturesFor<PointerGestureRecognizer>())
{
recognizer.SendPointerEntered(view);
}

if (e.Handled)
return;

IEnumerable<PointerGestureRecognizer> pointerGestures = view.GestureRecognizers.GetGesturesFor<PointerGestureRecognizer>();
foreach (var recognizer in pointerGestures)
{
recognizer.SendPointerEntered(view);
}
}
void OnPgrPointerEntered(object sender, PointerRoutedEventArgs e)
=> HandlePgrPointerEvent(e, (view, recognizer) => recognizer.SendPointerEntered(view));

void OnPgrPointerExited(object sender, PointerRoutedEventArgs e)
{
var view = Element as View;
if (view == null)
return;

var pointerPoint = e.GetCurrentPoint(Control);
var children = (view as IGestureController)?.GetChildElements(new Point(pointerPoint.Position.X, pointerPoint.Position.Y));

if (children != null)
foreach (var recognizer in children.GetChildGesturesFor<PointerGestureRecognizer>())
{
recognizer.SendPointerExited(view);
}

if (e.Handled)
return;

IEnumerable<PointerGestureRecognizer> pointerGestures = view.GestureRecognizers.GetGesturesFor<PointerGestureRecognizer>();
foreach (var recognizer in pointerGestures)
{
recognizer.SendPointerExited(view);
}
}
=> HandlePgrPointerEvent(e, (view, recognizer) => recognizer.SendPointerExited(view));

void OnPgrPointerMoved(object sender, PointerRoutedEventArgs e)
=> HandlePgrPointerEvent(e, (view, recognizer) => recognizer.SendPointerMoved(view));

private void HandlePgrPointerEvent(PointerRoutedEventArgs e, Action<View, PointerGestureRecognizer> SendPointerEvent)
{
var view = Element as View;
if (view == null)
Expand All @@ -579,18 +534,20 @@ void OnPgrPointerMoved(object sender, PointerRoutedEventArgs e)
var children = (view as IGestureController)?.GetChildElements(new Point(pointerPoint.Position.X, pointerPoint.Position.Y));

if (children != null)
{
foreach (var recognizer in children.GetChildGesturesFor<PointerGestureRecognizer>())
{
recognizer.SendPointerMoved(view);
SendPointerEvent.Invoke(view, recognizer);
}
}

if (e.Handled)
return;

IEnumerable<PointerGestureRecognizer> pointerGestures = view.GestureRecognizers.GetGesturesFor<PointerGestureRecognizer>();
var pointerGestures = view.GestureRecognizers.GetGesturesFor<PointerGestureRecognizer>();
foreach (var recognizer in pointerGestures)
{
recognizer.SendPointerMoved(view);
SendPointerEvent.Invoke(view, recognizer);
}
}

Expand Down Expand Up @@ -796,10 +753,5 @@ void HandleDoubleTapped(object sender, DoubleTappedRoutedEventArgs doubleTappedR
{
doubleTappedRoutedEventArgs.Handled = true;
}

//void HandlePointerEventExecuted(object sender, PointerRoutedEventArgs pointerRoutedEventArgs)
//{
// pointerRoutedEventArgs.Handled = true;
//}
}
}
26 changes: 8 additions & 18 deletions src/Controls/src/Core/PointerGestureRecognizer.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#nullable enable
using System;
using System.ComponentModel;
using Microsoft.Maui.Graphics;
using System.Windows.Input;

namespace Microsoft.Maui.Controls
Expand All @@ -25,21 +27,9 @@ public PointerGestureRecognizer()
{
}

//public ICommand Command
//{
// get { return (ICommand)GetValue(CommandProperty); }
// set { SetValue(CommandProperty, value); }
//}

//public object CommandParameter
//{
// get { return GetValue(CommandParameterProperty); }
// set { SetValue(CommandParameterProperty, value); }
//}

public event EventHandler<PointerEventArgs> PointerEntered;
public event EventHandler<PointerEventArgs> PointerExited;
public event EventHandler<PointerEventArgs> PointerMoved;
public event EventHandler<PointerEventArgs>? PointerEntered;
public event EventHandler<PointerEventArgs>? PointerExited;
public event EventHandler<PointerEventArgs>? PointerMoved;

PointerEventArgs args = new PointerEventArgs();

Expand Down Expand Up @@ -88,7 +78,7 @@ internal void SendPointerEntered(View sender)
if (cmd != null && cmd.CanExecute(PointerEnteredCommandParameter))
cmd.Execute(PointerEnteredCommandParameter);

EventHandler<PointerEventArgs> handler = PointerEntered;
EventHandler<PointerEventArgs>? handler = PointerEntered;
if (handler != null)
handler?.Invoke(sender, args);
}
Expand All @@ -99,7 +89,7 @@ internal void SendPointerExited(View sender)
if (cmd != null && cmd.CanExecute(PointerExitedCommandParameter))
cmd.Execute(PointerExitedCommandParameter);

EventHandler<PointerEventArgs> handler = PointerExited;
EventHandler<PointerEventArgs>? handler = PointerExited;
if (handler != null)
handler?.Invoke(sender, args);
}
Expand All @@ -110,7 +100,7 @@ internal void SendPointerMoved(View sender)
if (cmd != null && cmd.CanExecute(PointerMovedCommandParameter))
cmd.Execute(PointerMovedCommandParameter);

EventHandler<PointerEventArgs> handler = PointerMoved;
EventHandler<PointerEventArgs>? handler = PointerMoved;
if (handler != null)
handler?.Invoke(sender, args);
}
Expand Down

0 comments on commit 0520381

Please sign in to comment.