summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Controls.Issues
diff options
context:
space:
mode:
authorE.Z. Hart <hartez@users.noreply.github.com>2017-05-04 03:51:01 -0600
committerRui Marinho <me@ruimarinho.net>2017-05-04 10:51:01 +0100
commitadac0fcc38295263d08f589b7d564c9b12d9935c (patch)
tree0e35fc4d708c61d88feda798e3b6ee7bbd48bd11 /Xamarin.Forms.Controls.Issues
parent40dff0a54cd718747f280b808dc08aa7efb83f4c (diff)
downloadxamarin-forms-adac0fcc38295263d08f589b7d564c9b12d9935c.tar.gz
xamarin-forms-adac0fcc38295263d08f589b7d564c9b12d9935c.tar.bz2
xamarin-forms-adac0fcc38295263d08f589b7d564c9b12d9935c.zip
Give layouts a chance to handle touch events after passing though immediate children (#902)
* Repro for Bugzilla 55912 * Automate test * Give the layout a chance to actually handle gestures before bubbling up
Diffstat (limited to 'Xamarin.Forms.Controls.Issues')
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55912.cs95
-rw-r--r--Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems1
2 files changed, 96 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55912.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55912.cs
new file mode 100644
index 00000000..834244bb
--- /dev/null
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla55912.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Diagnostics;
+using Xamarin.Forms.CustomAttributes;
+using Xamarin.Forms.Internals;
+#if UITEST
+using NUnit.Framework;
+
+#endif
+
+namespace Xamarin.Forms.Controls.Issues
+{
+ [Preserve(AllMembers = true)]
+ [Issue(IssueTracker.Bugzilla, 955912, "Tap event not always propagated to containing Grid/StackLayout",
+ PlatformAffected.Android)]
+ public class Bugzilla55912 : TestContentPage
+ {
+ const string Success = "Success";
+ const string GridLabelId = "GridLabel";
+ const string StackLabelId = "StackLabel";
+
+ protected override void Init()
+ {
+ var layout = new Grid();
+
+ layout.RowDefinitions.Add(new RowDefinition { Height = GridLength.Star });
+ layout.RowDefinitions.Add(new RowDefinition { Height = GridLength.Star });
+ layout.RowDefinitions.Add(new RowDefinition { Height = GridLength.Star });
+
+ var testGrid = new Grid { BackgroundColor = Color.Red };
+ var gridLabel = new Label
+ {
+ AutomationId = GridLabelId,
+ Text = "This is a Grid with a TapGesture",
+ FontSize = 24,
+ BackgroundColor = Color.Green
+ };
+ Grid.SetRow(testGrid, 1);
+ testGrid.Children.Add(gridLabel);
+
+ var testStack = new StackLayout { BackgroundColor = Color.Default };
+ var stackLabel = new Label
+ {
+ AutomationId = StackLabelId,
+ Text = "This StackLayout also has a TapGesture",
+ FontSize = 24,
+ BackgroundColor = Color.Green
+ };
+ Grid.SetRow(testStack, 2);
+ testStack.Children.Add(stackLabel);
+
+ layout.Children.Add(testGrid);
+ layout.Children.Add(testStack);
+
+ Content = layout;
+
+ testGrid.GestureRecognizers.Add(new TapGestureRecognizer
+ {
+ NumberOfTapsRequired = 1,
+ Command = new Command(() =>
+ {
+ Debug.WriteLine($"***** TestGrid Tapped: {DateTime.Now} *****");
+ layout.Children.Add(new Label { AutomationId = Success, Text = Success });
+ })
+ });
+
+ testStack.GestureRecognizers.Add(new TapGestureRecognizer
+ {
+ NumberOfTapsRequired = 1,
+ Command = new Command(() =>
+ {
+ Debug.WriteLine($"***** TestStack Tapped: {DateTime.Now} *****");
+ layout.Children.Add(new Label { AutomationId = Success, Text = Success });
+ })
+ });
+ }
+
+#if UITEST
+ [Test]
+ public void GestureBubblingInStackLayout()
+ {
+ RunningApp.WaitForElement(StackLabelId);
+ RunningApp.Tap(StackLabelId);
+ RunningApp.WaitForElement(Success);
+ }
+
+ [Test]
+ public void GestureBubblingInGrid()
+ {
+ RunningApp.WaitForElement(GridLabelId);
+ RunningApp.Tap(GridLabelId);
+ RunningApp.WaitForElement(Success);
+ }
+#endif
+ }
+} \ No newline at end of file
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
index 70069d9d..f602ef65 100644
--- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
+++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems
@@ -196,6 +196,7 @@
</Compile>
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla52266.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla53445.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)Bugzilla55912.cs" />
<Compile Include="$(MSBuildThisFileDirectory)CarouselAsync.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla34561.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla34727.cs" />