Index: NoesisInstance.cpp
@@ -1589,18 +1596,22 @@
 
 		if (IsGamepadSimulatedClick)
 		{
-			XamlView->KeyDown(Noesis::Key_GamepadAccept);
-			return FReply::Handled().PreventThrottling().CaptureMouse(MyWidget.Pin().ToSharedRef());
+			bool Handled = XamlView->KeyDown(Noesis::Key_GamepadAccept);
+
+			if (Handled)
+			{
+				return FReply::Handled().PreventThrottling().CaptureMouse(MyWidget.Pin().ToSharedRef());
+			}
 		}
 		else
 		{
 			FVector2D Position = MyGeometry.AbsoluteToLocal(MouseEvent.GetScreenSpacePosition()) * MyGeometry.Scale;
-			bool hit = HitTest(Position);
+			bool Hit = HitTest(Position);
 
 			Noesis::MouseButton MouseButton = GetNoesisMouseButton(MouseEvent.GetEffectingButton());
-			XamlView->MouseButtonDown(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), MouseButton);
+			bool Handled = XamlView->MouseButtonDown(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), MouseButton);
 
-			if (hit)
+			if (Handled && Hit)
 			{
 				return FReply::Handled().PreventThrottling();
 			}
@@ -1618,18 +1629,22 @@
 		if (IsGamepadSimulatedClick)
 		{
 			IsGamepadSimulatedClick = false;
-			XamlView->KeyUp(Noesis::Key_GamepadAccept);
-			return FReply::Handled().PreventThrottling();
+			bool Handled = XamlView->KeyUp(Noesis::Key_GamepadAccept);
+
+			if (Handled)
+			{
+				return FReply::Handled().PreventThrottling();
+			}
 		}
 		else
 		{
 			FVector2D Position = MyGeometry.AbsoluteToLocal(MouseEvent.GetScreenSpacePosition()) * MyGeometry.Scale;
-			bool hit = HitTest(Position);
+			bool Hit = HitTest(Position);
 
 			Noesis::MouseButton MouseButton = GetNoesisMouseButton(MouseEvent.GetEffectingButton());
-			XamlView->MouseButtonUp(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), MouseButton);
+			bool Handled = XamlView->MouseButtonUp(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), MouseButton);
 
-			if (hit)
+			if (Handled && Hit)
 			{
 				return FReply::Handled().PreventThrottling();
 			}
@@ -1645,11 +1660,11 @@
 	if (EnableMouse && XamlView && !MouseEvent.GetCursorDelta().IsZero()) // Ignore synthetic events that are messing with the tooltip code.
 	{
 		FVector2D Position = MyGeometry.AbsoluteToLocal(MouseEvent.GetScreenSpacePosition()) * MyGeometry.Scale;
-		bool hit = HitTest(Position);
+		bool Hit = HitTest(Position);
 
-		XamlView->MouseMove(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y));
+		bool Handled = XamlView->MouseMove(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y));
 
-		if (hit)
+		if (Handled && Hit)
 		{
 			return FReply::Handled().PreventThrottling();
 		}
@@ -1664,12 +1679,12 @@
 	if (EnableMouse && XamlView)
 	{
 		FVector2D Position = MyGeometry.AbsoluteToLocal(MouseEvent.GetScreenSpacePosition()) * MyGeometry.Scale;
-		bool hit = HitTest(Position);
+		bool Hit = HitTest(Position);
 
 		float WheelDelta = MouseEvent.GetWheelDelta();
-		XamlView->MouseWheel(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), FPlatformMath::RoundToInt(WheelDelta * 120.f));
+		bool Handled = XamlView->MouseWheel(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), FPlatformMath::RoundToInt(WheelDelta * 120.f));
 
-		if (hit)
+		if (Handled && Hit)
 		{
 			return FReply::Handled().PreventThrottling();
 		}
@@ -1684,12 +1699,12 @@
 	if (EnableTouch && XamlView)
 	{
 		FVector2D Position = MyGeometry.AbsoluteToLocal(TouchEvent.GetScreenSpacePosition()) * MyGeometry.Scale;
-		bool hit = HitTest(Position);
+		bool Hit = HitTest(Position);
 
 		uint32 PointerIndex = TouchEvent.GetPointerIndex();
-		XamlView->TouchDown(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), PointerIndex);
+		bool Handled = XamlView->TouchDown(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), PointerIndex);
 
-		if (hit)
+		if (Handled && Hit)
 		{
 			return FReply::Handled().PreventThrottling();
 		}
@@ -1704,12 +1719,12 @@
 	if (EnableTouch && XamlView)
 	{
 		FVector2D Position = MyGeometry.AbsoluteToLocal(TouchEvent.GetScreenSpacePosition()) * MyGeometry.Scale;
-		bool hit = HitTest(Position);
+		bool Hit = HitTest(Position);
 
 		uint32 PointerIndex = TouchEvent.GetPointerIndex();
-		XamlView->TouchMove(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), PointerIndex);
+		bool Handled = XamlView->TouchMove(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), PointerIndex);
 
-		if (hit)
+		if (Handled && Hit)
 		{
 			return FReply::Handled().PreventThrottling();
 		}
@@ -1724,12 +1739,12 @@
 	if (EnableTouch && XamlView)
 	{
 		FVector2D Position = MyGeometry.AbsoluteToLocal(TouchEvent.GetScreenSpacePosition()) * MyGeometry.Scale;
-		bool hit = HitTest(Position);
+		bool Hit = HitTest(Position);
 
 		uint32 PointerIndex = TouchEvent.GetPointerIndex();
-		XamlView->TouchUp(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), PointerIndex);
+		bool Handled = XamlView->TouchUp(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), PointerIndex);
 
-		if (hit)
+		if (Handled && Hit)
 		{
 			return FReply::Handled().PreventThrottling();
 		}
@@ -1749,12 +1764,12 @@
 	if (EnableMouse && XamlView)
 	{
 		FVector2D Position = MyGeometry.AbsoluteToLocal(MouseEvent.GetScreenSpacePosition()) * MyGeometry.Scale;
-		bool hit = HitTest(Position);
+		bool Hit = HitTest(Position);
 
 		Noesis::MouseButton MouseButton = GetNoesisMouseButton(MouseEvent.GetEffectingButton());
-		XamlView->MouseDoubleClick(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), MouseButton);
+		bool Handled = XamlView->MouseDoubleClick(FPlatformMath::RoundToInt(Position.X), FPlatformMath::RoundToInt(Position.Y), MouseButton);
 
-		if (hit)
+		if (Handled && Hit)
 		{
 			return FReply::Handled().PreventThrottling();
 		}
