From 02c5ff41ff5e68c253ded29d117d07540a460284 Mon Sep 17 00:00:00 2001 From: Julien Lebosquain Date: Fri, 6 Feb 2026 11:33:18 +0000 Subject: [PATCH] Remove obsolete members from Avalonia.Controls (#20617) * Remove IActivatableApplicationLifetime * Remove ItemContainerGenerator.ContainerFromIndex/IndexFromContainer * Remove TreeItemContainerGenerator * Remove SystemDialog * Remove IInsetsManager.DisplayEdgeToEdge * Remove Screen.PixelDensity/Primary * Remove Screens.ScreenFromWindow * Remove Popup/ContextMenu.PlacementMode * Remove ToggleButton.Checked/Unchecked/Indeterminate * Remove AppBuilder.LifetimeOverride * Remove IApplicationPlatformEvents * Remove TabItem.SubscribeToOwnerProperties * Update API suppressions --- api/Avalonia.nupkg.xml | 576 ++++++++++++++++++ samples/ControlCatalog/Pages/DialogsPage.xaml | 9 - .../ControlCatalog/Pages/DialogsPage.xaml.cs | 95 +-- .../Platform/AndroidInsetsManager.cs | 2 - src/Avalonia.Controls/AppBuilder.cs | 10 - src/Avalonia.Controls/Application.cs | 14 +- .../ClassicDesktopStyleApplicationLifetime.cs | 15 - .../IActivatableApplicationLifetime.cs | 7 - src/Avalonia.Controls/ContextMenu.cs | 16 - .../Generators/ItemContainerGenerator.cs | 6 - .../Generators/TreeItemContainerGenerator.cs | 33 - src/Avalonia.Controls/ItemsControl.cs | 33 +- .../Platform/Dialogs/ISystemDialogImpl.cs | 25 - .../Platform/Dialogs/SystemDialogImpl.cs | 70 --- .../Platform/IApplicationPlatformEvents.cs | 10 - .../Platform/IInsetsManager.cs | 9 - src/Avalonia.Controls/Platform/Screen.cs | 8 - src/Avalonia.Controls/Primitives/Popup.cs | 14 - .../Primitives/ToggleButton.cs | 104 ---- src/Avalonia.Controls/Screens.cs | 11 - src/Avalonia.Controls/SystemDialog.cs | 206 ------- src/Avalonia.Controls/TabItem.cs | 5 - src/Avalonia.Controls/TreeView.cs | 12 - .../ManagedFileDialogExtensions.cs | 20 - .../AvaloniaNativeApplicationPlatform.cs | 5 - .../Primitives/ToggleButtonTests.cs | 46 +- 26 files changed, 601 insertions(+), 760 deletions(-) delete mode 100644 src/Avalonia.Controls/Generators/TreeItemContainerGenerator.cs delete mode 100644 src/Avalonia.Controls/Platform/Dialogs/ISystemDialogImpl.cs delete mode 100644 src/Avalonia.Controls/Platform/Dialogs/SystemDialogImpl.cs delete mode 100644 src/Avalonia.Controls/Platform/IApplicationPlatformEvents.cs delete mode 100644 src/Avalonia.Controls/SystemDialog.cs diff --git a/api/Avalonia.nupkg.xml b/api/Avalonia.nupkg.xml index 3d33c5de44..b88cd8fd12 100644 --- a/api/Avalonia.nupkg.xml +++ b/api/Avalonia.nupkg.xml @@ -97,24 +97,102 @@ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll current/Avalonia/lib/net10.0/Avalonia.Base.dll + + CP0001 + T:Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetimeOptions + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.ApplicationLifetimes.IActivatableApplicationLifetime + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0001 T:Avalonia.Controls.AutoCompleteBox.BindingEvaluator`1 baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0001 + T:Avalonia.Controls.FileDialog + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.FileDialogFilter + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.FileSystemDialog + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.Generators.TreeContainerIndex + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.Generators.TreeItemContainerGenerator + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0001 T:Avalonia.Controls.NativeMenuItemToggleType baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0001 + T:Avalonia.Controls.OpenFileDialog + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.OpenFolderDialog + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.Platform.ISystemDialogImpl + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0001 T:Avalonia.Controls.Primitives.IScrollable baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0001 + T:Avalonia.Controls.SaveFileDialog + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.SystemDialog + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Platform.IApplicationPlatformEvents + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0001 T:Avalonia.Markup.Xaml.ConstructorArgumentAttribute @@ -223,24 +301,102 @@ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0001 + T:Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetimeOptions + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.ApplicationLifetimes.IActivatableApplicationLifetime + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0001 T:Avalonia.Controls.AutoCompleteBox.BindingEvaluator`1 baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + CP0001 + T:Avalonia.Controls.FileDialog + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.FileDialogFilter + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.FileSystemDialog + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.Generators.TreeContainerIndex + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.Generators.TreeItemContainerGenerator + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0001 T:Avalonia.Controls.NativeMenuItemToggleType baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + CP0001 + T:Avalonia.Controls.OpenFileDialog + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.OpenFolderDialog + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.Platform.ISystemDialogImpl + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0001 T:Avalonia.Controls.Primitives.IScrollable baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + CP0001 + T:Avalonia.Controls.SaveFileDialog + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Controls.SystemDialog + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0001 + T:Avalonia.Platform.IApplicationPlatformEvents + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0001 T:Avalonia.Markup.Xaml.ConstructorArgumentAttribute @@ -673,6 +829,12 @@ baseline/Avalonia/lib/net10.0/Avalonia.Base.dll current/Avalonia/lib/net10.0/Avalonia.Base.dll + + CP0002 + F:Avalonia.Controls.ContextMenu.PlacementModeProperty + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0002 F:Avalonia.Controls.Documents.Inline.TextDecorationsProperty @@ -691,6 +853,30 @@ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0002 + F:Avalonia.Controls.Primitives.Popup.PlacementModeProperty + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + F:Avalonia.Controls.Primitives.ToggleButton.CheckedEvent + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + F:Avalonia.Controls.Primitives.ToggleButton.IndeterminateEvent + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + F:Avalonia.Controls.Primitives.ToggleButton.UncheckedEvent + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0002 F:Avalonia.Controls.TextBlock.LetterSpacingProperty @@ -703,6 +889,36 @@ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.AppBuilder.get_LifetimeOverride + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Application.add_UrlsOpened(System.EventHandler{Avalonia.UrlOpenedEventArgs}) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Application.remove_UrlsOpened(System.EventHandler{Avalonia.UrlOpenedEventArgs}) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.ContextMenu.get_PlacementMode + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.ContextMenu.set_PlacementMode(Avalonia.Controls.PlacementMode) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Controls.Design.CreatePreviewWithControl(System.Object) @@ -775,6 +991,24 @@ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.Controls.Generators.ItemContainerGenerator.ContainerFromIndex(System.Int32) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Generators.ItemContainerGenerator.IndexFromContainer(Avalonia.Controls.Control) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.ItemsControl.ItemsControlFromItemContaner(Avalonia.Controls.Control) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Controls.NativeMenuBar.SetEnableMenuItemClickForwarding(Avalonia.Controls.MenuItem,System.Boolean) @@ -787,6 +1021,30 @@ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.Controls.Platform.IInsetsManager.get_DisplayEdgeToEdge + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Platform.IInsetsManager.set_DisplayEdgeToEdge(System.Boolean) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Platform.InsetsManagerBase.get_DisplayEdgeToEdge + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Platform.InsetsManagerBase.set_DisplayEdgeToEdge(System.Boolean) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Controls.Primitives.OverlayPopupHost.ConfigurePosition(Avalonia.Visual,Avalonia.Controls.PlacementMode,Avalonia.Point,Avalonia.Controls.Primitives.PopupPositioning.PopupAnchor,Avalonia.Controls.Primitives.PopupPositioning.PopupGravity,Avalonia.Controls.Primitives.PopupPositioning.PopupPositionerConstraintAdjustment,System.Nullable{Avalonia.Rect}) @@ -799,6 +1057,18 @@ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.Controls.Primitives.Popup.get_PlacementMode + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.Popup.set_PlacementMode(Avalonia.Controls.PlacementMode) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Controls.Primitives.PopupRoot.ConfigurePosition(Avalonia.Visual,Avalonia.Controls.PlacementMode,Avalonia.Point,Avalonia.Controls.Primitives.PopupPositioning.PopupAnchor,Avalonia.Controls.Primitives.PopupPositioning.PopupGravity,Avalonia.Controls.Primitives.PopupPositioning.PopupPositionerConstraintAdjustment,System.Nullable{Avalonia.Rect}) @@ -817,12 +1087,96 @@ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.add_Checked(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.add_Indeterminate(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.add_Unchecked(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.OnChecked(Avalonia.Interactivity.RoutedEventArgs) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.OnIndeterminate(Avalonia.Interactivity.RoutedEventArgs) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.OnUnchecked(Avalonia.Interactivity.RoutedEventArgs) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.remove_Checked(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.remove_Indeterminate(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.remove_Unchecked(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Screens.ScreenFromWindow(Avalonia.Platform.IWindowBaseImpl) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.TabItem.SubscribeToOwnerProperties(Avalonia.AvaloniaObject) + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.TreeView.get_ItemContainerGenerator + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Platform.Screen.#ctor(System.Double,Avalonia.PixelRect,Avalonia.PixelRect,System.Boolean) baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.Platform.Screen.get_PixelDensity + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Platform.Screen.get_Primary + baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll + current/Avalonia/lib/net10.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Platform.Screen.set_Bounds(Avalonia.PixelRect) @@ -859,6 +1213,18 @@ baseline/Avalonia/lib/net10.0/Avalonia.Controls.dll current/Avalonia/lib/net10.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.Dialogs.ManagedFileDialogExtensions.ShowManagedAsync(Avalonia.Controls.OpenFileDialog,Avalonia.Controls.Window,Avalonia.Dialogs.ManagedFileDialogOptions) + baseline/Avalonia/lib/net10.0/Avalonia.Dialogs.dll + current/Avalonia/lib/net10.0/Avalonia.Dialogs.dll + + + CP0002 + M:Avalonia.Dialogs.ManagedFileDialogExtensions.ShowManagedAsync``1(Avalonia.Controls.OpenFileDialog,Avalonia.Controls.Window,Avalonia.Dialogs.ManagedFileDialogOptions) + baseline/Avalonia/lib/net10.0/Avalonia.Dialogs.dll + current/Avalonia/lib/net10.0/Avalonia.Dialogs.dll + CP0002 M:Avalonia.Data.Binding.#ctor(System.String,Avalonia.Data.BindingMode) @@ -1321,6 +1687,12 @@ baseline/Avalonia/lib/net8.0/Avalonia.Base.dll current/Avalonia/lib/net8.0/Avalonia.Base.dll + + CP0002 + F:Avalonia.Controls.ContextMenu.PlacementModeProperty + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0002 F:Avalonia.Controls.Documents.Inline.TextDecorationsProperty @@ -1339,6 +1711,30 @@ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + CP0002 + F:Avalonia.Controls.Primitives.Popup.PlacementModeProperty + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + F:Avalonia.Controls.Primitives.ToggleButton.CheckedEvent + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + F:Avalonia.Controls.Primitives.ToggleButton.IndeterminateEvent + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + F:Avalonia.Controls.Primitives.ToggleButton.UncheckedEvent + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0002 F:Avalonia.Controls.TextBlock.LetterSpacingProperty @@ -1351,6 +1747,36 @@ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.AppBuilder.get_LifetimeOverride + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Application.add_UrlsOpened(System.EventHandler{Avalonia.UrlOpenedEventArgs}) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Application.remove_UrlsOpened(System.EventHandler{Avalonia.UrlOpenedEventArgs}) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.ContextMenu.get_PlacementMode + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.ContextMenu.set_PlacementMode(Avalonia.Controls.PlacementMode) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Controls.Design.CreatePreviewWithControl(System.Object) @@ -1423,6 +1849,24 @@ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.Controls.Generators.ItemContainerGenerator.ContainerFromIndex(System.Int32) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Generators.ItemContainerGenerator.IndexFromContainer(Avalonia.Controls.Control) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.ItemsControl.ItemsControlFromItemContaner(Avalonia.Controls.Control) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Controls.NativeMenuBar.SetEnableMenuItemClickForwarding(Avalonia.Controls.MenuItem,System.Boolean) @@ -1435,6 +1879,30 @@ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.Controls.Platform.IInsetsManager.get_DisplayEdgeToEdge + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Platform.IInsetsManager.set_DisplayEdgeToEdge(System.Boolean) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Platform.InsetsManagerBase.get_DisplayEdgeToEdge + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Platform.InsetsManagerBase.set_DisplayEdgeToEdge(System.Boolean) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Controls.Primitives.OverlayPopupHost.ConfigurePosition(Avalonia.Visual,Avalonia.Controls.PlacementMode,Avalonia.Point,Avalonia.Controls.Primitives.PopupPositioning.PopupAnchor,Avalonia.Controls.Primitives.PopupPositioning.PopupGravity,Avalonia.Controls.Primitives.PopupPositioning.PopupPositionerConstraintAdjustment,System.Nullable{Avalonia.Rect}) @@ -1447,6 +1915,18 @@ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.Controls.Primitives.Popup.get_PlacementMode + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.Popup.set_PlacementMode(Avalonia.Controls.PlacementMode) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Controls.Primitives.PopupRoot.ConfigurePosition(Avalonia.Visual,Avalonia.Controls.PlacementMode,Avalonia.Point,Avalonia.Controls.Primitives.PopupPositioning.PopupAnchor,Avalonia.Controls.Primitives.PopupPositioning.PopupGravity,Avalonia.Controls.Primitives.PopupPositioning.PopupPositionerConstraintAdjustment,System.Nullable{Avalonia.Rect}) @@ -1465,12 +1945,96 @@ baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.add_Checked(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.add_Indeterminate(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.add_Unchecked(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.OnChecked(Avalonia.Interactivity.RoutedEventArgs) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.OnIndeterminate(Avalonia.Interactivity.RoutedEventArgs) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.OnUnchecked(Avalonia.Interactivity.RoutedEventArgs) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.remove_Checked(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.remove_Indeterminate(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Primitives.ToggleButton.remove_Unchecked(System.EventHandler{Avalonia.Interactivity.RoutedEventArgs}) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.Screens.ScreenFromWindow(Avalonia.Platform.IWindowBaseImpl) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.TabItem.SubscribeToOwnerProperties(Avalonia.AvaloniaObject) + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Controls.TreeView.get_ItemContainerGenerator + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Platform.Screen.#ctor(System.Double,Avalonia.PixelRect,Avalonia.PixelRect,System.Boolean) baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + CP0002 + M:Avalonia.Platform.Screen.get_PixelDensity + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + + + CP0002 + M:Avalonia.Platform.Screen.get_Primary + baseline/Avalonia/lib/net8.0/Avalonia.Controls.dll + current/Avalonia/lib/net8.0/Avalonia.Controls.dll + CP0002 M:Avalonia.Platform.Screen.set_Bounds(Avalonia.PixelRect) @@ -1513,6 +2077,18 @@ baseline/Avalonia/lib/net8.0/Avalonia.Dialogs.dll current/Avalonia/lib/net8.0/Avalonia.Dialogs.dll + + CP0002 + M:Avalonia.Dialogs.ManagedFileDialogExtensions.ShowManagedAsync(Avalonia.Controls.OpenFileDialog,Avalonia.Controls.Window,Avalonia.Dialogs.ManagedFileDialogOptions) + baseline/Avalonia/lib/net8.0/Avalonia.Dialogs.dll + current/Avalonia/lib/net8.0/Avalonia.Dialogs.dll + + + CP0002 + M:Avalonia.Dialogs.ManagedFileDialogExtensions.ShowManagedAsync``1(Avalonia.Controls.OpenFileDialog,Avalonia.Controls.Window,Avalonia.Dialogs.ManagedFileDialogOptions) + baseline/Avalonia/lib/net8.0/Avalonia.Dialogs.dll + current/Avalonia/lib/net8.0/Avalonia.Dialogs.dll + CP0002 M:Avalonia.Data.Binding.#ctor(System.String,Avalonia.Data.BindingMode) diff --git a/samples/ControlCatalog/Pages/DialogsPage.xaml b/samples/ControlCatalog/Pages/DialogsPage.xaml index f32cc601ab..e6b3568909 100644 --- a/samples/ControlCatalog/Pages/DialogsPage.xaml +++ b/samples/ControlCatalog/Pages/DialogsPage.xaml @@ -49,15 +49,6 @@ - - - - - - - - - diff --git a/samples/ControlCatalog/Pages/DialogsPage.xaml.cs b/samples/ControlCatalog/Pages/DialogsPage.xaml.cs index 0e2ad7d2b9..892e320afc 100644 --- a/samples/ControlCatalog/Pages/DialogsPage.xaml.cs +++ b/samples/ControlCatalog/Pages/DialogsPage.xaml.cs @@ -1,23 +1,14 @@ using System; using System.Buffers; using System.Collections.Generic; -using System.IO; using System.Linq; -using System.Reflection; using System.Security; -using System.Text; using System.Threading.Tasks; using Avalonia; using Avalonia.Controls; -using Avalonia.Controls.Presenters; using Avalonia.Dialogs; using Avalonia.Layout; -using Avalonia.Markup.Xaml; using Avalonia.Platform.Storage; -using Avalonia.Platform.Storage.FileIO; - -#pragma warning disable CS0618 // Type or member is obsolete -#nullable enable namespace ControlCatalog.Pages { @@ -70,14 +61,6 @@ namespace ControlCatalog.Pages }; - List GetFilters() - { - return GetFileTypes()?.Select(f => new FileDialogFilter - { - Name = f.Name, Extensions = f.Patterns!.ToList() - }).ToList() ?? new List(); - } - List? BuildFileTypes() { var selectedItem = (FilterSelector.SelectedItem as ComboBoxItem)?.Content @@ -168,88 +151,12 @@ namespace ControlCatalog.Pages void UpdateSuggestedFilterSelectorState() => suggestedFilterSelector.IsEnabled = useSuggestedFilter.IsChecked == true; - useSuggestedFilter.Checked += (_, _) => UpdateSuggestedFilterSelectorState(); - useSuggestedFilter.Unchecked += (_, _) => UpdateSuggestedFilterSelectorState(); + useSuggestedFilter.IsCheckedChanged += (_, _) => UpdateSuggestedFilterSelectorState(); UpdateSuggestedFilterSelectorState(); FilterSelector.SelectionChanged += (_, _) => UpdateSuggestedFilterSelector(BuildFileTypes()); UpdateSuggestedFilterSelector(BuildFileTypes()); - OpenFile.Click += async delegate - { - // Almost guaranteed to exist - var uri = Assembly.GetEntryAssembly()?.GetModules().FirstOrDefault()?.FullyQualifiedName; - var initialFileName = uri == null ? null : System.IO.Path.GetFileName(uri); - var initialDirectory = uri == null ? null : System.IO.Path.GetDirectoryName(uri); - - var result = await new OpenFileDialog() - { - Title = "Open file", - Filters = GetFilters(), - Directory = initialDirectory, - InitialFileName = initialFileName - }.ShowAsync(GetWindow()); - results.ItemsSource = result; - resultsVisible.IsVisible = result?.Any() == true; - }; - OpenMultipleFiles.Click += async delegate - { - var result = await new OpenFileDialog() - { - Title = "Open multiple files", - Filters = GetFilters(), - Directory = lastSelectedDirectory?.Path is {IsAbsoluteUri:true} path ? path.LocalPath : null, - AllowMultiple = true - }.ShowAsync(GetWindow()); - results.ItemsSource = result; - resultsVisible.IsVisible = result?.Any() == true; - }; - SaveFile.Click += async delegate - { - var filters = GetFilters(); - var result = await new SaveFileDialog() - { - Title = "Save file", - Filters = filters, - Directory = lastSelectedDirectory?.Path is {IsAbsoluteUri:true} path ? path.LocalPath : null, - DefaultExtension = filters?.Any() == true ? "txt" : null, - InitialFileName = "test.txt" - }.ShowAsync(GetWindow()); - results.ItemsSource = new[] { result }; - resultsVisible.IsVisible = result != null; - }; - SelectFolder.Click += async delegate - { - var result = await new OpenFolderDialog() - { - Title = "Select folder", - Directory = lastSelectedDirectory?.Path is {IsAbsoluteUri:true} path ? path.LocalPath : null, - }.ShowAsync(GetWindow()); - if (string.IsNullOrEmpty(result)) - { - resultsVisible.IsVisible = false; - } - else - { - SetFolder(await GetStorageProvider().TryGetFolderFromPathAsync(result!)); - results.ItemsSource = new[] { result }; - resultsVisible.IsVisible = true; - } - }; - OpenBoth.Click += async delegate - { - var result = await new OpenFileDialog() - { - Title = "Select both", - Directory = lastSelectedDirectory?.Path is {IsAbsoluteUri:true} path ? path.LocalPath : null, - AllowMultiple = true - }.ShowManagedAsync(GetWindow(), new ManagedFileDialogOptions - { - AllowDirectorySelection = true - }); - results.ItemsSource = result; - resultsVisible.IsVisible = result?.Any() == true; - }; DecoratedWindow.Click += delegate { new DecoratedWindow().Show(); diff --git a/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs b/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs index 4991a7547f..a8ab825808 100644 --- a/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs +++ b/src/Android/Avalonia.Android/Platform/AndroidInsetsManager.cs @@ -318,8 +318,6 @@ namespace Avalonia.Android.Platform } } - public bool DisplayEdgeToEdge { get => DisplaysEdgeToEdge; set => DisplayEdgeToEdgePreference = value; } - public bool DisplaysEdgeToEdge => _displaysEdgeToEdge; internal void ApplyStatusBarState() diff --git a/src/Avalonia.Controls/AppBuilder.cs b/src/Avalonia.Controls/AppBuilder.cs index dbf8482ee7..9d6bcff813 100644 --- a/src/Avalonia.Controls/AppBuilder.cs +++ b/src/Avalonia.Controls/AppBuilder.cs @@ -1,11 +1,8 @@ using System; -using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Reflection; -using System.Linq; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Platform; -using Avalonia.Media.Fonts; using Avalonia.Media; using Avalonia.Metadata; @@ -56,13 +53,6 @@ namespace Avalonia /// public Action? RenderingSubsystemInitializer { get; private set; } - /// - /// Gets a method to override a lifetime factory. - /// - [Obsolete("This property has no effect", true)] - [DebuggerBrowsable(DebuggerBrowsableState.Never)] - public Func? LifetimeOverride { get; private set; } - /// /// Gets the name of the currently selected rendering subsystem. /// diff --git a/src/Avalonia.Controls/Application.cs b/src/Avalonia.Controls/Application.cs index ff04499c42..90e272c7bd 100644 --- a/src/Avalonia.Controls/Application.cs +++ b/src/Avalonia.Controls/Application.cs @@ -30,7 +30,7 @@ namespace Avalonia /// method. /// - Tracks the lifetime of the application. /// - public class Application : AvaloniaObject, IDataContextProvider, IGlobalDataTemplates, IGlobalStyles, IThemeVariantHost, IResourceHost, IApplicationPlatformEvents, IOptionalFeatureProvider + public class Application : AvaloniaObject, IDataContextProvider, IGlobalDataTemplates, IGlobalStyles, IThemeVariantHost, IResourceHost, IOptionalFeatureProvider { /// /// The application-global data templates. @@ -61,9 +61,6 @@ namespace Avalonia /// public event EventHandler? ResourcesChanged; - [Obsolete("Use Application.Current.TryGetFeature() instead.")] - public event EventHandler? UrlsOpened; - /// public event EventHandler? ActualThemeVariantChanged; @@ -177,8 +174,8 @@ namespace Avalonia /// Currently supported lifetimes are: /// - /// - - /// - - /// - + /// - + /// - /// public IApplicationLifetime? ApplicationLifetime { @@ -283,11 +280,6 @@ namespace Avalonia public virtual void OnFrameworkInitializationCompleted() { } - - void IApplicationPlatformEvents.RaiseUrlsOpened(string[] urls) - { - UrlsOpened?.Invoke(this, new UrlOpenedEventArgs (urls)); - } private string? _name; /// diff --git a/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs b/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs index 35e63e8ef5..8d509832fa 100644 --- a/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs +++ b/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs @@ -99,16 +99,6 @@ namespace Avalonia.Controls.ApplicationLifetimes Startup?.Invoke(this, new ControlledApplicationLifetimeStartupEventArgs(args)); - var options = AvaloniaLocator.Current.GetService(); - - if(options != null && options.ProcessUrlActivationCommandLine && args.Length > 0) - { - if (Application.Current is IApplicationPlatformEvents events) - { - events.RaiseUrlsOpened(args); - } - } - var lifetimeEvents = AvaloniaLocator.Current.GetService(); if (lifetimeEvents != null) @@ -223,11 +213,6 @@ namespace Avalonia.Controls.ApplicationLifetimes private void OnShutdownRequested(object? sender, ShutdownRequestedEventArgs e) => DoShutdown(e, false); } - - public class ClassicDesktopStyleApplicationLifetimeOptions - { - public bool ProcessUrlActivationCommandLine { get; set; } - } } namespace Avalonia diff --git a/src/Avalonia.Controls/ApplicationLifetimes/IActivatableApplicationLifetime.cs b/src/Avalonia.Controls/ApplicationLifetimes/IActivatableApplicationLifetime.cs index e07e8cd6a1..23e3546d50 100644 --- a/src/Avalonia.Controls/ApplicationLifetimes/IActivatableApplicationLifetime.cs +++ b/src/Avalonia.Controls/ApplicationLifetimes/IActivatableApplicationLifetime.cs @@ -1,15 +1,8 @@ using System; -using System.Diagnostics; using Avalonia.Metadata; namespace Avalonia.Controls.ApplicationLifetimes; -[NotClientImplementable] -[Obsolete("This interface has no effect. Instead use Application.Current.TryGetFeature().", true)] -public interface IActivatableApplicationLifetime : IActivatableLifetime { - -} - /// /// An interface for ApplicationLifetimes where the application can be Activated and Deactivated. /// diff --git a/src/Avalonia.Controls/ContextMenu.cs b/src/Avalonia.Controls/ContextMenu.cs index e8c36546ba..7790251f81 100644 --- a/src/Avalonia.Controls/ContextMenu.cs +++ b/src/Avalonia.Controls/ContextMenu.cs @@ -53,17 +53,9 @@ namespace Avalonia.Controls /// /// Defines the property. /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("AvaloniaProperty", "AVP1013", - Justification = "We keep PlacementModeProperty for backward compatibility.")] public static readonly StyledProperty PlacementProperty = Popup.PlacementProperty.AddOwner(); - /// - /// Defines the property. - /// - [Obsolete("Use the Placement property instead."), EditorBrowsable(EditorBrowsableState.Never)] - public static readonly StyledProperty PlacementModeProperty = PlacementProperty; - /// /// Defines the property. /// @@ -154,14 +146,6 @@ namespace Avalonia.Controls set => SetValue(PlacementGravityProperty, value); } - /// - [Obsolete("Use the Placement property instead."), EditorBrowsable(EditorBrowsableState.Never)] - public PlacementMode PlacementMode - { - get => GetValue(PlacementProperty); - set => SetValue(PlacementProperty, value); - } - /// public PlacementMode Placement { diff --git a/src/Avalonia.Controls/Generators/ItemContainerGenerator.cs b/src/Avalonia.Controls/Generators/ItemContainerGenerator.cs index 91e8dae0a1..272bedb3cc 100644 --- a/src/Avalonia.Controls/Generators/ItemContainerGenerator.cs +++ b/src/Avalonia.Controls/Generators/ItemContainerGenerator.cs @@ -156,11 +156,5 @@ namespace Avalonia.Controls.Generators /// returned false for the item. /// public void ClearItemContainer(Control container) => _owner.ClearItemContainer(container); - - [Obsolete("Use ItemsControl.ContainerFromIndex"), EditorBrowsable(EditorBrowsableState.Never)] - public Control? ContainerFromIndex(int index) => _owner.ContainerFromIndex(index); - - [Obsolete("Use ItemsControl.IndexFromContainer"), EditorBrowsable(EditorBrowsableState.Never)] - public int IndexFromContainer(Control container) => _owner.IndexFromContainer(container); } } diff --git a/src/Avalonia.Controls/Generators/TreeItemContainerGenerator.cs b/src/Avalonia.Controls/Generators/TreeItemContainerGenerator.cs deleted file mode 100644 index 717dadb6ea..0000000000 --- a/src/Avalonia.Controls/Generators/TreeItemContainerGenerator.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; - -namespace Avalonia.Controls.Generators -{ - public class TreeItemContainerGenerator : ItemContainerGenerator - { - internal TreeItemContainerGenerator(TreeView owner) - : base(owner) - { - Index = new TreeContainerIndex(owner); - } - - public TreeContainerIndex Index { get; } - } - - public class TreeContainerIndex - { - private readonly TreeView _owner; - - internal TreeContainerIndex(TreeView owner) => _owner = owner; - - [Obsolete("Use TreeView.GetRealizedTreeContainers"), EditorBrowsable(EditorBrowsableState.Never)] - public IEnumerable Containers => _owner.GetRealizedTreeContainers(); - - [Obsolete("Use TreeView.TreeContainerFromItem"), EditorBrowsable(EditorBrowsableState.Never)] - public Control? ContainerFromItem(object item) => _owner.TreeContainerFromItem(item); - - [Obsolete("Use TreeView.TreeItemFromContainer"), EditorBrowsable(EditorBrowsableState.Never)] - public object? ItemFromContainer(Control container) => _owner.TreeItemFromContainer(container); - } -} diff --git a/src/Avalonia.Controls/ItemsControl.cs b/src/Avalonia.Controls/ItemsControl.cs index a9cf4ca8d8..c176f3aeee 100644 --- a/src/Avalonia.Controls/ItemsControl.cs +++ b/src/Avalonia.Controls/ItemsControl.cs @@ -101,11 +101,7 @@ namespace Avalonia.Controls /// Gets the for the control. /// public ItemContainerGenerator ItemContainerGenerator - { -#pragma warning disable CS0612 // Type or member is obsolete - get => _itemContainerGenerator ??= CreateItemContainerGenerator(); -#pragma warning restore CS0612 // Type or member is obsolete - } + => _itemContainerGenerator ??= new ItemContainerGenerator(this); /// /// Gets the items to display. @@ -319,19 +315,6 @@ namespace Avalonia.Controls /// The item. public void ScrollIntoView(object item) => ScrollIntoView(ItemsView.IndexOf(item)); - /// - /// Returns the that owns the specified container control. - /// - /// The container. - /// - /// The owning or null if the control is not an items container. - /// - [Obsolete("Typo, use ItemsControlFromItemContainer instead")] - [EditorBrowsable(EditorBrowsableState.Never)] - [Browsable(false)] - public static ItemsControl? ItemsControlFromItemContaner(Control container) => - ItemsControlFromItemContainer(container); - /// /// Returns the that owns the specified container control. /// @@ -672,20 +655,6 @@ namespace Avalonia.Controls ItemCount = ItemsView.Count; } - /// - /// Creates the - /// - /// - /// This method is only present for backwards compatibility with 0.10.x in order for - /// TreeView to be able to create a . Can be - /// removed in 12.0. - /// - [Obsolete, EditorBrowsable(EditorBrowsableState.Never)] - private protected virtual ItemContainerGenerator CreateItemContainerGenerator() - { - return new ItemContainerGenerator(this); - } - internal void AddLogicalChild(Control c) { if (!LogicalChildren.Contains(c)) diff --git a/src/Avalonia.Controls/Platform/Dialogs/ISystemDialogImpl.cs b/src/Avalonia.Controls/Platform/Dialogs/ISystemDialogImpl.cs deleted file mode 100644 index a593caecaf..0000000000 --- a/src/Avalonia.Controls/Platform/Dialogs/ISystemDialogImpl.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.ComponentModel; -using System.Threading.Tasks; -using Avalonia.Metadata; - -namespace Avalonia.Controls.Platform -{ - /// - /// Defines a platform-specific system dialog implementation. - /// - [Obsolete("Use Window.StorageProvider API or TopLevel.StorageProvider API"), EditorBrowsable(EditorBrowsableState.Never)] - [Unstable] - public interface ISystemDialogImpl - { - /// - /// Shows a file dialog. - /// - /// The details of the file dialog to show. - /// The parent window. - /// A task returning the selected filenames. - Task ShowFileDialogAsync(FileDialog dialog, Window parent); - - Task ShowFolderDialogAsync(OpenFolderDialog dialog, Window parent); - } -} diff --git a/src/Avalonia.Controls/Platform/Dialogs/SystemDialogImpl.cs b/src/Avalonia.Controls/Platform/Dialogs/SystemDialogImpl.cs deleted file mode 100644 index b2d193fcaf..0000000000 --- a/src/Avalonia.Controls/Platform/Dialogs/SystemDialogImpl.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using System.ComponentModel; -using System.Linq; -using System.Threading.Tasks; -using Avalonia.Platform.Storage; - -namespace Avalonia.Controls.Platform -{ - /// - /// Defines a platform-specific system dialog implementation. - /// - [Obsolete, EditorBrowsable(EditorBrowsableState.Never)] - internal class SystemDialogImpl : ISystemDialogImpl - { - public async Task ShowFileDialogAsync(FileDialog dialog, Window parent) - { - if (dialog is OpenFileDialog openDialog) - { - var filePicker = parent.StorageProvider; - if (!filePicker.CanOpen) - { - return null; - } - - var options = openDialog.ToFilePickerOpenOptions(); - - var files = await filePicker.OpenFilePickerAsync(options); - return files - .Select(file => file.TryGetLocalPath() ?? file.Name) - .ToArray(); - } - else if (dialog is SaveFileDialog saveDialog) - { - var filePicker = parent.StorageProvider; - if (!filePicker.CanSave) - { - return null; - } - - var options = saveDialog.ToFilePickerSaveOptions(); - - var file = await filePicker.SaveFilePickerAsync(options); - if (file is null) - { - return null; - } - - var filePath = file.TryGetLocalPath() ?? file.Name; - return new[] { filePath }; - } - return null; - } - - public async Task ShowFolderDialogAsync(OpenFolderDialog dialog, Window parent) - { - var filePicker = parent.StorageProvider; - if (!filePicker.CanPickFolder) - { - return null; - } - - var options = dialog.ToFolderPickerOpenOptions(); - - var folders = await filePicker.OpenFolderPickerAsync(options); - return folders - .Select(folder => folder.TryGetLocalPath() ?? folder.Name) - .FirstOrDefault(u => u is not null); - } - } -} diff --git a/src/Avalonia.Controls/Platform/IApplicationPlatformEvents.cs b/src/Avalonia.Controls/Platform/IApplicationPlatformEvents.cs deleted file mode 100644 index dade84afc4..0000000000 --- a/src/Avalonia.Controls/Platform/IApplicationPlatformEvents.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Avalonia.Metadata; - -namespace Avalonia.Platform -{ - [Unstable("This interface will be removed in 12.0.")] - public interface IApplicationPlatformEvents - { - void RaiseUrlsOpened(string[] urls); - } -} diff --git a/src/Avalonia.Controls/Platform/IInsetsManager.cs b/src/Avalonia.Controls/Platform/IInsetsManager.cs index fb68e980f4..1cbd1d64f4 100644 --- a/src/Avalonia.Controls/Platform/IInsetsManager.cs +++ b/src/Avalonia.Controls/Platform/IInsetsManager.cs @@ -3,7 +3,6 @@ using Avalonia.Media; using Avalonia.Metadata; using Avalonia.Threading; -#nullable enable namespace Avalonia.Controls.Platform { [NotClientImplementable] @@ -19,13 +18,6 @@ namespace Avalonia.Controls.Platform /// bool DisplayEdgeToEdgePreference { get; set; } - - /// - /// Gets or sets whether the window draws edge to edge. behind any visible system bars. - /// - [Obsolete("Use DisplayEdgeToEdgePreference")] - bool DisplayEdgeToEdge { get; set; } - /// /// Gets whether the window is currently displaying edge to edge. /// @@ -52,7 +44,6 @@ namespace Avalonia.Controls.Platform { public virtual bool? IsSystemBarVisible { get; set; } public virtual bool DisplayEdgeToEdgePreference { get; set; } - public virtual bool DisplayEdgeToEdge { get => DisplaysEdgeToEdge; set => DisplayEdgeToEdgePreference = value; } public virtual Thickness SafeAreaPadding { get; protected set; } public virtual Color? SystemBarColor { get; set; } public virtual bool DisplaysEdgeToEdge => DisplayEdgeToEdgePreference; diff --git a/src/Avalonia.Controls/Platform/Screen.cs b/src/Avalonia.Controls/Platform/Screen.cs index c3b62860c7..493a5cc941 100644 --- a/src/Avalonia.Controls/Platform/Screen.cs +++ b/src/Avalonia.Controls/Platform/Screen.cs @@ -63,10 +63,6 @@ namespace Avalonia.Platform /// public double Scaling { get; protected set; } = 1; - /// - [Obsolete("Use the Scaling property instead.", true), EditorBrowsable(EditorBrowsableState.Never)] - public double PixelDensity => Scaling; - /// /// Gets the overall pixel-size and position of the screen. /// @@ -89,10 +85,6 @@ namespace Avalonia.Platform /// public bool IsPrimary { get; protected set; } - /// - [Obsolete("Use the IsPrimary property instead.", true), EditorBrowsable(EditorBrowsableState.Never)] - public bool Primary => IsPrimary; - private protected Screen() { } /// diff --git a/src/Avalonia.Controls/Primitives/Popup.cs b/src/Avalonia.Controls/Primitives/Popup.cs index 6de5b1ea78..76fa73f4c3 100644 --- a/src/Avalonia.Controls/Primitives/Popup.cs +++ b/src/Avalonia.Controls/Primitives/Popup.cs @@ -76,12 +76,6 @@ namespace Avalonia.Controls.Primitives public static readonly StyledProperty PlacementProperty = AvaloniaProperty.Register(nameof(Placement), defaultValue: PlacementMode.Bottom); - /// - /// Defines the property. - /// - [Obsolete("Use the Placement property instead."), EditorBrowsable(EditorBrowsableState.Never)] - public static readonly StyledProperty PlacementModeProperty = PlacementProperty; - /// /// Defines the property. /// @@ -277,14 +271,6 @@ namespace Avalonia.Controls.Primitives set => SetValue(PlacementGravityProperty, value); } - /// - [Obsolete("Use the Placement property instead."), EditorBrowsable(EditorBrowsableState.Never)] - public PlacementMode PlacementMode - { - get => GetValue(PlacementProperty); - set => SetValue(PlacementProperty, value); - } - /// /// Gets or sets the desired placement of the popup in relation to the . /// diff --git a/src/Avalonia.Controls/Primitives/ToggleButton.cs b/src/Avalonia.Controls/Primitives/ToggleButton.cs index fa1bc76de4..2a5c1c3cf3 100644 --- a/src/Avalonia.Controls/Primitives/ToggleButton.cs +++ b/src/Avalonia.Controls/Primitives/ToggleButton.cs @@ -26,33 +26,6 @@ namespace Avalonia.Controls.Primitives public static readonly StyledProperty IsThreeStateProperty = AvaloniaProperty.Register(nameof(IsThreeState)); - /// - /// Defines the event. - /// - [Obsolete("Use IsCheckedChangedEvent instead."), EditorBrowsable(EditorBrowsableState.Never)] - public static readonly RoutedEvent CheckedEvent = - RoutedEvent.Register( - nameof(Checked), - RoutingStrategies.Bubble); - - /// - /// Defines the event. - /// - [Obsolete("Use IsCheckedChangedEvent instead."), EditorBrowsable(EditorBrowsableState.Never)] - public static readonly RoutedEvent UncheckedEvent = - RoutedEvent.Register( - nameof(Unchecked), - RoutingStrategies.Bubble); - - /// - /// Defines the event. - /// - [Obsolete("Use IsCheckedChangedEvent instead."), EditorBrowsable(EditorBrowsableState.Never)] - public static readonly RoutedEvent IndeterminateEvent = - RoutedEvent.Register( - nameof(Indeterminate), - RoutingStrategies.Bubble); - /// /// Defines the event. /// @@ -70,36 +43,6 @@ namespace Avalonia.Controls.Primitives UpdatePseudoClasses(IsChecked); } - /// - /// Raised when a is checked. - /// - [Obsolete("Use IsCheckedChanged instead."), EditorBrowsable(EditorBrowsableState.Never)] - public event EventHandler? Checked - { - add => AddHandler(CheckedEvent, value); - remove => RemoveHandler(CheckedEvent, value); - } - - /// - /// Raised when a is unchecked. - /// - [Obsolete("Use IsCheckedChanged instead."), EditorBrowsable(EditorBrowsableState.Never)] - public event EventHandler? Unchecked - { - add => AddHandler(UncheckedEvent, value); - remove => RemoveHandler(UncheckedEvent, value); - } - - /// - /// Raised when a is neither checked nor unchecked. - /// - [Obsolete("Use IsCheckedChanged instead."), EditorBrowsable(EditorBrowsableState.Never)] - public event EventHandler? Indeterminate - { - add => AddHandler(IndeterminateEvent, value); - remove => RemoveHandler(IndeterminateEvent, value); - } - /// /// Raised when the property value changes. /// @@ -165,36 +108,6 @@ namespace Avalonia.Controls.Primitives SetCurrentValue(IsCheckedProperty, newValue); } - /// - /// Called when becomes true. - /// - /// Event arguments for the routed event that is raised by the default implementation of this method. - [Obsolete("Use OnIsCheckedChanged instead."), EditorBrowsable(EditorBrowsableState.Never)] - protected virtual void OnChecked(RoutedEventArgs e) - { - RaiseEvent(e); - } - - /// - /// Called when becomes false. - /// - /// Event arguments for the routed event that is raised by the default implementation of this method. - [Obsolete("Use OnIsCheckedChanged instead."), EditorBrowsable(EditorBrowsableState.Never)] - protected virtual void OnUnchecked(RoutedEventArgs e) - { - RaiseEvent(e); - } - - /// - /// Called when becomes null. - /// - /// Event arguments for the routed event that is raised by the default implementation of this method. - [Obsolete("Use OnIsCheckedChanged instead."), EditorBrowsable(EditorBrowsableState.Never)] - protected virtual void OnIndeterminate(RoutedEventArgs e) - { - RaiseEvent(e); - } - /// /// Called when changes. /// @@ -217,24 +130,7 @@ namespace Avalonia.Controls.Primitives if (change.Property == IsCheckedProperty) { var newValue = change.GetNewValue(); - UpdatePseudoClasses(newValue); - -#pragma warning disable CS0618 // Type or member is obsolete - switch (newValue) - { - case true: - OnChecked(new RoutedEventArgs(CheckedEvent)); - break; - case false: - OnUnchecked(new RoutedEventArgs(UncheckedEvent)); - break; - default: - OnIndeterminate(new RoutedEventArgs(IndeterminateEvent)); - break; - } -#pragma warning restore CS0618 // Type or member is obsolete - OnIsCheckedChanged(new RoutedEventArgs(IsCheckedChangedEvent)); } } diff --git a/src/Avalonia.Controls/Screens.cs b/src/Avalonia.Controls/Screens.cs index d940900e2c..4d6e88963d 100644 --- a/src/Avalonia.Controls/Screens.cs +++ b/src/Avalonia.Controls/Screens.cs @@ -116,17 +116,6 @@ namespace Avalonia.Controls return _iScreenImpl.ScreenFromTopLevel(topLevel.PlatformImpl); } - /// - /// Retrieves a Screen for the display that contains the specified . - /// - /// The window impl for which to retrieve the Screen. - /// The . - [Obsolete("Use ScreenFromWindow(WindowBase) overload.", true), EditorBrowsable(EditorBrowsableState.Never)] - public Screen? ScreenFromWindow(IWindowBaseImpl window) - { - return _iScreenImpl.ScreenFromWindow(window); - } - /// /// Retrieves a Screen for the display that contains the specified point. /// diff --git a/src/Avalonia.Controls/SystemDialog.cs b/src/Avalonia.Controls/SystemDialog.cs deleted file mode 100644 index 8d4dab11d7..0000000000 --- a/src/Avalonia.Controls/SystemDialog.cs +++ /dev/null @@ -1,206 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Threading.Tasks; -using Avalonia.Controls.Platform; -using Avalonia.Platform.Storage; -using Avalonia.Platform.Storage.FileIO; - -namespace Avalonia.Controls -{ - /// - /// Base class for system file dialogs. - /// - [Obsolete("Use Window.StorageProvider API or TopLevel.StorageProvider API"), EditorBrowsable(EditorBrowsableState.Never)] - public abstract class FileDialog : FileSystemDialog - { - /// - /// Gets or sets a collection of filters which determine the types of files displayed in an - /// or an . - /// - public List Filters { get; set; } = new List(); - - /// - /// Gets or sets initial file name that is displayed when the dialog is opened. - /// - public string? InitialFileName { get; set; } - } - - /// - /// Base class for system file and directory dialogs. - /// - [Obsolete("Use Window.StorageProvider API or TopLevel.StorageProvider API"), EditorBrowsable(EditorBrowsableState.Never)] - public abstract class FileSystemDialog : SystemDialog - { - /// - /// Gets or sets the initial directory that will be displayed when the file system dialog - /// is opened. - /// - public string? Directory { get; set; } - } - - /// - /// Represents a system dialog that prompts the user to select a location for saving a file. - /// - [Obsolete("Use Window.StorageProvider API or TopLevel.StorageProvider API"), EditorBrowsable(EditorBrowsableState.Never)] - public class SaveFileDialog : FileDialog - { - /// - /// Gets or sets the default extension to be used to save the file (including the period "."). - /// - public string? DefaultExtension { get; set; } - - /// - /// Gets or sets a value indicating whether to display a warning if the user specifies the name of a file that already exists. - /// - public bool? ShowOverwritePrompt { get; set; } - - /// - /// Shows the save file dialog. - /// - /// The parent window. - /// - /// A task that on completion contains the full path of the save location, or null if the - /// dialog was canceled. - /// - public async Task ShowAsync(Window parent) - { - if(parent == null) - throw new ArgumentNullException(nameof(parent)); - var service = AvaloniaLocator.Current.GetRequiredService(); - return (await service.ShowFileDialogAsync(this, parent) ?? - Array.Empty()).FirstOrDefault(); - } - - public FilePickerSaveOptions ToFilePickerSaveOptions() - { - return new FilePickerSaveOptions - { - SuggestedFileName = InitialFileName, - DefaultExtension = DefaultExtension, - FileTypeChoices = Filters?.Select(f => new FilePickerFileType(f.Name!) { Patterns = f.Extensions.Select(e => $"*.{e}").ToArray() }).ToArray(), - Title = Title, - SuggestedStartLocation = Directory is { } directory - ? new BclStorageFolder(new System.IO.DirectoryInfo(directory)) - : null, - ShowOverwritePrompt = ShowOverwritePrompt - }; - } - } - - /// - /// Represents a system dialog that allows the user to select one or more files to open. - /// - [Obsolete("Use Window.StorageProvider API or TopLevel.StorageProvider API"), EditorBrowsable(EditorBrowsableState.Never)] - public class OpenFileDialog : FileDialog - { - /// - /// Gets or sets a value indicating whether the user can select multiple files. - /// - public bool AllowMultiple { get; set; } - - /// - /// Shows the open file dialog. - /// - /// The parent window. - /// - /// A task that on completion returns an array containing the full path to the selected - /// files, or null if the dialog was canceled. - /// - public Task ShowAsync(Window parent) - { - if(parent == null) - throw new ArgumentNullException(nameof(parent)); - var service = AvaloniaLocator.Current.GetRequiredService(); - return service.ShowFileDialogAsync(this, parent); - } - - public FilePickerOpenOptions ToFilePickerOpenOptions() - { - return new FilePickerOpenOptions - { - AllowMultiple = AllowMultiple, - FileTypeFilter = Filters?.Select(f => new FilePickerFileType(f.Name!) { Patterns = f.Extensions.Select(e => $"*.{e}").ToArray() }).ToArray(), - Title = Title, - SuggestedStartLocation = Directory is { } directory - ? new BclStorageFolder(new System.IO.DirectoryInfo(directory)) - : null - }; - } - } - - /// - /// Represents a system dialog that allows the user to select a directory. - /// - [Obsolete("Use Window.StorageProvider API or TopLevel.StorageProvider API"), EditorBrowsable(EditorBrowsableState.Never)] - public class OpenFolderDialog : FileSystemDialog - { - /// - /// Shows the open folder dialog. - /// - /// The parent window. - /// - /// A task that on completion returns the full path of the selected directory, or null if the - /// dialog was canceled. - /// - public Task ShowAsync(Window parent) - { - if(parent == null) - throw new ArgumentNullException(nameof(parent)); - var service = AvaloniaLocator.Current.GetRequiredService(); - return service.ShowFolderDialogAsync(this, parent); - } - - public FolderPickerOpenOptions ToFolderPickerOpenOptions() - { - return new FolderPickerOpenOptions - { - Title = Title, - SuggestedStartLocation = Directory is { } directory - ? new BclStorageFolder(new System.IO.DirectoryInfo(directory)) - : null - }; - } - } - - - /// - /// Base class for system dialogs. - /// - [Obsolete("Use Window.StorageProvider API or TopLevel.StorageProvider API"), EditorBrowsable(EditorBrowsableState.Never)] - public abstract class SystemDialog - { - static SystemDialog() - { - if (AvaloniaLocator.Current.GetService() is null) - { - // Register default implementation. - AvaloniaLocator.CurrentMutable.Bind().ToSingleton(); - } - } - - /// - /// Gets or sets the dialog title. - /// - public string? Title { get; set; } - } - - /// - /// Represents a filter in an or an . - /// - [Obsolete("Use Window.StorageProvider API or TopLevel.StorageProvider API"), EditorBrowsable(EditorBrowsableState.Never)] - public class FileDialogFilter - { - /// - /// Gets or sets the name of the filter, e.g. ("Text files (.txt)"). - /// - public string? Name { get; set; } - - /// - /// Gets or sets a list of file extensions matched by the filter (e.g. "txt" or "*" for all - /// files). - /// - public List Extensions { get; set; } = new List(); - } -} diff --git a/src/Avalonia.Controls/TabItem.cs b/src/Avalonia.Controls/TabItem.cs index 78785876ad..0f3c60cbff 100644 --- a/src/Avalonia.Controls/TabItem.cs +++ b/src/Avalonia.Controls/TabItem.cs @@ -71,11 +71,6 @@ namespace Avalonia.Controls protected override AutomationPeer OnCreateAutomationPeer() => new ListItemAutomationPeer(this); - [Obsolete("Owner manages its children properties by itself")] - protected void SubscribeToOwnerProperties(AvaloniaObject owner) - { - } - private static void OnAccessKeyPressed(TabItem tabItem, AccessKeyPressedEventArgs e) { if (e.Handled || (e.Target != null && tabItem.IsSelected)) diff --git a/src/Avalonia.Controls/TreeView.cs b/src/Avalonia.Controls/TreeView.cs index 809e200e8c..068ffbcb66 100644 --- a/src/Avalonia.Controls/TreeView.cs +++ b/src/Avalonia.Controls/TreeView.cs @@ -76,12 +76,6 @@ namespace Avalonia.Controls remove => RemoveHandler(SelectingItemsControl.SelectionChangedEvent, value); } - /// - /// Gets the for the tree view. - /// - public new TreeItemContainerGenerator ItemContainerGenerator => - (TreeItemContainerGenerator)base.ItemContainerGenerator; - /// /// Gets or sets a value indicating whether to automatically scroll to newly selected items. /// @@ -773,12 +767,6 @@ namespace Avalonia.Controls } } - [Obsolete, EditorBrowsable(EditorBrowsableState.Never)] - private protected override ItemContainerGenerator CreateItemContainerGenerator() - { - return new TreeItemContainerGenerator(this); - } - /// /// Find which node is first in hierarchy. /// diff --git a/src/Avalonia.Dialogs/ManagedFileDialogExtensions.cs b/src/Avalonia.Dialogs/ManagedFileDialogExtensions.cs index 1157c5516f..c8f7d388f5 100644 --- a/src/Avalonia.Dialogs/ManagedFileDialogExtensions.cs +++ b/src/Avalonia.Dialogs/ManagedFileDialogExtensions.cs @@ -1,11 +1,7 @@ using System; -using System.ComponentModel; -using System.Linq; using System.Runtime.Versioning; -using System.Threading.Tasks; using Avalonia.Controls; using Avalonia.Controls.Platform; -using Avalonia.Controls.Primitives; using Avalonia.Platform.Storage; namespace Avalonia.Dialogs @@ -41,22 +37,6 @@ namespace Avalonia.Dialogs return builder.UseManagedSystemDialogs(() => new TWindow()); } - [Obsolete("Use Window.StorageProvider API or TopLevel.StorageProvider API"), EditorBrowsable(EditorBrowsableState.Never)] - public static Task ShowManagedAsync(this OpenFileDialog dialog, Window parent, - ManagedFileDialogOptions? options = null) => ShowManagedAsync(dialog, parent, options); - - [Obsolete("Use Window.StorageProvider API or TopLevel.StorageProvider API"), EditorBrowsable(EditorBrowsableState.Never)] - public static async Task ShowManagedAsync(this OpenFileDialog dialog, Window parent, - ManagedFileDialogOptions? options = null) where TWindow : Window, new() - { - var impl = new ManagedStorageProvider(parent, PrepareOptions(options, () => new TWindow())); - - var files = await impl.OpenFilePickerAsync(dialog.ToFilePickerOpenOptions()); - return files - .Select(file => file.TryGetLocalPath() ?? file.Name) - .ToArray(); - } - private static ManagedFileDialogOptions? PrepareOptions( ManagedFileDialogOptions? optionsOverride = null, Func? customRootFactory = null) diff --git a/src/Avalonia.Native/AvaloniaNativeApplicationPlatform.cs b/src/Avalonia.Native/AvaloniaNativeApplicationPlatform.cs index 68e0c5dce6..b05aa0576e 100644 --- a/src/Avalonia.Native/AvaloniaNativeApplicationPlatform.cs +++ b/src/Avalonia.Native/AvaloniaNativeApplicationPlatform.cs @@ -16,8 +16,6 @@ namespace Avalonia.Native void IAvnApplicationEvents.FilesOpened(IAvnStringArray urls) { - ((IApplicationPlatformEvents?)Application.Current)?.RaiseUrlsOpened(urls.ToStringArray()); - if (AvaloniaLocator.Current.GetService() is ActivatableLifetimeBase lifetime && AvaloniaLocator.Current.GetService() is StorageProviderApi storageApi) { @@ -41,9 +39,6 @@ namespace Avalonia.Native void IAvnApplicationEvents.UrlsOpened(IAvnStringArray urls) { - // Raise the urls opened event to be compatible with legacy behavior. - ((IApplicationPlatformEvents?)Application.Current)?.RaiseUrlsOpened(urls.ToStringArray()); - if (AvaloniaLocator.Current.GetService() is ActivatableLifetimeBase lifetime && AvaloniaLocator.Current.GetService() is StorageProviderApi storageApi) { diff --git a/tests/Avalonia.Controls.UnitTests/Primitives/ToggleButtonTests.cs b/tests/Avalonia.Controls.UnitTests/Primitives/ToggleButtonTests.cs index 9fc14f0b34..ac35c4b33f 100644 --- a/tests/Avalonia.Controls.UnitTests/Primitives/ToggleButtonTests.cs +++ b/tests/Avalonia.Controls.UnitTests/Primitives/ToggleButtonTests.cs @@ -2,8 +2,6 @@ using Avalonia.UnitTests; using Xunit; -#pragma warning disable CS0618 // Type or member is obsolete -- we're testing these members - namespace Avalonia.Controls.Primitives.UnitTests { public class ToggleButtonTests : ScopedTestBase @@ -64,51 +62,47 @@ namespace Avalonia.Controls.Primitives.UnitTests } [Fact] - public void ToggleButton_Events_Are_Raised_On_Is_Checked_Changes() + public void ToggleButton_IsCheckedChanged_Is_Raised_On_Is_Checked_Changes() { var threeStateButton = new ToggleButton(); + Assert.False(threeStateButton.IsChecked); - bool checkedRaised = false; - threeStateButton.Checked += (_, __) => checkedRaised = true; + var changeCount = 0; + threeStateButton.IsCheckedChanged += (_, _) => ++changeCount; threeStateButton.IsChecked = true; - Assert.True(checkedRaised); - - bool uncheckedRaised = false; - threeStateButton.Unchecked += (_, __) => uncheckedRaised = true; + Assert.Equal(1, changeCount); + Assert.True(threeStateButton.IsChecked); threeStateButton.IsChecked = false; - Assert.True(uncheckedRaised); - - bool indeterminateRaised = false; - threeStateButton.Indeterminate += (_, __) => indeterminateRaised = true; + Assert.Equal(2, changeCount); + Assert.False(threeStateButton.IsChecked); threeStateButton.IsChecked = null; - Assert.True(indeterminateRaised); + Assert.Equal(3, changeCount); + Assert.Null(threeStateButton.IsChecked); } [Fact] - public void ToggleButton_Events_Are_Raised_When_Toggling() + public void ToggleButton_IsCheckedChanged_Is_Raised_When_Toggling() { var threeStateButton = new TestToggleButton { IsThreeState = true }; + Assert.False(threeStateButton.IsChecked); - bool checkedRaised = false; - threeStateButton.Checked += (_, __) => checkedRaised = true; + var changeCount = 0; + threeStateButton.IsCheckedChanged += (_, _) => ++changeCount; threeStateButton.Toggle(); - Assert.True(checkedRaised); - - bool indeterminateRaised = false; - threeStateButton.Indeterminate += (_, __) => indeterminateRaised = true; + Assert.Equal(1, changeCount); + Assert.True(threeStateButton.IsChecked); threeStateButton.Toggle(); - Assert.True(indeterminateRaised); - - bool uncheckedRaised = false; - threeStateButton.Unchecked += (_, __) => uncheckedRaised = true; + Assert.Equal(2, changeCount); + Assert.Null(threeStateButton.IsChecked); threeStateButton.Toggle(); - Assert.True(uncheckedRaised); + Assert.Equal(3, changeCount); + Assert.False(threeStateButton.IsChecked); } private class Class1 : NotifyingBase