Browse Source

Merge branch 'master' into fix-nested-popups

pull/2928/head
Steven Kirk 7 years ago
committed by GitHub
parent
commit
ac158aecbd
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 20
      src/Avalonia.Controls/Primitives/SelectingItemsControl.cs
  2. 2
      src/Avalonia.Styling/Controls/ResourceNodeExtensions.cs
  3. 2
      src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/DynamicResourceExtension.cs
  4. 4
      src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/StaticResourceExtension.cs
  5. 22
      tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs

20
src/Avalonia.Controls/Primitives/SelectingItemsControl.cs

@ -304,6 +304,11 @@ namespace Avalonia.Controls.Primitives
{
base.ItemsCollectionChanged(sender, e);
if (_updateCount > 0)
{
return;
}
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
@ -1071,13 +1076,20 @@ namespace Avalonia.Controls.Primitives
private void UpdateFinished()
{
if (_updateSelectedIndex != int.MinValue)
if (_updateSelectedItem != null)
{
SelectedIndex = _updateSelectedIndex;
SelectedItem = _updateSelectedItem;
}
else if (_updateSelectedItem != null)
else
{
SelectedItem = _updateSelectedItem;
if (ItemCount == 0 && SelectedIndex != -1)
{
SelectedIndex = -1;
}
else
{
SelectedIndex = _updateSelectedIndex != int.MinValue ? _updateSelectedIndex : 0;
}
}
}

2
src/Avalonia.Styling/Controls/ResourceProviderExtensions.cs → src/Avalonia.Styling/Controls/ResourceNodeExtensions.cs

@ -3,7 +3,7 @@ using Avalonia.Reactive;
namespace Avalonia.Controls
{
public static class ResourceProviderExtensions
public static class ResourceNodeExtensions
{
/// <summary>
/// Finds the specified resource by searching up the logical tree and then global styles.

2
src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/DynamicResourceExtension.cs

@ -18,7 +18,7 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions
{
}
public DynamicResourceExtension(string resourceKey)
public DynamicResourceExtension(object resourceKey)
{
ResourceKey = resourceKey;
}

4
src/Markup/Avalonia.Markup.Xaml/MarkupExtensions/StaticResourceExtension.cs

@ -16,12 +16,12 @@ namespace Avalonia.Markup.Xaml.MarkupExtensions
{
}
public StaticResourceExtension(string resourceKey)
public StaticResourceExtension(object resourceKey)
{
ResourceKey = resourceKey;
}
public string ResourceKey { get; set; }
public object ResourceKey { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{

22
tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs

@ -109,6 +109,28 @@ namespace Avalonia.Controls.UnitTests.Primitives
Assert.True(items[1].IsSelected);
}
[Fact]
public void Setting_SelectedIndex_During_Initialize_Should_Select_Item_When_AlwaysSelected_Is_Used()
{
var listBox = new ListBox
{
SelectionMode = SelectionMode.Single | SelectionMode.AlwaysSelected
};
listBox.BeginInit();
listBox.SelectedIndex = 1;
var items = new AvaloniaList<string>();
listBox.Items = items;
items.Add("A");
items.Add("B");
items.Add("C");
listBox.EndInit();
Assert.Equal("B", listBox.SelectedItem);
}
[Fact]
public void Setting_SelectedIndex_Before_ApplyTemplate_Should_Set_Item_IsSelected_True()
{

Loading…
Cancel
Save