diff --git a/samples/ControlCatalog/Pages/ProgressBarPage.xaml b/samples/ControlCatalog/Pages/ProgressBarPage.xaml
index 39bbf391bb..13bae59805 100644
--- a/samples/ControlCatalog/Pages/ProgressBarPage.xaml
+++ b/samples/ControlCatalog/Pages/ProgressBarPage.xaml
@@ -6,15 +6,19 @@
A progress bar control
+
-
+
-
+
diff --git a/src/Avalonia.Controls.DataGrid/DataGrid.cs b/src/Avalonia.Controls.DataGrid/DataGrid.cs
index 0083d57960..214132f03c 100644
--- a/src/Avalonia.Controls.DataGrid/DataGrid.cs
+++ b/src/Avalonia.Controls.DataGrid/DataGrid.cs
@@ -149,6 +149,9 @@ namespace Avalonia.Controls
private IEnumerable _items;
+ public event EventHandler HorizontalScroll;
+ public event EventHandler VerticalScroll;
+
///
/// Identifies the CanUserReorderColumns dependency property.
///
@@ -4225,6 +4228,7 @@ namespace Avalonia.Controls
private void HorizontalScrollBar_Scroll(object sender, ScrollEventArgs e)
{
ProcessHorizontalScroll(e.ScrollEventType);
+ HorizontalScroll?.Invoke(sender, e);
}
private bool IsColumnOutOfBounds(int columnIndex)
@@ -5557,6 +5561,7 @@ namespace Avalonia.Controls
private void VerticalScrollBar_Scroll(object sender, ScrollEventArgs e)
{
ProcessVerticalScroll(e.ScrollEventType);
+ VerticalScroll?.Invoke(sender, e);
}
//TODO: Ensure left button is checked for
diff --git a/src/Avalonia.Controls/ItemsControl.cs b/src/Avalonia.Controls/ItemsControl.cs
index 4a4daa31f9..ca3c290d7b 100644
--- a/src/Avalonia.Controls/ItemsControl.cs
+++ b/src/Avalonia.Controls/ItemsControl.cs
@@ -472,7 +472,10 @@ namespace Avalonia.Controls
result = container.GetControl(direction, c, wrap);
from = from ?? result;
- if (result?.Focusable == true)
+ if (result != null &&
+ result.Focusable &&
+ result.IsEffectivelyEnabled &&
+ result.IsEffectivelyVisible)
{
return result;
}
diff --git a/src/Avalonia.Controls/ProgressBar.cs b/src/Avalonia.Controls/ProgressBar.cs
index 753c6e1b71..786f0092a2 100644
--- a/src/Avalonia.Controls/ProgressBar.cs
+++ b/src/Avalonia.Controls/ProgressBar.cs
@@ -17,6 +17,9 @@ namespace Avalonia.Controls
public static readonly StyledProperty IsIndeterminateProperty =
AvaloniaProperty.Register(nameof(IsIndeterminate));
+ public static readonly StyledProperty ShowProgressTextProperty =
+ AvaloniaProperty.Register(nameof(ShowProgressText));
+
public static readonly StyledProperty OrientationProperty =
AvaloniaProperty.Register(nameof(Orientation), Orientation.Horizontal);
@@ -51,6 +54,12 @@ namespace Avalonia.Controls
set => SetValue(IsIndeterminateProperty, value);
}
+ public bool ShowProgressText
+ {
+ get => GetValue(ShowProgressTextProperty);
+ set => SetValue(ShowProgressTextProperty, value);
+ }
+
public Orientation Orientation
{
get => GetValue(OrientationProperty);
diff --git a/src/Avalonia.Themes.Default/ComboBox.xaml b/src/Avalonia.Themes.Default/ComboBox.xaml
index 1c5c8106d3..2afed09b0c 100644
--- a/src/Avalonia.Themes.Default/ComboBox.xaml
+++ b/src/Avalonia.Themes.Default/ComboBox.xaml
@@ -4,6 +4,7 @@
+
-
-
+
-
+
@@ -58,7 +59,7 @@
-
+
diff --git a/src/Avalonia.Themes.Default/ProgressBar.xaml b/src/Avalonia.Themes.Default/ProgressBar.xaml
index 72271e785a..d3c2f0c784 100644
--- a/src/Avalonia.Themes.Default/ProgressBar.xaml
+++ b/src/Avalonia.Themes.Default/ProgressBar.xaml
@@ -1,14 +1,25 @@
@@ -22,42 +33,49 @@
+
diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs
index 696c0dbf46..004cf009fc 100644
--- a/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs
+++ b/tests/Avalonia.Controls.UnitTests/Primitives/SelectingItemsControlTests.cs
@@ -1202,6 +1202,28 @@ namespace Avalonia.Controls.UnitTests.Primitives
target.MoveSelection(NavigationDirection.Next, true);
}
+ [Fact]
+ public void MoveSelection_Does_Select_Disabled_Controls()
+ {
+ // Issue #3426.
+ var target = new TestSelector
+ {
+ Template = Template(),
+ Items = new[]
+ {
+ new ListBoxItem(),
+ new ListBoxItem { IsEnabled = false },
+ },
+ SelectedIndex = 0,
+ };
+
+ target.Measure(new Size(100, 100));
+ target.Arrange(new Rect(0, 0, 100, 100));
+ target.MoveSelection(NavigationDirection.Next, true);
+
+ Assert.Equal(0, target.SelectedIndex);
+ }
+
[Fact]
public void Pre_Selecting_Item_Should_Set_Selection_After_It_Was_Added_When_AlwaysSelected()
{