diff --git a/src/Dock.Model.Avalonia/Core/DockWindow.cs b/src/Dock.Model.Avalonia/Core/DockWindow.cs index 56e0304da..1565a07b6 100644 --- a/src/Dock.Model.Avalonia/Core/DockWindow.cs +++ b/src/Dock.Model.Avalonia/Core/DockWindow.cs @@ -13,7 +13,7 @@ namespace Dock.Model.Avalonia.Core; /// Dock window. /// [DataContract(IsReference = true)] -public class DockWindow : StyledElement, IDockWindow +public class DockWindow : ReactiveBase, IDockWindow { /// /// Defines the property. diff --git a/src/Dock.Model.Avalonia/Core/DockableBase.cs b/src/Dock.Model.Avalonia/Core/DockableBase.cs index 74ebd58b8..602118e07 100644 --- a/src/Dock.Model.Avalonia/Core/DockableBase.cs +++ b/src/Dock.Model.Avalonia/Core/DockableBase.cs @@ -22,7 +22,7 @@ namespace Dock.Model.Avalonia.Core; [JsonDerivedType(typeof(Tool), typeDiscriminator: "Tool")] [JsonDerivedType(typeof(ToolDock), typeDiscriminator: "ToolDock")] [JsonDerivedType(typeof(DockBase), typeDiscriminator: "DockBase")] -public abstract class DockableBase : StyledElement, IDockable +public abstract class DockableBase : ReactiveBase, IDockable { /// /// Defines the property. diff --git a/src/Dock.Model.Avalonia/Core/ReactiveBase.cs b/src/Dock.Model.Avalonia/Core/ReactiveBase.cs new file mode 100644 index 000000000..712572229 --- /dev/null +++ b/src/Dock.Model.Avalonia/Core/ReactiveBase.cs @@ -0,0 +1,8 @@ +using Avalonia; + +namespace Dock.Model.Avalonia.Core; + +/// +/// Reactive base class. +/// +public abstract class ReactiveBase : StyledElement; diff --git a/src/Dock.Model.Mvvm/Core/DockWindow.cs b/src/Dock.Model.Mvvm/Core/DockWindow.cs index a09a69a0b..d7efcc4dc 100644 --- a/src/Dock.Model.Mvvm/Core/DockWindow.cs +++ b/src/Dock.Model.Mvvm/Core/DockWindow.cs @@ -1,5 +1,4 @@ using System.Runtime.Serialization; -using CommunityToolkit.Mvvm.ComponentModel; using Dock.Model.Adapters; using Dock.Model.Controls; using Dock.Model.Core; @@ -10,7 +9,7 @@ namespace Dock.Model.Mvvm.Core; /// Dock window. /// [DataContract(IsReference = true)] -public class DockWindow : ObservableObject, IDockWindow +public class DockWindow : ReactiveBase, IDockWindow { private readonly IHostAdapter _hostAdapter; private string _id; diff --git a/src/Dock.Model.Mvvm/Core/DockableBase.cs b/src/Dock.Model.Mvvm/Core/DockableBase.cs index afa54d28f..f3987faf5 100644 --- a/src/Dock.Model.Mvvm/Core/DockableBase.cs +++ b/src/Dock.Model.Mvvm/Core/DockableBase.cs @@ -1,5 +1,4 @@ using System.Runtime.Serialization; -using CommunityToolkit.Mvvm.ComponentModel; using Dock.Model.Adapters; using Dock.Model.Core; @@ -9,7 +8,7 @@ namespace Dock.Model.Mvvm.Core; /// Dockable base class. /// [DataContract(IsReference = true)] -public abstract class DockableBase : ObservableObject, IDockable +public abstract class DockableBase : ReactiveBase, IDockable { private readonly TrackingAdapter _trackingAdapter; private string _id = string.Empty; diff --git a/src/Dock.Model.Mvvm/Core/ReactiveBase.cs b/src/Dock.Model.Mvvm/Core/ReactiveBase.cs new file mode 100644 index 000000000..d60d7c86d --- /dev/null +++ b/src/Dock.Model.Mvvm/Core/ReactiveBase.cs @@ -0,0 +1,8 @@ +using CommunityToolkit.Mvvm.ComponentModel; + +namespace Dock.Model.Mvvm.Core; + +/// +/// Reactive base class. +/// +public abstract class ReactiveBase : ObservableObject; diff --git a/src/Dock.Model.ReactiveUI/Controls/DockDock.cs b/src/Dock.Model.ReactiveUI/Controls/DockDock.cs index c7790d32b..67e1f4646 100644 --- a/src/Dock.Model.ReactiveUI/Controls/DockDock.cs +++ b/src/Dock.Model.ReactiveUI/Controls/DockDock.cs @@ -20,6 +20,5 @@ public DockDock() /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool LastChildFill { get; set; } } diff --git a/src/Dock.Model.ReactiveUI/Controls/DocumentDock.cs b/src/Dock.Model.ReactiveUI/Controls/DocumentDock.cs index 21cfa8a74..2902334a5 100644 --- a/src/Dock.Model.ReactiveUI/Controls/DocumentDock.cs +++ b/src/Dock.Model.ReactiveUI/Controls/DocumentDock.cs @@ -13,7 +13,6 @@ public partial class DocumentDock : DockBase, IDocumentDock { /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool CanCreateDocument { get; set; } /// diff --git a/src/Dock.Model.ReactiveUI/Controls/ProportionalDock.cs b/src/Dock.Model.ReactiveUI/Controls/ProportionalDock.cs index c58f79d6b..2d43f1750 100644 --- a/src/Dock.Model.ReactiveUI/Controls/ProportionalDock.cs +++ b/src/Dock.Model.ReactiveUI/Controls/ProportionalDock.cs @@ -13,6 +13,5 @@ public partial class ProportionalDock : DockBase, IProportionalDock { /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial Orientation Orientation { get; set; } } diff --git a/src/Dock.Model.ReactiveUI/Controls/RootDock.cs b/src/Dock.Model.ReactiveUI/Controls/RootDock.cs index 146f512ca..5a87cc70d 100644 --- a/src/Dock.Model.ReactiveUI/Controls/RootDock.cs +++ b/src/Dock.Model.ReactiveUI/Controls/RootDock.cs @@ -26,47 +26,38 @@ public RootDock() /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool IsFocusableRoot { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IList? HiddenDockables { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IList? LeftPinnedDockables { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IList? RightPinnedDockables { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IList? TopPinnedDockables { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IList? BottomPinnedDockables { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IToolDock? PinnedDock { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IDockWindow? Window { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IList? Windows { get; set; } /// diff --git a/src/Dock.Model.ReactiveUI/Controls/ToolDock.cs b/src/Dock.Model.ReactiveUI/Controls/ToolDock.cs index 60439564a..966acdd6f 100644 --- a/src/Dock.Model.ReactiveUI/Controls/ToolDock.cs +++ b/src/Dock.Model.ReactiveUI/Controls/ToolDock.cs @@ -23,21 +23,17 @@ public ToolDock() /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial Alignment Alignment { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool IsExpanded { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool AutoHide { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial GripMode GripMode { get; set; } } diff --git a/src/Dock.Model.ReactiveUI/Core/DockBase.cs b/src/Dock.Model.ReactiveUI/Core/DockBase.cs index 7d22cba62..157edf3aa 100644 --- a/src/Dock.Model.ReactiveUI/Core/DockBase.cs +++ b/src/Dock.Model.ReactiveUI/Core/DockBase.cs @@ -45,37 +45,30 @@ protected DockBase() /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IList? VisibleDockables { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IDockable? ActiveDockable { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IDockable? DefaultDockable { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IDockable? FocusedDockable { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial DockMode Dock { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool IsActive { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial int OpenedDockablesCount { get; set; } /// diff --git a/src/Dock.Model.ReactiveUI/Core/DockWindow.cs b/src/Dock.Model.ReactiveUI/Core/DockWindow.cs index f8c4e230a..44021676d 100644 --- a/src/Dock.Model.ReactiveUI/Core/DockWindow.cs +++ b/src/Dock.Model.ReactiveUI/Core/DockWindow.cs @@ -2,7 +2,6 @@ using Dock.Model.Adapters; using Dock.Model.Controls; using Dock.Model.Core; -using ReactiveUI; namespace Dock.Model.ReactiveUI.Core; @@ -10,7 +9,7 @@ namespace Dock.Model.ReactiveUI.Core; /// Dock window. /// [DataContract(IsReference = true)] -public partial class DockWindow : ReactiveObject, IDockWindow +public partial class DockWindow : ReactiveBase, IDockWindow { private readonly IHostAdapter _hostAdapter; @@ -26,57 +25,46 @@ public DockWindow() /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial string Id { get; set; } /// [DataMember(IsRequired = true, EmitDefaultValue = true)] - [Reactive] public partial double X { get; set; } /// [DataMember(IsRequired = true, EmitDefaultValue = true)] - [Reactive] public partial double Y { get; set; } /// [DataMember(IsRequired = true, EmitDefaultValue = true)] - [Reactive] public partial double Width { get; set; } /// [DataMember(IsRequired = true, EmitDefaultValue = true)] - [Reactive] public partial double Height { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool Topmost { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial string Title { get; set; } /// [IgnoreDataMember] - [Reactive] public partial IDockable? Owner { get; set; } /// [IgnoreDataMember] - [Reactive] public partial IFactory? Factory { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial IRootDock? Layout { get; set; } /// [IgnoreDataMember] - [Reactive] public partial IHostWindow? Host { get; set; } /// diff --git a/src/Dock.Model.ReactiveUI/Core/DockableBase.cs b/src/Dock.Model.ReactiveUI/Core/DockableBase.cs index 5e4d174da..cde8a1111 100644 --- a/src/Dock.Model.ReactiveUI/Core/DockableBase.cs +++ b/src/Dock.Model.ReactiveUI/Core/DockableBase.cs @@ -1,7 +1,6 @@ using System.Runtime.Serialization; using Dock.Model.Adapters; using Dock.Model.Core; -using ReactiveUI; namespace Dock.Model.ReactiveUI.Core; @@ -9,7 +8,7 @@ namespace Dock.Model.ReactiveUI.Core; /// Dockable base class. /// [DataContract(IsReference = true)] -public abstract partial class DockableBase : ReactiveObject, IDockable +public abstract partial class DockableBase : ReactiveBase, IDockable { private readonly TrackingAdapter _trackingAdapter; @@ -30,62 +29,50 @@ protected DockableBase() /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial string Id { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial string Title { get; set; } /// [IgnoreDataMember] - [Reactive] public partial object? Context { get; set; } /// [IgnoreDataMember] - [Reactive] public partial IDockable? Owner { get; set; } /// [IgnoreDataMember] - [Reactive] public partial IDockable? OriginalOwner { get; set; } /// [IgnoreDataMember] - [Reactive] public partial IFactory? Factory { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool IsEmpty { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool IsCollapsable { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial double Proportion { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool CanClose { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool CanPin { get; set; } /// [DataMember(IsRequired = false, EmitDefaultValue = true)] - [Reactive] public partial bool CanFloat { get; set; } /// diff --git a/src/Dock.Model.ReactiveUI/Core/ReactiveBase.cs b/src/Dock.Model.ReactiveUI/Core/ReactiveBase.cs new file mode 100644 index 000000000..4c3f1ecc1 --- /dev/null +++ b/src/Dock.Model.ReactiveUI/Core/ReactiveBase.cs @@ -0,0 +1,9 @@ +using ReactiveUI; + +namespace Dock.Model.ReactiveUI.Core; + +/// +/// Reactive base class. +/// +[Reactive] +public abstract class ReactiveBase : ReactiveObject; diff --git a/src/Dock.Model.ReactiveUI/Dock.Model.ReactiveUI.csproj b/src/Dock.Model.ReactiveUI/Dock.Model.ReactiveUI.csproj index 244fb09de..3a547a1a8 100644 --- a/src/Dock.Model.ReactiveUI/Dock.Model.ReactiveUI.csproj +++ b/src/Dock.Model.ReactiveUI/Dock.Model.ReactiveUI.csproj @@ -28,7 +28,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive