From 5c4d2b84a3476a9c820e6fd66a2a058dad24e3fe Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 28 Sep 2015 23:10:26 +0200 Subject: [PATCH] Started converting PPs to direct PPs. --- src/Perspex.Controls/Control.cs | 14 ++++--------- src/Perspex.Controls/ItemsControl.cs | 20 +++++++++++++++---- .../Presenters/DeckPresenter.cs | 8 ++++---- .../Presenters/ItemsPresenter.cs | 8 ++++---- src/Perspex.Input/InputElement.cs | 15 ++++++++------ src/Perspex.Interactivity/Interactive.cs | 2 -- src/Perspex.SceneGraph/Visual.cs | 11 +++++++--- 7 files changed, 45 insertions(+), 33 deletions(-) diff --git a/src/Perspex.Controls/Control.cs b/src/Perspex.Controls/Control.cs index 901b744451..81015e196b 100644 --- a/src/Perspex.Controls/Control.cs +++ b/src/Perspex.Controls/Control.cs @@ -2,14 +2,12 @@ // Licensed under the MIT license. See licence.md file in the project root for full license information. using System; -using System.Linq; using System.Reactive.Linq; using Perspex.Collections; using Perspex.Controls.Primitives; using Perspex.Controls.Templates; using Perspex.Input; using Perspex.Interactivity; -using Perspex.LogicalTree; using Perspex.Rendering; using Perspex.Styling; @@ -46,7 +44,7 @@ namespace Perspex.Controls /// Defines the property. /// public static readonly PerspexProperty ParentProperty = - PerspexProperty.Register(nameof(Parent)); + PerspexProperty.RegisterDirect(nameof(Parent), o => o.Parent); /// /// Defines the property. @@ -66,16 +64,12 @@ namespace Perspex.Controls public static readonly RoutedEvent RequestBringIntoViewEvent = RoutedEvent.Register("RequestBringIntoView", RoutingStrategies.Bubble); + private IControl _parent; private readonly Classes _classes = new Classes(); - private DataTemplates _dataTemplates; - private IControl _focusAdorner; - private string _id; - private IPerspexList _logicalChildren; - private Styles _styles; /// @@ -227,7 +221,7 @@ namespace Perspex.Controls /// /// Gets the control's logical parent. /// - public IControl Parent => GetValue(ParentProperty); + public IControl Parent => _parent; /// /// Gets or sets a user-defined object attached to the control. @@ -297,7 +291,7 @@ namespace Perspex.Controls throw new InvalidOperationException("The Control already has a parent."); } - SetValue(ParentProperty, parent); + SetAndRaise(ParentProperty, ref _parent, (IControl)parent); } /// diff --git a/src/Perspex.Controls/ItemsControl.cs b/src/Perspex.Controls/ItemsControl.cs index 2939347e67..6539cffae5 100644 --- a/src/Perspex.Controls/ItemsControl.cs +++ b/src/Perspex.Controls/ItemsControl.cs @@ -33,7 +33,7 @@ namespace Perspex.Controls /// Defines the property. /// public static readonly PerspexProperty ItemsProperty = - PerspexProperty.Register(nameof(Items)); + PerspexProperty.RegisterDirect(nameof(Items), o => o.Items, (o, v) => o.Items = v); /// /// Defines the property. @@ -47,6 +47,7 @@ namespace Perspex.Controls public static readonly PerspexProperty MemberSelectorProperty = PerspexProperty.Register(nameof(MemberSelector)); + private IEnumerable _items; private IItemContainerGenerator _itemContainerGenerator; /// @@ -63,7 +64,6 @@ namespace Perspex.Controls public ItemsControl() { Classes.Add(":empty"); - Items = new PerspexList(); } /// @@ -87,8 +87,20 @@ namespace Perspex.Controls /// public IEnumerable Items { - get { return GetValue(ItemsProperty); } - set { SetValue(ItemsProperty, value); } + get + { + if (_items == null) + { + _items = new PerspexList(); + } + + return _items; + } + + set + { + SetAndRaise(ItemsProperty, ref _items, value); + } } /// diff --git a/src/Perspex.Controls/Presenters/DeckPresenter.cs b/src/Perspex.Controls/Presenters/DeckPresenter.cs index 526f37e7b9..53a399aa24 100644 --- a/src/Perspex.Controls/Presenters/DeckPresenter.cs +++ b/src/Perspex.Controls/Presenters/DeckPresenter.cs @@ -23,7 +23,7 @@ namespace Perspex.Controls.Presenters /// Defines the property. /// public static readonly PerspexProperty ItemsProperty = - ItemsControl.ItemsProperty.AddOwner(); + ItemsControl.ItemsProperty.AddOwner(o => o.Items, (o, v) => o.Items = v); /// /// Defines the property. @@ -49,8 +49,8 @@ namespace Perspex.Controls.Presenters public static readonly PerspexProperty TransitionProperty = Deck.TransitionProperty.AddOwner(); + private IEnumerable _items; private bool _createdPanel; - private IItemContainerGenerator _generator; /// @@ -94,8 +94,8 @@ namespace Perspex.Controls.Presenters /// public IEnumerable Items { - get { return GetValue(ItemsProperty); } - set { SetValue(ItemsProperty, value); } + get { return _items; } + set { SetAndRaise(ItemsProperty, ref _items, value); } } /// diff --git a/src/Perspex.Controls/Presenters/ItemsPresenter.cs b/src/Perspex.Controls/Presenters/ItemsPresenter.cs index 15f73f6822..5c52f70df4 100644 --- a/src/Perspex.Controls/Presenters/ItemsPresenter.cs +++ b/src/Perspex.Controls/Presenters/ItemsPresenter.cs @@ -20,7 +20,7 @@ namespace Perspex.Controls.Presenters /// Defines the property. /// public static readonly PerspexProperty ItemsProperty = - ItemsControl.ItemsProperty.AddOwner(); + ItemsControl.ItemsProperty.AddOwner(o => o.Items, (o, v) => o.Items = v); /// /// Defines the property. @@ -34,8 +34,8 @@ namespace Perspex.Controls.Presenters public static readonly PerspexProperty MemberSelectorProperty = ItemsControl.MemberSelectorProperty.AddOwner(); + private IEnumerable _items; private bool _createdPanel; - private IItemContainerGenerator _generator; /// @@ -89,8 +89,8 @@ namespace Perspex.Controls.Presenters /// public IEnumerable Items { - get { return GetValue(ItemsProperty); } - set { SetValue(ItemsProperty, value); } + get { return _items; } + set { SetAndRaise(ItemsProperty, ref _items, value); } } /// diff --git a/src/Perspex.Input/InputElement.cs b/src/Perspex.Input/InputElement.cs index 2075bc09f2..9dc22d250f 100644 --- a/src/Perspex.Input/InputElement.cs +++ b/src/Perspex.Input/InputElement.cs @@ -42,7 +42,7 @@ namespace Perspex.Input /// Defines the property. /// public static readonly PerspexProperty IsFocusedProperty = - PerspexProperty.Register("IsFocused"); + PerspexProperty.RegisterDirect("IsFocused", o => o.IsFocused); /// /// Defines the property. @@ -54,7 +54,7 @@ namespace Perspex.Input /// Defines the property. /// public static readonly PerspexProperty IsPointerOverProperty = - PerspexProperty.Register("IsPointerOver"); + PerspexProperty.RegisterDirect("IsPointerOver", o => o.IsPointerOver); /// /// Defines the event. @@ -136,6 +136,9 @@ namespace Perspex.Input "PointerWheelChanged", RoutingStrategies.Tunnel | RoutingStrategies.Bubble); + private bool _isFocused; + private bool _isPointerOver; + /// /// Initializes static members of the class. /// @@ -287,8 +290,8 @@ namespace Perspex.Input /// public bool IsFocused { - get { return GetValue(IsFocusedProperty); } - private set { SetValue(IsFocusedProperty, value); } + get { return _isFocused; } + private set { SetAndRaise(IsFocusedProperty, ref _isFocused, value); } } /// @@ -305,8 +308,8 @@ namespace Perspex.Input /// public bool IsPointerOver { - get { return GetValue(IsPointerOverProperty); } - internal set { SetValue(IsPointerOverProperty, value); } + get { return _isPointerOver; } + internal set { SetAndRaise(IsPointerOverProperty, ref _isPointerOver, value); } } /// diff --git a/src/Perspex.Interactivity/Interactive.cs b/src/Perspex.Interactivity/Interactive.cs index 36a2f984ac..03b7c72a2d 100644 --- a/src/Perspex.Interactivity/Interactive.cs +++ b/src/Perspex.Interactivity/Interactive.cs @@ -4,11 +4,9 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Reactive; using System.Reactive.Disposables; using System.Reactive.Linq; using Perspex.Layout; -using Perspex.VisualTree; namespace Perspex.Interactivity { diff --git a/src/Perspex.SceneGraph/Visual.cs b/src/Perspex.SceneGraph/Visual.cs index 64eae2ff21..94ab70cce6 100644 --- a/src/Perspex.SceneGraph/Visual.cs +++ b/src/Perspex.SceneGraph/Visual.cs @@ -32,7 +32,7 @@ namespace Perspex /// Defines the property. /// public static readonly PerspexProperty BoundsProperty = - PerspexProperty.Register(nameof(Bounds)); + PerspexProperty.RegisterDirect(nameof(Bounds), o => o.Bounds); /// /// Defines the property. @@ -75,6 +75,11 @@ namespace Perspex /// private readonly PerspexList _visualChildren; + /// + /// The visual's bounds relative to its parent. + /// + private Rect _bounds; + /// /// Holds the parent of the visual. /// @@ -121,8 +126,8 @@ namespace Perspex /// public Rect Bounds { - get { return GetValue(BoundsProperty); } - protected set { SetValue(BoundsProperty, value); } + get { return _bounds; } + protected set { SetAndRaise(BoundsProperty, ref _bounds, value); } } ///