Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/Xamarin.PropertyEditing.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Maupin <me@ermau.com>2018-05-17 18:46:44 +0300
committerGitHub <noreply@github.com>2018-05-17 18:46:44 +0300
commit059089a4921dd9d96fd3617e3cf33d816a524698 (patch)
tree827eb20cc5ec98442ecf003026b79614e0fbd17c
parentac4507e3972a86b89b8508c845e9173ff245cbbb (diff)
parente9c72d08018489e219252f2a08927b8ce757587f (diff)
Merge pull request #304 from xamarin/ermau-d15-7-fixesd15-7
Push fixes to 15.7
-rw-r--r--Xamarin.PropertyEditing.Tests/SimpleCollectionViewTests.cs61
-rw-r--r--Xamarin.PropertyEditing.Windows/Themes/PropertyEditorPanelStyle.xaml8
-rw-r--r--Xamarin.PropertyEditing/ViewModels/ResourceSelectorViewModel.cs5
-rw-r--r--Xamarin.PropertyEditing/ViewModels/SimpleCollectionView.cs23
4 files changed, 72 insertions, 25 deletions
diff --git a/Xamarin.PropertyEditing.Tests/SimpleCollectionViewTests.cs b/Xamarin.PropertyEditing.Tests/SimpleCollectionViewTests.cs
index e77db91..00f65b0 100644
--- a/Xamarin.PropertyEditing.Tests/SimpleCollectionViewTests.cs
+++ b/Xamarin.PropertyEditing.Tests/SimpleCollectionViewTests.cs
@@ -1,3 +1,4 @@
+using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@@ -555,8 +556,6 @@ namespace Xamarin.PropertyEditing.Tests
});
Assume.That (view, Is.Not.Empty);
-
-
var topKvp = view.Cast<KeyValuePair<string, SimpleCollectionView>>().First();
var leafKvp = topKvp.Value.Cast<KeyValuePair<string, SimpleCollectionView>>().First();
var leafItem = leafKvp.Value.Cast<object>().First();
@@ -631,6 +630,64 @@ namespace Xamarin.PropertyEditing.Tests
Assert.That (view.Cast<TestNode>().ElementAt (2), Is.EqualTo (nodes[1]));
}
+ [Test]
+ public void AddBackInUnorderedPartial()
+ {
+ var nodes = new ObservableCollection<TestNode> {
+ new TestNode ("B"),
+ new TestNode ("Xamarin"),
+ new TestNode ("A"),
+ new TestNode ("Xamagon"),
+ };
+
+ var view = new SimpleCollectionView (nodes, new SimpleCollectionViewOptions {
+ DisplaySelector = TestNodeDisplaySelector
+ });
+
+ Assume.That (view.Cast<TestNode>().ElementAt (0), Is.EqualTo (nodes[2]));
+ Assume.That (view.Cast<TestNode>().ElementAt (1), Is.EqualTo (nodes[0]));
+ Assume.That (view.Cast<TestNode>().ElementAt (2), Is.EqualTo (nodes[3]));
+ Assume.That (view.Cast<TestNode>().ElementAt (3), Is.EqualTo (nodes[1]));
+
+ view.Options.Filter = o => ((TestNode)o).Key.StartsWith ("Xamarin");
+
+ Assume.That (view.Cast<TestNode>().Count(), Is.EqualTo (1));
+ Assume.That (view.Cast<TestNode>().ElementAt (0), Is.EqualTo (nodes[1]));
+
+ view.Options.Filter = o => ((TestNode)o).Key.StartsWith ("Xama");
+
+ Assert.That (view.Cast<TestNode>().ElementAt (0), Is.EqualTo (nodes[3]));
+ Assert.That (view.Cast<TestNode>().ElementAt (1), Is.EqualTo (nodes[1]));
+ }
+
+ [Test]
+ public void SettingEvenSameFilterTriggersUpdate ()
+ {
+ var nodes = new ObservableCollection<TestNode> {
+ new TestNode ("Baz"),
+ new TestNode ("Bar"),
+ new TestNode ("A")
+ };
+
+ var view = new SimpleCollectionView (nodes, new SimpleCollectionViewOptions {
+ DisplaySelector = TestNodeDisplaySelector
+ });
+
+ string textFilter = "B";
+ Predicate<object> filter = o => ((TestNode) o).Key.StartsWith (textFilter, StringComparison.OrdinalIgnoreCase);
+ view.Options.Filter = filter;
+
+ Assume.That (view, Contains.Item (nodes[0]));
+ Assume.That (view, Contains.Item (nodes[1]));
+ Assume.That (view, Does.Not.Contain (nodes[2]));
+
+ textFilter = "Bar";
+ view.Options.Filter = filter;
+ Assert.That (view, Does.Not.Contain (nodes[0]));
+ Assert.That (view, Contains.Item (nodes[1]));
+ Assert.That (view, Does.Not.Contain (nodes[2]));
+ }
+
private IEnumerable TestNodeChildrenSelector (object o)
{
return ((TestNode)o).Children;
diff --git a/Xamarin.PropertyEditing.Windows/Themes/PropertyEditorPanelStyle.xaml b/Xamarin.PropertyEditing.Windows/Themes/PropertyEditorPanelStyle.xaml
index dfac430..ad19e4a 100644
--- a/Xamarin.PropertyEditing.Windows/Themes/PropertyEditorPanelStyle.xaml
+++ b/Xamarin.PropertyEditing.Windows/Themes/PropertyEditorPanelStyle.xaml
@@ -72,7 +72,13 @@
<DataTemplate x:Key="PropertyGroupTemplate">
<local:CategoryExpander Header="{Binding Key,Mode=OneTime}" Style="{StaticResource TreeExpanderStyle}">
- <ItemsControl Style="{StaticResource PropertyListStyle}" ScrollViewer.CanContentScroll="False" ScrollViewer.VerticalScrollBarVisibility="Disabled" ItemsSource="{Binding}" />
+ <ItemsControl Style="{StaticResource PropertyListStyle}" ItemsSource="{Binding}">
+ <ItemsControl.Template>
+ <ControlTemplate>
+ <ItemsPresenter />
+ </ControlTemplate>
+ </ItemsControl.Template>
+ </ItemsControl>
</local:CategoryExpander>
</DataTemplate>
diff --git a/Xamarin.PropertyEditing/ViewModels/ResourceSelectorViewModel.cs b/Xamarin.PropertyEditing/ViewModels/ResourceSelectorViewModel.cs
index 8bd6f2f..2c8d57e 100644
--- a/Xamarin.PropertyEditing/ViewModels/ResourceSelectorViewModel.cs
+++ b/Xamarin.PropertyEditing/ViewModels/ResourceSelectorViewModel.cs
@@ -154,10 +154,7 @@ namespace Xamarin.PropertyEditing.ViewModels
return;
}
- if (this.resourcesView.Options.Filter != ResourceFilter)
- this.resourcesView.Options.Filter = ResourceFilter;
- else
- this.resourcesView.UpdateFilter();
+ this.resourcesView.Options.Filter = ResourceFilter;
}
private bool ResourceFilter (object item)
diff --git a/Xamarin.PropertyEditing/ViewModels/SimpleCollectionView.cs b/Xamarin.PropertyEditing/ViewModels/SimpleCollectionView.cs
index c0b2245..6c45857 100644
--- a/Xamarin.PropertyEditing/ViewModels/SimpleCollectionView.cs
+++ b/Xamarin.PropertyEditing/ViewModels/SimpleCollectionView.cs
@@ -71,9 +71,8 @@ namespace Xamarin.PropertyEditing.ViewModels
get { return this.filter; }
set
{
- if (this.filter == value)
- return;
-
+ // Purposefully doesn't check for existing equality since a common case is setting to the same delegate but
+ // variables it checks only have changed.
this.filter = value;
OnPropertyChanged();
}
@@ -112,19 +111,6 @@ namespace Xamarin.PropertyEditing.ViewModels
public bool IsFiltering => Options?.Filter != null;
- /// <summary>
- /// Forces an update of the contens as if the filter has changed.
- /// </summary>
- /// <remarks>
- /// Some filters may not change their delegate, but that delegate may act different based on outside forces.
- /// In that scenario, call this to trigger the update.
- /// </remarks>
- public void UpdateFilter()
- {
- FilterCore (isPureSubset: this.wasFilterNull);
- this.wasFilterNull = Options.Filter == null;
- }
-
public IEnumerator GetEnumerator ()
{
bool haveChildren = (Options.ChildOptions != null);
@@ -215,7 +201,8 @@ namespace Xamarin.PropertyEditing.ViewModels
private void OnOptionsPropertyChanged (object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(SimpleCollectionViewOptions.Filter)) {
- UpdateFilter();
+ FilterCore (isPureSubset: this.wasFilterNull);
+ this.wasFilterNull = Options.Filter == null;
} else
Reset();
}
@@ -288,7 +275,7 @@ namespace Xamarin.PropertyEditing.ViewModels
if (Comparer.Compare (currentKey, key) > 0) {
index = i;
- this.filtered.Insert (i, key, this.arranged[i]);
+ this.filtered.Insert (i, key, this.arranged[key]);
added = true;
break;
}