From 146ebd201d07180104492e4620dbd24a45583dfb Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 22 May 2023 15:30:59 +0200 Subject: [PATCH] Remove IPresenter and IContentPresenter. --- src/Avalonia.Controls/ContentControl.cs | 10 ++++---- .../Presenters/ContentPresenter.cs | 2 +- .../Presenters/IContentPresenter.cs | 23 ------------------- .../Presenters/IContentPresenterHost.cs | 4 ++-- .../Presenters/IPresenter.cs | 20 ---------------- .../Presenters/ScrollContentPresenter.cs | 2 +- .../Primitives/HeaderedContentControl.cs | 4 ++-- .../Primitives/HeaderedItemsControl.cs | 8 +++---- .../HeaderedSelectingItemsControl.cs | 8 +++---- .../Primitives/IPopupHost.cs | 2 +- src/Avalonia.Controls/ScrollViewer.cs | 2 +- src/Avalonia.Controls/SplitView/SplitView.cs | 2 +- src/Avalonia.Controls/TabControl.cs | 8 +++---- src/Avalonia.Controls/ToggleSwitch.cs | 6 ++--- .../TransitioningContentControl.cs | 2 +- tests/Avalonia.UnitTests/TestExtensions.cs | 13 ----------- 16 files changed, 30 insertions(+), 86 deletions(-) delete mode 100644 src/Avalonia.Controls/Presenters/IContentPresenter.cs delete mode 100644 src/Avalonia.Controls/Presenters/IPresenter.cs delete mode 100644 tests/Avalonia.UnitTests/TestExtensions.cs diff --git a/src/Avalonia.Controls/ContentControl.cs b/src/Avalonia.Controls/ContentControl.cs index 0362f7ade4..867dca2be1 100644 --- a/src/Avalonia.Controls/ContentControl.cs +++ b/src/Avalonia.Controls/ContentControl.cs @@ -13,7 +13,7 @@ namespace Avalonia.Controls /// /// Displays according to an . /// - [TemplatePart("PART_ContentPresenter", typeof(IContentPresenter))] + [TemplatePart("PART_ContentPresenter", typeof(ContentPresenter))] public class ContentControl : TemplatedControl, IContentControl, IContentPresenterHost { /// @@ -68,7 +68,7 @@ namespace Avalonia.Controls /// /// Gets the presenter from the control's template. /// - public IContentPresenter? Presenter + public ContentPresenter? Presenter { get; private set; @@ -96,16 +96,16 @@ namespace Avalonia.Controls IAvaloniaList IContentPresenterHost.LogicalChildren => LogicalChildren; /// - bool IContentPresenterHost.RegisterContentPresenter(IContentPresenter presenter) + bool IContentPresenterHost.RegisterContentPresenter(ContentPresenter presenter) { return RegisterContentPresenter(presenter); } /// - /// Called when an is registered with the control. + /// Called when an is registered with the control. /// /// The presenter. - protected virtual bool RegisterContentPresenter(IContentPresenter presenter) + protected virtual bool RegisterContentPresenter(ContentPresenter presenter) { if (presenter.Name == "PART_ContentPresenter") { diff --git a/src/Avalonia.Controls/Presenters/ContentPresenter.cs b/src/Avalonia.Controls/Presenters/ContentPresenter.cs index 972fd2d4ff..7a81454bb0 100644 --- a/src/Avalonia.Controls/Presenters/ContentPresenter.cs +++ b/src/Avalonia.Controls/Presenters/ContentPresenter.cs @@ -17,7 +17,7 @@ namespace Avalonia.Controls.Presenters /// Presents a single item of data inside a template. /// [PseudoClasses(":empty")] - public class ContentPresenter : Control, IContentPresenter + public class ContentPresenter : Control { /// /// Defines the property. diff --git a/src/Avalonia.Controls/Presenters/IContentPresenter.cs b/src/Avalonia.Controls/Presenters/IContentPresenter.cs deleted file mode 100644 index 01aec3855f..0000000000 --- a/src/Avalonia.Controls/Presenters/IContentPresenter.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Avalonia.Controls.Primitives; -using Avalonia.Metadata; - -namespace Avalonia.Controls.Presenters -{ - /// - /// Interface for controls that present a single item of data inside a - /// template. - /// - [NotClientImplementable] - public interface IContentPresenter : IPresenter - { - /// - /// Gets the control displayed by the presenter. - /// - Control? Child { get; } - - /// - /// Gets or sets the content to be displayed by the presenter. - /// - object? Content { get; set; } - } -} diff --git a/src/Avalonia.Controls/Presenters/IContentPresenterHost.cs b/src/Avalonia.Controls/Presenters/IContentPresenterHost.cs index dd1aafba65..6b1c733f37 100644 --- a/src/Avalonia.Controls/Presenters/IContentPresenterHost.cs +++ b/src/Avalonia.Controls/Presenters/IContentPresenterHost.cs @@ -22,13 +22,13 @@ namespace Avalonia.Controls.Presenters IAvaloniaList LogicalChildren { get; } /// - /// Registers an with a host control. + /// Registers an with a host control. /// /// The content presenter. /// /// True if the content presenter should add its child to the logical children of the /// host; otherwise false. /// - bool RegisterContentPresenter(IContentPresenter presenter); + bool RegisterContentPresenter(ContentPresenter presenter); } } diff --git a/src/Avalonia.Controls/Presenters/IPresenter.cs b/src/Avalonia.Controls/Presenters/IPresenter.cs deleted file mode 100644 index dc1d40cdcd..0000000000 --- a/src/Avalonia.Controls/Presenters/IPresenter.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Avalonia.Controls.Primitives; -using Avalonia.Metadata; - -namespace Avalonia.Controls.Presenters -{ - /// - /// Interface for presenters such as and - /// . - /// - /// - /// A presenter is the gateway between a templated control and its content. When - /// a control which implements is found in the template - /// of a then that signals that the visual child - /// of the presenter is not a part of the template. - /// - [NotClientImplementable] - public interface IPresenter : INamed - { - } -} diff --git a/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs b/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs index 3ee50ab547..1c9dd79b13 100644 --- a/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs +++ b/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs @@ -13,7 +13,7 @@ namespace Avalonia.Controls.Presenters /// /// Presents a scrolling view of content inside a . /// - public class ScrollContentPresenter : ContentPresenter, IPresenter, IScrollable, IScrollAnchorProvider + public class ScrollContentPresenter : ContentPresenter, IScrollable, IScrollAnchorProvider { private const double EdgeDetectionTolerance = 0.1; diff --git a/src/Avalonia.Controls/Primitives/HeaderedContentControl.cs b/src/Avalonia.Controls/Primitives/HeaderedContentControl.cs index d44ef5666c..d989550222 100644 --- a/src/Avalonia.Controls/Primitives/HeaderedContentControl.cs +++ b/src/Avalonia.Controls/Primitives/HeaderedContentControl.cs @@ -41,7 +41,7 @@ namespace Avalonia.Controls.Primitives /// /// Gets the header presenter from the control's template. /// - public IContentPresenter? HeaderPresenter + public ContentPresenter? HeaderPresenter { get; private set; @@ -57,7 +57,7 @@ namespace Avalonia.Controls.Primitives } /// - protected override bool RegisterContentPresenter(IContentPresenter presenter) + protected override bool RegisterContentPresenter(ContentPresenter presenter) { var result = base.RegisterContentPresenter(presenter); diff --git a/src/Avalonia.Controls/Primitives/HeaderedItemsControl.cs b/src/Avalonia.Controls/Primitives/HeaderedItemsControl.cs index d71439ece6..2236dc8fe4 100644 --- a/src/Avalonia.Controls/Primitives/HeaderedItemsControl.cs +++ b/src/Avalonia.Controls/Primitives/HeaderedItemsControl.cs @@ -56,7 +56,7 @@ namespace Avalonia.Controls.Primitives /// /// Gets the header presenter from the control's template. /// - public IContentPresenter? HeaderPresenter + public ContentPresenter? HeaderPresenter { get; private set; @@ -77,16 +77,16 @@ namespace Avalonia.Controls.Primitives } /// - bool IContentPresenterHost.RegisterContentPresenter(IContentPresenter presenter) + bool IContentPresenterHost.RegisterContentPresenter(ContentPresenter presenter) { return RegisterContentPresenter(presenter); } /// - /// Called when an is registered with the control. + /// Called when an is registered with the control. /// /// The presenter. - protected virtual bool RegisterContentPresenter(IContentPresenter presenter) + protected virtual bool RegisterContentPresenter(ContentPresenter presenter) { if (presenter.Name == "PART_HeaderPresenter") { diff --git a/src/Avalonia.Controls/Primitives/HeaderedSelectingItemsControl.cs b/src/Avalonia.Controls/Primitives/HeaderedSelectingItemsControl.cs index 88ca1f1fe1..c0075cb389 100644 --- a/src/Avalonia.Controls/Primitives/HeaderedSelectingItemsControl.cs +++ b/src/Avalonia.Controls/Primitives/HeaderedSelectingItemsControl.cs @@ -56,7 +56,7 @@ namespace Avalonia.Controls.Primitives /// /// Gets the header presenter from the control's template. /// - public IContentPresenter? HeaderPresenter + public ContentPresenter? HeaderPresenter { get; private set; @@ -66,7 +66,7 @@ namespace Avalonia.Controls.Primitives IAvaloniaList IContentPresenterHost.LogicalChildren => LogicalChildren; /// - bool IContentPresenterHost.RegisterContentPresenter(IContentPresenter presenter) + bool IContentPresenterHost.RegisterContentPresenter(ContentPresenter presenter) { return RegisterContentPresenter(presenter); } @@ -83,10 +83,10 @@ namespace Avalonia.Controls.Primitives } /// - /// Called when an is registered with the control. + /// Called when an is registered with the control. /// /// The presenter. - protected virtual bool RegisterContentPresenter(IContentPresenter presenter) + protected virtual bool RegisterContentPresenter(ContentPresenter presenter) { if (presenter.Name == "PART_HeaderPresenter") { diff --git a/src/Avalonia.Controls/Primitives/IPopupHost.cs b/src/Avalonia.Controls/Primitives/IPopupHost.cs index 90fbdcdbec..0aad838b0f 100644 --- a/src/Avalonia.Controls/Primitives/IPopupHost.cs +++ b/src/Avalonia.Controls/Primitives/IPopupHost.cs @@ -52,7 +52,7 @@ namespace Avalonia.Controls.Primitives /// /// Gets the presenter from the control's template. /// - IContentPresenter? Presenter { get; } + ContentPresenter? Presenter { get; } /// /// Gets or sets whether the popup appears on top of all other windows. diff --git a/src/Avalonia.Controls/ScrollViewer.cs b/src/Avalonia.Controls/ScrollViewer.cs index 1b9cb7de34..31c4a7e399 100644 --- a/src/Avalonia.Controls/ScrollViewer.cs +++ b/src/Avalonia.Controls/ScrollViewer.cs @@ -644,7 +644,7 @@ namespace Avalonia.Controls (Presenter as IScrollAnchorProvider)?.UnregisterAnchorCandidate(element); } - protected override bool RegisterContentPresenter(IContentPresenter presenter) + protected override bool RegisterContentPresenter(ContentPresenter presenter) { _childSubscription?.Dispose(); _childSubscription = null; diff --git a/src/Avalonia.Controls/SplitView/SplitView.cs b/src/Avalonia.Controls/SplitView/SplitView.cs index b943a01a4b..fed0367d12 100644 --- a/src/Avalonia.Controls/SplitView/SplitView.cs +++ b/src/Avalonia.Controls/SplitView/SplitView.cs @@ -279,7 +279,7 @@ namespace Avalonia.Controls remove => RemoveHandler(PaneOpeningEvent, value); } - protected override bool RegisterContentPresenter(IContentPresenter presenter) + protected override bool RegisterContentPresenter(ContentPresenter presenter) { var result = base.RegisterContentPresenter(presenter); diff --git a/src/Avalonia.Controls/TabControl.cs b/src/Avalonia.Controls/TabControl.cs index 5409663621..2b3a00cf3e 100644 --- a/src/Avalonia.Controls/TabControl.cs +++ b/src/Avalonia.Controls/TabControl.cs @@ -140,13 +140,13 @@ namespace Avalonia.Controls internal ItemsPresenter? ItemsPresenterPart { get; private set; } - internal IContentPresenter? ContentPart { get; private set; } + internal ContentPresenter? ContentPart { get; private set; } /// IAvaloniaList IContentPresenterHost.LogicalChildren => LogicalChildren; /// - bool IContentPresenterHost.RegisterContentPresenter(IContentPresenter presenter) + bool IContentPresenterHost.RegisterContentPresenter(ContentPresenter presenter) { return RegisterContentPresenter(presenter); } @@ -210,10 +210,10 @@ namespace Avalonia.Controls } /// - /// Called when an is registered with the control. + /// Called when an is registered with the control. /// /// The presenter. - protected virtual bool RegisterContentPresenter(IContentPresenter presenter) + protected virtual bool RegisterContentPresenter(ContentPresenter presenter) { if (presenter.Name == "PART_SelectedContentHost") { diff --git a/src/Avalonia.Controls/ToggleSwitch.cs b/src/Avalonia.Controls/ToggleSwitch.cs index 29e1b90ca0..a68a022e67 100644 --- a/src/Avalonia.Controls/ToggleSwitch.cs +++ b/src/Avalonia.Controls/ToggleSwitch.cs @@ -86,13 +86,13 @@ namespace Avalonia.Controls set { SetValue(OffContentProperty, value); } } - public IContentPresenter? OffContentPresenter + public ContentPresenter? OffContentPresenter { get; private set; } - public IContentPresenter? OnContentPresenter + public ContentPresenter? OnContentPresenter { get; private set; @@ -142,7 +142,7 @@ namespace Avalonia.Controls } } - protected override bool RegisterContentPresenter(IContentPresenter presenter) + protected override bool RegisterContentPresenter(ContentPresenter presenter) { var result = base.RegisterContentPresenter(presenter); diff --git a/src/Avalonia.Controls/TransitioningContentControl.cs b/src/Avalonia.Controls/TransitioningContentControl.cs index edc1b10d93..21b9c9b765 100644 --- a/src/Avalonia.Controls/TransitioningContentControl.cs +++ b/src/Avalonia.Controls/TransitioningContentControl.cs @@ -71,7 +71,7 @@ public class TransitioningContentControl : ContentControl return result; } - protected override bool RegisterContentPresenter(IContentPresenter presenter) + protected override bool RegisterContentPresenter(ContentPresenter presenter) { if (!base.RegisterContentPresenter(presenter) && presenter is ContentPresenter p && diff --git a/tests/Avalonia.UnitTests/TestExtensions.cs b/tests/Avalonia.UnitTests/TestExtensions.cs deleted file mode 100644 index 21a67a8800..0000000000 --- a/tests/Avalonia.UnitTests/TestExtensions.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using Avalonia.Controls.Presenters; -using Avalonia.Controls.Primitives; -using Avalonia.Layout; -using Avalonia.Styling; - -namespace Avalonia.UnitTests -{ - public static class TestExtensions - { - public static void ApplyTemplate(this IContentPresenter presenter) => ((Layoutable)presenter).ApplyTemplate(); - } -}