Browse Source

Applied a bunch of resharper suggestions.

pull/335/head
Steven Kirk 10 years ago
parent
commit
67835cc09b
  1. 2
      src/Gtk/Perspex.Cairo/CairoPlatform.cs
  2. 2
      src/Gtk/Perspex.Cairo/Media/FormattedTextImpl.cs
  3. 2
      src/Gtk/Perspex.Cairo/RenderTarget.cs
  4. 2
      src/Markup/Perspex.Markup.Xaml/Context/PerspexContentPropertyProvider.cs
  5. 10
      src/Markup/Perspex.Markup.Xaml/Converters/PerspexPropertyTypeConverter.cs
  6. 2
      src/Markup/Perspex.Markup.Xaml/Data/MultiBinding.cs
  7. 2
      src/Markup/Perspex.Markup.Xaml/Parsers/SelectorParser.cs
  8. 10
      src/Markup/Perspex.Markup.Xaml/Templates/MemberSelector.cs
  9. 5
      src/Markup/Perspex.Markup/Data/ExpressionNode.cs
  10. 4
      src/Markup/Perspex.Markup/Data/ExpressionObserver.cs
  11. 4
      src/Markup/Perspex.Markup/Data/ExpressionSubject.cs
  12. 2
      src/Markup/Perspex.Markup/Data/IndexerNode.cs
  13. 4
      src/Markup/Perspex.Markup/Data/LogicalNotNode.cs
  14. 2
      src/Markup/Perspex.Markup/Data/Parsers/Reader.cs
  15. 16
      src/Markup/Perspex.Markup/Data/Plugins/InpcPropertyAccessorPlugin.cs
  16. 14
      src/Markup/Perspex.Markup/Data/Plugins/PerspexPropertyAccessorPlugin.cs
  17. 2
      src/Markup/Perspex.Markup/FuncMultiValueConverter.cs
  18. 2
      src/Markup/Perspex.Markup/FuncValueConverter.cs
  19. 2
      src/Markup/Perspex.Markup/StringConverters.cs
  20. 7
      src/Perspex.Animation/Animatable.cs
  21. 5
      src/Perspex.Animation/LinearEasing.cs
  22. 16
      src/Perspex.Application/Application.cs
  23. 2
      src/Perspex.Base/BindingDescriptor.cs
  24. 5
      src/Perspex.Base/Collections/PerspexDictionary.cs
  25. 16
      src/Perspex.Base/Collections/PerspexList.cs
  26. 4
      src/Perspex.Base/Metadata/XmlnsDefinitionAttribute.cs
  27. 2
      src/Perspex.Base/PerspexLocator.cs
  28. 17
      src/Perspex.Base/PerspexObject.cs
  29. 2
      src/Perspex.Base/PerspexProperty.cs
  30. 5
      src/Perspex.Base/PriorityBindingEntry.cs
  31. 5
      src/Perspex.Base/Reactive/PerspexObservable.cs
  32. 8
      src/Perspex.Base/Threading/DispatcherTimer.cs
  33. 4
      src/Perspex.Base/Threading/SingleThreadDispatcher.cs
  34. 5
      src/Perspex.Controls/Button.cs
  35. 34
      src/Perspex.Controls/Control.cs
  36. 7
      src/Perspex.Controls/Decorator.cs
  37. 11
      src/Perspex.Controls/DockPanel.cs
  38. 21
      src/Perspex.Controls/Generators/TreeItemContainerGenerator.cs
  39. 6
      src/Perspex.Controls/HotkeyManager.cs
  40. 5
      src/Perspex.Controls/ListBox.cs
  41. 2
      src/Perspex.Controls/Menu.cs
  42. 11
      src/Perspex.Controls/MenuItem.cs
  43. 8
      src/Perspex.Controls/MenuItemAccessKeyHandler.cs
  44. 6
      src/Perspex.Controls/Primitives/AdornerLayer.cs
  45. 8
      src/Perspex.Controls/Primitives/Popup.cs
  46. 9
      src/Perspex.Controls/Primitives/PopupRoot.cs
  47. 2
      src/Perspex.Controls/Primitives/SelectingItemsControl.cs
  48. 5
      src/Perspex.Controls/TabControl.cs
  49. 4
      src/Perspex.Controls/Templates/FuncDataTemplate.cs
  50. 2
      src/Perspex.Controls/Templates/FuncDataTemplate`1.cs
  51. 2
      src/Perspex.Controls/Templates/FuncMemberSelector.cs
  52. 4
      src/Perspex.Controls/Templates/FuncTreeDataTemplate.cs
  53. 2
      src/Perspex.Controls/Templates/FuncTreeDataTemplate`1.cs
  54. 2
      src/Perspex.Controls/TextBox.cs
  55. 2
      src/Perspex.Controls/ToolTip.cs
  56. 38
      src/Perspex.Controls/TopLevel.cs
  57. 2
      src/Perspex.Controls/UserControl.cs
  58. 4
      src/Perspex.Controls/Window.cs
  59. 13
      src/Perspex.Diagnostics/LogManager.cs
  60. 2
      src/Perspex.Diagnostics/ViewModels/PropertyDetails.cs
  61. 2
      src/Perspex.Diagnostics/ViewModels/VisualTreeNode.cs
  62. 2
      src/Perspex.HtmlRenderer/Adapters/GraphicsAdapter.cs
  63. 2
      src/Perspex.Input/FocusManager.cs
  64. 4
      src/Perspex.Input/KeyBinding.cs
  65. 2
      src/Perspex.Input/KeyGesture.cs
  66. 22
      src/Perspex.Input/KeyboardDevice.cs
  67. 34
      src/Perspex.Input/MouseDevice.cs
  68. 13
      src/Perspex.Input/Navigation/DirectionalNavigation.cs
  69. 13
      src/Perspex.Input/Navigation/TabNavigation.cs
  70. 24
      src/Perspex.Layout/Layoutable.cs
  71. 2
      src/Perspex.SceneGraph/Media/Color.cs
  72. 10
      src/Perspex.SceneGraph/Media/DashStyle.cs
  73. 4
      src/Perspex.SceneGraph/Media/DrawingContext.cs
  74. 11
      src/Perspex.SceneGraph/Media/PathMarkupParser.cs
  75. 5
      src/Perspex.SceneGraph/Media/Transform.cs
  76. 2
      src/Perspex.SceneGraph/RelativePoint.cs
  77. 2
      src/Perspex.SceneGraph/RelativeRect.cs
  78. 2
      src/Perspex.SceneGraph/Rendering/RendererBase.cs
  79. 2
      src/Perspex.SceneGraph/Thickness.cs
  80. 6
      src/Perspex.SceneGraph/Visual.cs
  81. 4
      src/Perspex.SceneGraph/VisualTree/BoundsTracker.cs
  82. 6
      src/Perspex.Styling/Styling/Classes.cs
  83. 5
      src/Perspex.Styling/Styling/Selector.cs
  84. 4
      src/Perspex.Styling/Styling/StyleBinding.cs
  85. 21
      src/Perspex.Styling/Styling/Styler.cs
  86. 2
      src/Shared/PlatformSupport/AssetLoader.cs
  87. 4
      src/Shared/RenderHelpers/TileBrushImplHelper.cs
  88. 2
      src/Skia/Perspex.Skia/DrawingContextImpl.cs
  89. 6
      src/Skia/Perspex.Skia/FormattedTextImpl.cs
  90. 4
      src/Skia/Perspex.Skia/NativeBrush.cs
  91. 2
      src/Skia/Perspex.Skia/PerspexHandleHolder.cs
  92. 2
      src/Windows/Perspex.Designer/AppHost/PerspexAppHost.cs
  93. 4
      src/Windows/Perspex.Designer/AppHost/WindowHost.cs
  94. 6
      src/Windows/Perspex.Designer/Comm/CommChannel.cs
  95. 2
      src/Windows/Perspex.Designer/PerspexDesigner.xaml
  96. 2
      src/Windows/Perspex.Direct2D1/Media/DrawingContext.cs
  97. 4
      src/Windows/Perspex.Win32/Input/WindowsMouseDevice.cs
  98. 4
      src/Windows/Perspex.Win32/Interop/UnmanagedMethods.cs
  99. 17
      src/Windows/Perspex.Win32/WindowImpl.cs
  100. 2
      tests/Perspex.Base.UnitTests/PerspexObjectTests_Direct.cs

2
src/Gtk/Perspex.Cairo/CairoPlatform.cs

@ -16,7 +16,7 @@ namespace Perspex.Cairo
{
private static readonly CairoPlatform s_instance = new CairoPlatform();
private static Pango.Context s_pangoContext = CreatePangoContext();
private static readonly Pango.Context s_pangoContext = CreatePangoContext();
public static void Initialize() => PerspexLocator.CurrentMutable.Bind<IPlatformRenderInterface>().ToConstant(s_instance);

2
src/Gtk/Perspex.Cairo/Media/FormattedTextImpl.cs

@ -13,7 +13,7 @@ namespace Perspex.Cairo.Media
public class FormattedTextImpl : IFormattedTextImpl
{
private Size _size;
private string _text;
private readonly string _text;
public FormattedTextImpl(
Pango.Context context,

2
src/Gtk/Perspex.Cairo/RenderTarget.cs

@ -19,7 +19,7 @@ namespace Perspex.Cairo
public class RenderTarget : IRenderTarget
{
private readonly Surface _surface;
private Gtk.Window _window;
private readonly Gtk.Window _window;
/// <summary>
/// Initializes a new instance of the <see cref="RenderTarget"/> class.

2
src/Markup/Perspex.Markup.Xaml/Context/PerspexContentPropertyProvider.cs

@ -15,7 +15,7 @@ namespace Perspex.Markup.Xaml.Context
{
public class PerspexContentPropertyProvider : IContentPropertyProvider
{
private Dictionary<Type, string> _values = new Dictionary<Type, string>();
private readonly Dictionary<Type, string> _values = new Dictionary<Type, string>();
public string GetContentPropertyName(Type type)
{

10
src/Markup/Perspex.Markup.Xaml/Converters/PerspexPropertyTypeConverter.cs

@ -55,13 +55,9 @@ namespace Perspex.Markup.Xaml.Converters
}
// First look for non-attached property on the type and then look for an attached property.
var property = PerspexPropertyRegistry.Instance.FindRegistered(type, s);
if (property == null)
{
property = PerspexPropertyRegistry.Instance.GetAttached(type)
.FirstOrDefault(x => x.Name == propertyName);
}
var property = PerspexPropertyRegistry.Instance.FindRegistered(type, s) ??
PerspexPropertyRegistry.Instance.GetAttached(type)
.FirstOrDefault(x => x.Name == propertyName);
if (property == null)
{

2
src/Markup/Perspex.Markup.Xaml/Data/MultiBinding.cs

@ -79,7 +79,7 @@ namespace Perspex.Markup.Xaml.Data
var result = new BehaviorSubject<object>(PerspexProperty.UnsetValue);
var children = Bindings.Select(x => x.CreateSubject(target, typeof(object)));
var input = Observable.CombineLatest(children).Select(x =>
var input = children.CombineLatest().Select(x =>
Converter.Convert(x, targetType, null, CultureInfo.CurrentUICulture));
input.Subscribe(result);
return result;

2
src/Markup/Perspex.Markup.Xaml/Parsers/SelectorParser.cs

@ -14,7 +14,7 @@ namespace Perspex.Markup.Xaml.Parsers
/// </summary>
public class SelectorParser
{
private Func<string, string, Type> _typeResolver;
private readonly Func<string, string, Type> _typeResolver;
/// <summary>
/// Initializes a new instance of the <see cref="SelectorParser"/> class.

10
src/Markup/Perspex.Markup.Xaml/Templates/MemberSelector.cs

@ -14,15 +14,7 @@ namespace Perspex.Markup.Xaml.Templates
{
// TODO: Handle nested property paths, changing values etc.
var property = o.GetType().GetRuntimeProperty(MemberName);
if (property != null)
{
return property.GetValue(o);
}
else
{
return null;
}
return property?.GetValue(o);
}
}
}

5
src/Markup/Perspex.Markup/Data/ExpressionNode.cs

@ -63,10 +63,7 @@ namespace Perspex.Markup.Data
Next.Target = value;
}
if (_subject != null)
{
_subject.OnNext(value);
}
_subject?.OnNext(value);
}
}

4
src/Markup/Perspex.Markup/Data/ExpressionObserver.cs

@ -180,9 +180,9 @@ namespace Perspex.Markup.Data
{
_node.Target = _rootGetter();
}
else if (_empty != null)
else
{
_empty.OnNext(_rootGetter());
_empty?.OnNext(_rootGetter());
}
}
}

4
src/Markup/Perspex.Markup/Data/ExpressionSubject.cs

@ -15,8 +15,8 @@ namespace Perspex.Markup.Data
/// </summary>
public class ExpressionSubject : ISubject<object>, IDescription
{
private ExpressionObserver _inner;
private Type _targetType;
private readonly ExpressionObserver _inner;
private readonly Type _targetType;
/// <summary>
/// Initializes a new instance of the <see cref="ExpressionObserver"/> class.

2
src/Markup/Perspex.Markup/Data/IndexerNode.cs

@ -12,7 +12,7 @@ namespace Perspex.Markup.Data
{
internal class IndexerNode : ExpressionNode
{
private int[] _intArgs;
private readonly int[] _intArgs;
public IndexerNode(IList<object> arguments)
{

4
src/Markup/Perspex.Markup/Data/LogicalNotNode.cs

@ -16,10 +16,10 @@ namespace Perspex.Markup.Data
public override IDisposable Subscribe(IObserver<object> observer)
{
return Next.Select(x => Negate(x)).Subscribe(observer);
return Next.Select(Negate).Subscribe(observer);
}
private object Negate(object v)
private static object Negate(object v)
{
if (v != PerspexProperty.UnsetValue)
{

2
src/Markup/Perspex.Markup/Data/Parsers/Reader.cs

@ -7,7 +7,7 @@ namespace Perspex.Markup.Data.Parsers
{
internal class Reader
{
private string _s;
private readonly string _s;
private int _i;
public Reader(string s)

16
src/Markup/Perspex.Markup/Data/Plugins/InpcPropertyAccessorPlugin.cs

@ -56,9 +56,9 @@ namespace Perspex.Markup.Data.Plugins
private class Accessor : IPropertyAccessor
{
private object _instance;
private PropertyInfo _property;
private Action<object> _changed;
private readonly object _instance;
private readonly PropertyInfo _property;
private readonly Action<object> _changed;
public Accessor(object instance, PropertyInfo property, Action<object> changed)
{
@ -77,15 +77,9 @@ namespace Perspex.Markup.Data.Plugins
}
}
public Type PropertyType
{
get { return _property.PropertyType; }
}
public Type PropertyType => _property.PropertyType;
public object Value
{
get { return _property.GetValue(_instance); }
}
public object Value => _property.GetValue(_instance);
public void Dispose()
{

14
src/Markup/Perspex.Markup/Data/Plugins/PerspexPropertyAccessorPlugin.cs

@ -56,8 +56,8 @@ namespace Perspex.Markup.Data.Plugins
private class Accessor : IPropertyAccessor
{
private PerspexObject _instance;
private PerspexProperty _property;
private readonly PerspexObject _instance;
private readonly PerspexProperty _property;
private IDisposable _subscription;
public Accessor(PerspexObject instance, PerspexProperty property, Action<object> changed)
@ -70,15 +70,9 @@ namespace Perspex.Markup.Data.Plugins
_subscription = instance.GetObservable(property).Skip(1).Subscribe(changed);
}
public Type PropertyType
{
get { return _property.PropertyType; }
}
public Type PropertyType => _property.PropertyType;
public object Value
{
get { return _instance.GetValue(_property); }
}
public object Value => _instance.GetValue(_property);
public void Dispose()
{

2
src/Markup/Perspex.Markup/FuncMultiValueConverter.cs

@ -16,7 +16,7 @@ namespace Perspex.Markup
/// <typeparam name="TOut">The output type.</typeparam>
public class FuncMultiValueConverter<TIn, TOut> : IMultiValueConverter
{
private Func<IEnumerable<TIn>, TOut> _convert;
private readonly Func<IEnumerable<TIn>, TOut> _convert;
/// <summary>
/// Initializes a new instance of the <see cref="FuncValueConverter{TIn, TOut}"/> class.

2
src/Markup/Perspex.Markup/FuncValueConverter.cs

@ -15,7 +15,7 @@ namespace Perspex.Markup
/// <typeparam name="TOut">The output type.</typeparam>
public class FuncValueConverter<TIn, TOut> : IValueConverter
{
private Func<TIn, TOut> _convert;
private readonly Func<TIn, TOut> _convert;
/// <summary>
/// Initializes a new instance of the <see cref="FuncValueConverter{TIn, TOut}"/> class.

2
src/Markup/Perspex.Markup/StringConverters.cs

@ -16,7 +16,7 @@ namespace Perspex.Markup
/// A value converter that returns true if the input string is null or an empty string.
/// </summary>
public static readonly IValueConverter NullOrEmpty =
new FuncValueConverter<string, bool>(x => string.IsNullOrEmpty(x));
new FuncValueConverter<string, bool>(string.IsNullOrEmpty);
/// <summary>
/// A value converter that returns true if the input string is not null or empty.

7
src/Perspex.Animation/Animatable.cs

@ -25,12 +25,7 @@ namespace Perspex.Animation
{
get
{
if (_propertyTransitions == null)
{
_propertyTransitions = new PropertyTransitions();
}
return _propertyTransitions;
return _propertyTransitions ?? (_propertyTransitions = new PropertyTransitions());
}
set

5
src/Perspex.Animation/LinearEasing.cs

@ -27,9 +27,8 @@ namespace Perspex.Animation
}
else
{
throw new NotSupportedException(string.Format(
"Don't know how to create a LinearEasing for type '{0}'.",
typeof(T).FullName));
throw new NotSupportedException(
$"Don't know how to create a LinearEasing for type '{typeof(T).FullName}'.");
}
}
}

16
src/Perspex.Application/Application.cs

@ -87,20 +87,8 @@ namespace Perspex
/// </value>
public DataTemplates DataTemplates
{
get
{
if (_dataTemplates == null)
{
_dataTemplates = new DataTemplates();
}
return _dataTemplates;
}
set
{
_dataTemplates = value;
}
get { return _dataTemplates ?? (_dataTemplates = new DataTemplates()); }
set { _dataTemplates = value; }
}
/// <summary>

2
src/Perspex.Base/BindingDescriptor.cs

@ -81,7 +81,7 @@ namespace Perspex
/// <summary>
/// Gets a description of the binding.
/// </summary>
public string Description => string.Format("{0}.{1}", Source?.GetType().Name, Property.Name);
public string Description => $"{Source?.GetType().Name}.{Property.Name}";
/// <summary>
/// Makes a two-way binding.

5
src/Perspex.Base/Collections/PerspexDictionary.cs

@ -71,10 +71,7 @@ namespace Perspex.Collections
if (replace)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs($"Item[{key}]"));
}
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs($"Item[{key}]"));
if (CollectionChanged != null)
{

16
src/Perspex.Base/Collections/PerspexList.cs

@ -437,10 +437,7 @@ namespace Perspex.Collections
/// </summary>
private void NotifyCountChanged()
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Count"));
}
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Count"));
}
/// <summary>
@ -469,14 +466,9 @@ namespace Perspex.Collections
{
NotifyCollectionChangedEventArgs e;
if (ResetBehavior == ResetBehavior.Reset)
{
e = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset);
}
else
{
e = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, t, 0);
}
e = ResetBehavior == ResetBehavior.Reset ?
new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset) :
new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, t, 0);
CollectionChanged(this, e);
}

4
src/Perspex.Base/Metadata/XmlnsDefinitionAttribute.cs

@ -25,11 +25,11 @@ namespace Perspex.Metadata
/// <summary>
/// Gets or sets the URL of the XML namespace.
/// </summary>
public string XmlNamespace { get; set; }
public string XmlNamespace { get; }
/// <summary>
/// Gets or sets the CLR namespace.
/// </summary>
public string ClrNamespace { get; set; }
public string ClrNamespace { get; }
}
}

2
src/Perspex.Base/PerspexLocator.cs

@ -36,7 +36,7 @@ namespace Perspex
public class RegistrationHelper<TService>
{
private PerspexLocator _locator;
private readonly PerspexLocator _locator;
public RegistrationHelper(PerspexLocator locator)
{

17
src/Perspex.Base/PerspexObject.cs

@ -694,20 +694,14 @@ namespace Perspex
newValue,
priority);
if (property.Notifying != null)
{
property.Notifying(this, true);
}
property.Notifying?.Invoke(this, true);
try
{
OnPropertyChanged(e);
property.NotifyChanged(e);
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
PropertyChanged?.Invoke(this, e);
if (_inpcChanged != null)
{
@ -717,10 +711,7 @@ namespace Perspex
}
finally
{
if (property.Notifying != null)
{
property.Notifying(this, false);
}
property.Notifying?.Invoke(this, false);
}
}
@ -866,7 +857,7 @@ namespace Perspex
/// <returns>The description.</returns>
private string GetDescription(PerspexProperty property)
{
return string.Format("{0}.{1}", GetType().Name, property.Name);
return $"{GetType().Name}.{property.Name}";
}
/// <summary>

2
src/Perspex.Base/PerspexProperty.cs

@ -538,7 +538,7 @@ namespace Perspex
public override bool Equals(object obj)
{
var p = obj as PerspexProperty;
return p != null ? Equals(p) : false;
return p != null && Equals(p);
}
/// <inheritdoc/>

5
src/Perspex.Base/PriorityBindingEntry.cs

@ -99,10 +99,7 @@ namespace Perspex
/// </summary>
public void Dispose()
{
if (_subscription != null)
{
_subscription.Dispose();
}
_subscription?.Dispose();
}
}
}

5
src/Perspex.Base/Reactive/PerspexObservable.cs

@ -22,10 +22,7 @@ namespace Perspex.Reactive
/// <param name="description">The description of the observable.</param>
public PerspexObservable(Func<IObserver<T>, IDisposable> subscribe, string description)
{
if (subscribe == null)
{
throw new ArgumentNullException("subscribe");
}
Contract.Requires<ArgumentNullException>(subscribe != null);
_subscribe = subscribe;
Description = description;

8
src/Perspex.Base/Threading/DispatcherTimer.cs

@ -131,9 +131,8 @@ namespace Perspex.Threading
/// <returns>An <see cref="IDisposable"/> used to cancel the timer.</returns>
public static IDisposable Run(Func<bool> action, TimeSpan interval, DispatcherPriority priority = DispatcherPriority.Normal)
{
var timer = new DispatcherTimer(priority);
var timer = new DispatcherTimer(priority) { Interval = interval };
timer.Interval = interval;
timer.Tick += (s, e) =>
{
if (!action())
@ -187,10 +186,7 @@ namespace Perspex.Threading
/// </summary>
private void RaiseTick()
{
if (Tick != null)
{
Tick(this, EventArgs.Empty);
}
Tick?.Invoke(this, EventArgs.Empty);
}
}
}

4
src/Perspex.Base/Threading/SingleThreadDispatcher.cs

@ -12,8 +12,8 @@ namespace Perspex.Threading
{
class ThreadingInterface : IPlatformThreadingInterface
{
private AutoResetEvent _evnt = new AutoResetEvent(false);
private JobRunner _timerJobRunner;
private readonly AutoResetEvent _evnt = new AutoResetEvent(false);
private readonly JobRunner _timerJobRunner;
public ThreadingInterface()
{

5
src/Perspex.Controls/Button.cs

@ -207,10 +207,7 @@ namespace Perspex.Controls
/// <param name="e">The event args.</param>
protected virtual void OnClick(RoutedEventArgs e)
{
if (Command != null)
{
Command.Execute(CommandParameter);
}
Command?.Execute(CommandParameter);
}
/// <inheritdoc/>

34
src/Perspex.Controls/Control.cs

@ -156,20 +156,8 @@ namespace Perspex.Controls
/// </remarks>
public DataTemplates DataTemplates
{
get
{
if (_dataTemplates == null)
{
_dataTemplates = new DataTemplates();
}
return _dataTemplates;
}
set
{
_dataTemplates = value;
}
get { return _dataTemplates ?? (_dataTemplates = new DataTemplates()); }
set { _dataTemplates = value; }
}
/// <summary>
@ -182,20 +170,8 @@ namespace Perspex.Controls
/// </remarks>
public Styles Styles
{
get
{
if (_styles == null)
{
_styles = new Styles();
}
return _styles;
}
set
{
_styles = value;
}
get { return _styles ?? (_styles = new Styles()); }
set { _styles = value; }
}
/// <summary>
@ -321,7 +297,7 @@ namespace Perspex.Controls
throw new ArgumentException("Cannot supply an empty className.");
}
Observable.Merge(property.Changed, property.Initialized)
property.Changed.Merge(property.Initialized)
.Subscribe(e =>
{
if (selector((T)e.NewValue))

7
src/Perspex.Controls/Decorator.cs

@ -71,12 +71,7 @@ namespace Perspex.Controls
protected override Size ArrangeOverride(Size finalSize)
{
Control content = Child;
if (content != null)
{
content.Arrange(new Rect(finalSize).Deflate(Padding));
}
content?.Arrange(new Rect(finalSize).Deflate(Padding));
return finalSize;
}

11
src/Perspex.Controls/DockPanel.cs

@ -251,18 +251,15 @@
public struct Alignments
{
private readonly Alignment _horizontal;
private readonly Alignment _vertical;
public Alignments(Alignment horizontal, Alignment vertical)
{
_horizontal = horizontal;
_vertical = vertical;
Horizontal = horizontal;
Vertical = vertical;
}
public Alignment Horizontal => _horizontal;
public Alignment Horizontal { get; }
public Alignment Vertical => _vertical;
public Alignment Vertical { get; }
}
public static class CoordinateMixin

21
src/Perspex.Controls/Generators/TreeItemContainerGenerator.cs

@ -14,8 +14,8 @@ namespace Perspex.Controls.Generators
public class TreeItemContainerGenerator<T> : ItemContainerGenerator<T>, ITreeItemContainerGenerator
where T : class, IControl, new()
{
private Dictionary<object, T> _itemToContainer;
private Dictionary<IControl, object> _containerToItem;
private readonly Dictionary<object, T> _itemToContainer;
private readonly Dictionary<IControl, object> _containerToItem;
/// <summary>
/// Initializes a new instance of the <see cref="TreeItemContainerGenerator{T}"/> class.
@ -182,20 +182,9 @@ namespace Perspex.Controls.Generators
/// <returns>The template.</returns>
private ITreeDataTemplate GetTreeDataTemplate(object item)
{
IDataTemplate template = Owner.FindDataTemplate(item);
if (template == null)
{
template = FuncDataTemplate.Default;
}
var treeTemplate = template as ITreeDataTemplate;
if (treeTemplate == null)
{
treeTemplate = new FuncTreeDataTemplate(typeof(object), template.Build, x => null);
}
var template = Owner.FindDataTemplate(item) ?? FuncDataTemplate.Default;
var treeTemplate = template as ITreeDataTemplate ??
new FuncTreeDataTemplate(typeof(object), template.Build, x => null);
return treeTemplate;
}
}

6
src/Perspex.Controls/HotkeyManager.cs

@ -12,7 +12,7 @@ namespace Perspex.Controls
{
public class HotKeyManager
{
public static PerspexProperty<KeyGesture> HotKeyProperty
public static readonly PerspexProperty<KeyGesture> HotKeyProperty
= PerspexProperty.RegisterAttached<Control, KeyGesture>("HotKey", typeof (HotKeyManager));
class HotkeyCommandWrapper : ICommand
@ -22,7 +22,7 @@ namespace Perspex.Controls
Control = control;
}
public IControl Control;
public readonly IControl Control;
private ICommand GetCommand() => Control.GetValue(Button.CommandProperty);
@ -42,7 +42,7 @@ namespace Perspex.Controls
private IDisposable _parentSub;
private IDisposable _hotkeySub;
private KeyGesture _hotkey;
private HotkeyCommandWrapper _wrapper;
private readonly HotkeyCommandWrapper _wrapper;
private KeyBinding _binding;
public Manager(IControl control)

5
src/Perspex.Controls/ListBox.cs

@ -29,10 +29,7 @@ namespace Perspex.Controls
SelectingItemsControl.SelectionModeProperty;
/// <inheritdoc/>
public new IList SelectedItems
{
get { return base.SelectedItems; }
}
public new IList SelectedItems => base.SelectedItems;
/// <inheritdoc/>
public new SelectionMode SelectionMode

2
src/Perspex.Controls/Menu.cs

@ -116,7 +116,7 @@ namespace Perspex.Controls
var inputRoot = e.Root as IInputRoot;
if (inputRoot != null && inputRoot.AccessKeyHandler != null)
if (inputRoot?.AccessKeyHandler != null)
{
inputRoot.AccessKeyHandler.MainMenu = this;
}

11
src/Perspex.Controls/MenuItem.cs

@ -209,10 +209,7 @@ namespace Perspex.Controls
/// <param name="e">The click event args.</param>
protected virtual void OnClick(RoutedEventArgs e)
{
if (Command != null)
{
Command.Execute(CommandParameter);
}
Command?.Execute(CommandParameter);
}
/// <summary>
@ -483,11 +480,7 @@ namespace Perspex.Controls
if (selected != -1)
{
var container = ItemContainerGenerator.ContainerFromIndex(selected);
if (container != null)
{
container.Focus();
}
container?.Focus();
}
}

8
src/Perspex.Controls/MenuItemAccessKeyHandler.cs

@ -93,13 +93,9 @@ namespace Perspex.Controls
{
var text = e.Text.ToUpper();
var focus = _registered
.Where(x => x.Item1 == text && x.Item2.IsEffectivelyVisible)
.FirstOrDefault()?.Item2;
.FirstOrDefault(x => x.Item1 == text && x.Item2.IsEffectivelyVisible)?.Item2;
if (focus != null)
{
focus.RaiseEvent(new RoutedEventArgs(AccessKeyHandler.AccessKeyPressedEvent));
}
focus?.RaiseEvent(new RoutedEventArgs(AccessKeyHandler.AccessKeyPressedEvent));
e.Handled = true;
}

6
src/Perspex.Controls/Primitives/AdornerLayer.cs

@ -74,11 +74,7 @@ namespace Perspex.Controls.Primitives
var adorner = (Visual)e.Sender;
var adorned = (Visual)e.NewValue;
var layer = adorner.GetVisualParent<AdornerLayer>();
if (layer != null)
{
layer.UpdateAdornedElement(adorner, adorned);
}
layer?.UpdateAdornedElement(adorner, adorned);
}
private void ChildrenCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)

8
src/Perspex.Controls/Primitives/Popup.cs

@ -250,10 +250,7 @@ namespace Perspex.Controls.Primitives
{
LogicalChildren.Clear();
if (e.OldValue != null)
{
((ISetLogicalParent)e.OldValue).SetParent(null);
}
((ISetLogicalParent)e.OldValue)?.SetParent(null);
if (e.NewValue != null)
{
@ -269,10 +266,11 @@ namespace Perspex.Controls.Primitives
private Point GetPosition()
{
var target = PlacementTarget ?? this.GetVisualParent<Control>();
Point point;
if (target != null)
{
Point point;
switch (PlacementMode)
{
case PlacementMode.Bottom:

9
src/Perspex.Controls/Primitives/PopupRoot.cs

@ -106,13 +106,8 @@ namespace Perspex.Controls.Primitives
_presenterSubscription = null;
}
var presenter = Presenter;
if (presenter != null)
{
presenter.GetObservable(ContentPresenter.ChildProperty)
.Subscribe(SetTemplatedParentAndApplyChildTemplates);
}
Presenter?.GetObservable(ContentPresenter.ChildProperty)
.Subscribe(SetTemplatedParentAndApplyChildTemplates);
}
}

2
src/Perspex.Controls/Primitives/SelectingItemsControl.cs

@ -317,7 +317,7 @@ namespace Perspex.Controls.Primitives
var mode = SelectionMode;
var toggle = toggleModifier || (mode & SelectionMode.Toggle) != 0;
var multi = (mode & SelectionMode.Multiple) != 0;
var range = multi && SelectedIndex != -1 ? rangeModifier : false;
var range = multi && SelectedIndex != -1 && rangeModifier;
if (!toggle && !range)
{

5
src/Perspex.Controls/TabControl.cs

@ -48,10 +48,7 @@ namespace Perspex.Controls
/// <summary>
/// Gets an <see cref="IMemberSelector"/> that selects the content of a <see cref="TabItem"/>.
/// </summary>
public IMemberSelector ContentSelector
{
get { return s_contentSelector; }
}
public IMemberSelector ContentSelector => s_contentSelector;
/// <summary>
/// Gets the <see cref="SelectingItemsControl.SelectedItem"/> as a <see cref="TabItem"/>.

4
src/Perspex.Controls/Templates/FuncDataTemplate.cs

@ -73,9 +73,7 @@ namespace Perspex.Controls.Templates
/// </returns>
private static bool IsInstance(object o, Type t)
{
return (o != null) ?
t.GetTypeInfo().IsAssignableFrom(o.GetType().GetTypeInfo()) :
false;
return (o != null) && t.GetTypeInfo().IsAssignableFrom(o.GetType().GetTypeInfo());
}
}
}

2
src/Perspex.Controls/Templates/FuncDataTemplate`1.cs

@ -43,7 +43,7 @@ namespace Perspex.Controls.Templates
/// <returns>The weakly typed function.</returns>
private static Func<object, bool> CastMatch(Func<T, bool> f)
{
return o => (o is T) ? f((T)o) : false;
return o => (o is T) && f((T)o);
}
/// <summary>

2
src/Perspex.Controls/Templates/FuncMemberSelector.cs

@ -10,7 +10,7 @@ namespace Perspex.Controls.Templates
/// </summary>
public class FuncMemberSelector<TObject, TMember> : IMemberSelector
{
private Func<TObject, TMember> _selector;
private readonly Func<TObject, TMember> _selector;
/// <summary>
/// Initializes a new instance of the <see cref="FuncMemberSelector{TObject, TMember}"/>

4
src/Perspex.Controls/Templates/FuncTreeDataTemplate.cs

@ -137,9 +137,7 @@ namespace Perspex.Controls.Templates
/// </returns>
private static bool IsInstance(object o, Type t)
{
return (o != null) ?
t.GetTypeInfo().IsAssignableFrom(o.GetType().GetTypeInfo()) :
false;
return (o != null) && t.GetTypeInfo().IsAssignableFrom(o.GetType().GetTypeInfo());
}
}
}

2
src/Perspex.Controls/Templates/FuncTreeDataTemplate`1.cs

@ -117,7 +117,7 @@ namespace Perspex.Controls.Templates
/// <returns>The untyped function.</returns>
private static Func<object, bool> CastMatch(Func<T, bool> f)
{
return o => (o is T) ? f((T)o) : false;
return o => (o is T) && f((T)o);
}
/// <summary>

2
src/Perspex.Controls/TextBox.cs

@ -360,7 +360,7 @@ namespace Perspex.Controls
private static int ValidateCaretIndex(PerspexObject o, int value)
{
var text = o.GetValue(TextProperty);
var length = (text != null) ? text.Length : 0;
var length = text?.Length ?? 0;
return Math.Max(0, Math.Min(length, value));
}

2
src/Perspex.Controls/ToolTip.cs

@ -115,7 +115,7 @@ namespace Perspex.Controls
}
var cp = MouseDevice.Instance?.GetPosition(control);
var position = control.PointToScreen(cp.HasValue ? cp.Value : new Point(0, 0)) + new Vector(0, 22);
var position = control.PointToScreen(cp ?? new Point(0, 0)) + new Vector(0, 22);
((ToolTip)s_popup.Content).Content = GetTip(control);
s_popup.SetPosition(position);

38
src/Perspex.Controls/TopLevel.cs

@ -102,7 +102,7 @@ namespace Perspex.Controls
PlatformImpl.Input = HandleInput;
PlatformImpl.Resized = HandleResized;
Size clientSize = ClientSize = PlatformImpl.ClientSize;
var clientSize = ClientSize = PlatformImpl.ClientSize;
if (LayoutManager != null)
{
@ -111,16 +111,8 @@ namespace Perspex.Controls
LayoutManager.LayoutCompleted.Subscribe(_ => HandleLayoutCompleted());
}
if (_keyboardNavigationHandler != null)
{
_keyboardNavigationHandler.SetOwner(this);
}
if (_accessKeyHandler != null)
{
_accessKeyHandler.SetOwner(this);
}
_keyboardNavigationHandler?.SetOwner(this);
_accessKeyHandler?.SetOwner(this);
styler?.ApplyStyles(this);
GetObservable(ClientSizeProperty).Skip(1).Subscribe(x => PlatformImpl.ClientSize = x);
@ -306,12 +298,9 @@ namespace Perspex.Controls
{
var result = resolver.GetService<T>();
if (result == null)
{
System.Diagnostics.Debug.WriteLineIf(
result == null,
$"Could not create {typeof(T).Name} : maybe Application.RegisterServices() wasn't called?");
}
System.Diagnostics.Debug.WriteLineIf(
result == null,
$"Could not create {typeof(T).Name} : maybe Application.RegisterServices() wasn't called?");
return result;
}
@ -321,10 +310,7 @@ namespace Perspex.Controls
/// </summary>
private void HandleActivated()
{
if (Activated != null)
{
Activated(this, EventArgs.Empty);
}
Activated?.Invoke(this, EventArgs.Empty);
var scope = this as IFocusScope;
@ -341,10 +327,7 @@ namespace Perspex.Controls
/// </summary>
private void HandleClosed()
{
if (Closed != null)
{
Closed(this, EventArgs.Empty);
}
Closed?.Invoke(this, EventArgs.Empty);
}
/// <summary>
@ -354,10 +337,7 @@ namespace Perspex.Controls
{
IsActive = false;
if (Deactivated != null)
{
Deactivated(this, EventArgs.Empty);
}
Deactivated?.Invoke(this, EventArgs.Empty);
}
/// <summary>

2
src/Perspex.Controls/UserControl.cs

@ -8,7 +8,7 @@ namespace Perspex.Controls
{
public class UserControl : ContentControl, IStyleable, INameScope
{
private NameScope _nameScope = new NameScope();
private readonly NameScope _nameScope = new NameScope();
/// <inheritdoc/>
event EventHandler<NameScopeEventArgs> INameScope.Registered

4
src/Perspex.Controls/Window.cs

@ -55,9 +55,9 @@ namespace Perspex.Controls
public static readonly PerspexProperty<string> TitleProperty =
PerspexProperty.Register<Window, string>(nameof(Title), "Window");
private NameScope _nameScope = new NameScope();
private readonly NameScope _nameScope = new NameScope();
private object _dialogResult;
private Size _maxPlatformClientSize;
private readonly Size _maxPlatformClientSize;
/// <summary>
/// Initializes static members of the <see cref="Window"/> class.

13
src/Perspex.Diagnostics/LogManager.cs

@ -11,18 +11,7 @@ namespace Perspex.Diagnostics
{
private static LogManager s_instance;
public static LogManager Instance
{
get
{
if (s_instance == null)
{
s_instance = new LogManager();
}
return s_instance;
}
}
public static LogManager Instance => s_instance ?? (s_instance = new LogManager());
public ILogger Logger
{

2
src/Perspex.Diagnostics/ViewModels/PropertyDetails.cs

@ -17,7 +17,7 @@ namespace Perspex.Diagnostics.ViewModels
public PropertyDetails(PerspexObject o, PerspexProperty property)
{
Name = property.IsAttached ?
string.Format("[{0}.{1}]", property.OwnerType.Name, property.Name) :
$"[{property.OwnerType.Name}.{property.Name}]" :
property.Name;
IsAttached = property.IsAttached;

2
src/Perspex.Diagnostics/ViewModels/VisualTreeNode.cs

@ -14,7 +14,7 @@ namespace Perspex.Diagnostics.ViewModels
{
var host = visual as IVisualTreeHost;
if (host == null || host.Root == null)
if (host?.Root == null)
{
Children = visual.VisualChildren.CreateDerivedCollection(x => new VisualTreeNode(x));
}

2
src/Perspex.HtmlRenderer/Adapters/GraphicsAdapter.cs

@ -42,7 +42,7 @@ namespace TheArtOfDev.HtmlRenderer.Perspex.Adapters
#endregion
private Stack<IDisposable> _clipStack = new Stack<IDisposable>();
private readonly Stack<IDisposable> _clipStack = new Stack<IDisposable>();
/// <summary>

2
src/Perspex.Input/FocusManager.cs

@ -182,7 +182,7 @@ namespace Perspex.Input
{
element = element.GetSelfAndVisualAncestors()
.OfType<IInputElement>()
.FirstOrDefault(x => CanFocus(x));
.FirstOrDefault(CanFocus);
}
if (element != null)

4
src/Perspex.Input/KeyBinding.cs

@ -9,7 +9,7 @@ namespace Perspex.Input
{
public class KeyBinding : PerspexObject
{
public static PerspexProperty<ICommand> CommandProperty =
public static readonly PerspexProperty<ICommand> CommandProperty =
PerspexProperty.Register<KeyBinding, ICommand>("Command");
public ICommand Command
@ -18,7 +18,7 @@ namespace Perspex.Input
set { SetValue(CommandProperty, value); }
}
public static PerspexProperty<KeyGesture> GestureProperty =
public static readonly PerspexProperty<KeyGesture> GestureProperty =
PerspexProperty.Register<KeyBinding, KeyGesture>("Gesture");
public KeyGesture Gesture

2
src/Perspex.Input/KeyGesture.cs

@ -45,7 +45,7 @@ namespace Perspex.Input
public InputModifiers Modifiers { get; set; }
static Dictionary<string, Key> KeySynonims = new Dictionary<string, Key>
static readonly Dictionary<string, Key> KeySynonims = new Dictionary<string, Key>
{
{"+", Key.OemPlus },
{"-", Key.OemMinus},

22
src/Perspex.Input/KeyboardDevice.cs

@ -54,26 +54,20 @@ namespace Perspex.Input
{
var interactive = FocusedElement as IInteractive;
if (interactive != null)
interactive?.RaiseEvent(new RoutedEventArgs
{
interactive.RaiseEvent(new RoutedEventArgs
{
RoutedEvent = InputElement.LostFocusEvent,
});
}
RoutedEvent = InputElement.LostFocusEvent,
});
FocusedElement = element;
interactive = element as IInteractive;
if (interactive != null)
interactive?.RaiseEvent(new GotFocusEventArgs
{
interactive.RaiseEvent(new GotFocusEventArgs
{
RoutedEvent = InputElement.GotFocusEvent,
NavigationMethod = method,
InputModifiers = modifiers,
});
}
RoutedEvent = InputElement.GotFocusEvent,
NavigationMethod = method,
InputModifiers = modifiers,
});
}
}

34
src/Perspex.Input/MouseDevice.cs

@ -178,17 +178,14 @@ namespace Perspex.Input
{
IInteractive source = GetSource(hit);
if (source != null)
source?.RaiseEvent(new PointerReleasedEventArgs
{
source.RaiseEvent(new PointerReleasedEventArgs
{
Device = this,
RoutedEvent = InputElement.PointerReleasedEvent,
Source = source,
MouseButton = button,
InputModifiers = inputModifiers
});
}
Device = this,
RoutedEvent = InputElement.PointerReleasedEvent,
Source = source,
MouseButton = button,
InputModifiers = inputModifiers
});
}
}
@ -200,17 +197,14 @@ namespace Perspex.Input
{
IInteractive source = GetSource(hit);
if (source != null)
source?.RaiseEvent(new PointerWheelEventArgs
{
source.RaiseEvent(new PointerWheelEventArgs
{
Device = this,
RoutedEvent = InputElement.PointerWheelChangedEvent,
Source = source,
Delta = delta,
InputModifiers = inputModifiers
});
}
Device = this,
RoutedEvent = InputElement.PointerWheelChangedEvent,
Source = source,
Delta = delta,
InputModifiers = inputModifiers
});
}
}

13
src/Perspex.Input/Navigation/DirectionalNavigation.cs

@ -196,16 +196,9 @@ namespace Perspex.Input.Navigation
var siblings = parent.GetVisualChildren()
.OfType<IInputElement>()
.Where(FocusExtensions.CanFocusDescendents);
IInputElement sibling;
if (isForward)
{
sibling = siblings.SkipWhile(x => x != container).Skip(1).FirstOrDefault();
}
else
{
sibling = siblings.TakeWhile(x => x != container).LastOrDefault();
}
var sibling = isForward ?
siblings.SkipWhile(x => x != container).Skip(1).FirstOrDefault() :
siblings.TakeWhile(x => x != container).LastOrDefault();
if (sibling != null)
{

13
src/Perspex.Input/Navigation/TabNavigation.cs

@ -204,16 +204,9 @@ namespace Perspex.Input.Navigation
var siblings = parent.GetVisualChildren()
.OfType<IInputElement>()
.Where(FocusExtensions.CanFocusDescendents);
IInputElement sibling;
if (direction == FocusNavigationDirection.Next)
{
sibling = siblings.SkipWhile(x => x != container).Skip(1).FirstOrDefault();
}
else
{
sibling = siblings.TakeWhile(x => x != container).LastOrDefault();
}
var sibling = direction == FocusNavigationDirection.Next ?
siblings.SkipWhile(x => x != container).Skip(1).FirstOrDefault() :
siblings.TakeWhile(x => x != container).LastOrDefault();
if (sibling != null)
{

24
src/Perspex.Layout/Layoutable.cs

@ -386,11 +386,7 @@ namespace Perspex.Layout
else
{
var root = GetLayoutRoot();
if (root != null && root.Item1.LayoutManager != null)
{
root.Item1.LayoutManager.InvalidateMeasure(this, root.Item2);
}
root?.Item1.LayoutManager?.InvalidateMeasure(this, root.Item2);
}
}
@ -408,11 +404,7 @@ namespace Perspex.Layout
IsArrangeValid = false;
_previousArrange = null;
if (root != null && root.Item1.LayoutManager != null)
{
root.Item1.LayoutManager.InvalidateArrange(this, root.Item2);
}
root?.Item1.LayoutManager?.InvalidateArrange(this, root.Item2);
}
/// <summary>
@ -606,11 +598,7 @@ namespace Perspex.Layout
private static void AffectsMeasureInvalidate(PerspexPropertyChangedEventArgs e)
{
ILayoutable control = e.Sender as ILayoutable;
if (control != null)
{
control.InvalidateMeasure();
}
control?.InvalidateMeasure();
}
/// <summary>
@ -620,11 +608,7 @@ namespace Perspex.Layout
private static void AffectsArrangeInvalidate(PerspexPropertyChangedEventArgs e)
{
ILayoutable control = e.Sender as ILayoutable;
if (control != null)
{
control.InvalidateArrange();
}
control?.InvalidateArrange();
}
/// <summary>

2
src/Perspex.SceneGraph/Media/Color.cs

@ -134,7 +134,7 @@ namespace Perspex.Media
public override string ToString()
{
uint rgb = ((uint)A << 24) | ((uint)R << 16) | ((uint)G << 8) | (uint)B;
return string.Format("#{0:x8}", rgb);
return $"#{rgb:x8}";
}
/// <summary>

10
src/Perspex.SceneGraph/Media/DashStyle.cs

@ -28,15 +28,7 @@
private static DashStyle dot;
public static DashStyle Dot
{
get
{
if (dot == null)
{
dot = new DashStyle(new double[] { 0, 2 }, 0);
}
return dot;
}
get { return dot ?? (dot = new DashStyle(new double[] {0, 2}, 0)); }
}
private static DashStyle dashDot;

4
src/Perspex.SceneGraph/Media/DrawingContext.cs

@ -26,8 +26,8 @@ namespace Perspex.Media
struct TransformContainer
{
public Matrix LocalTransform;
public Matrix ContainerTransform;
public readonly Matrix LocalTransform;
public readonly Matrix ContainerTransform;
public TransformContainer(Matrix localTransform, Matrix containerTransform)
{

11
src/Perspex.SceneGraph/Media/PathMarkupParser.cs

@ -98,14 +98,9 @@ namespace Perspex.Media
_context.EndFigure(false);
}
if (command == Command.Move)
{
point = ReadPoint(reader);
}
else
{
point = ReadRelativePoint(reader, point);
}
point = command == Command.Move ?
ReadPoint(reader) :
ReadRelativePoint(reader, point);
_context.BeginFigure(point, true);
openFigure = true;

5
src/Perspex.SceneGraph/Media/Transform.cs

@ -26,10 +26,7 @@ namespace Perspex.Media
/// </summary>
protected void RaiseChanged()
{
if (Changed != null)
{
Changed(this, EventArgs.Empty);
}
Changed?.Invoke(this, EventArgs.Empty);
}
}
}

2
src/Perspex.SceneGraph/RelativePoint.cs

@ -109,7 +109,7 @@ namespace Perspex
/// <returns>True if the objects are equal, otherwise false.</returns>
public override bool Equals(object obj)
{
return (obj is RelativePoint) ? Equals((RelativePoint)obj) : false;
return (obj is RelativePoint) && Equals((RelativePoint)obj);
}
/// <summary>

2
src/Perspex.SceneGraph/RelativeRect.cs

@ -116,7 +116,7 @@ namespace Perspex
/// <returns>True if the objects are equal, otherwise false.</returns>
public override bool Equals(object obj)
{
return (obj is RelativeRect) ? Equals((RelativeRect)obj) : false;
return (obj is RelativeRect) && Equals((RelativeRect)obj);
}
/// <summary>

2
src/Perspex.SceneGraph/Rendering/RendererBase.cs

@ -25,7 +25,7 @@ namespace Perspex.Rendering
static int s_fps;
static int s_currentFrames;
static TimeSpan s_lastMeasure;
static Stopwatch s_stopwatch = Stopwatch.StartNew();
static readonly Stopwatch s_stopwatch = Stopwatch.StartNew();
/// <summary>
/// Renders the specified visual.
/// </summary>

2
src/Perspex.SceneGraph/Thickness.cs

@ -231,7 +231,7 @@ namespace Perspex
/// <returns>The string representation of the thickness.</returns>
public override string ToString()
{
return string.Format("{0},{1},{2},{3}", _left, _top, _right, _bottom);
return $"{_left},{_top},{_right},{_bottom}";
}
}
}

6
src/Perspex.SceneGraph/Visual.cs

@ -272,11 +272,7 @@ namespace Perspex
IRenderRoot root = this.GetSelfAndVisualAncestors()
.OfType<IRenderRoot>()
.FirstOrDefault();
if (root != null && root.RenderQueueManager != null)
{
root.RenderQueueManager.InvalidateRender(this);
}
root?.RenderQueueManager?.InvalidateRender(this);
}
/// <summary>

4
src/Perspex.SceneGraph/VisualTree/BoundsTracker.cs

@ -44,10 +44,10 @@ namespace Perspex.VisualTree
boundsSubscriptions.Add(v.GetObservable(Visual.BoundsProperty));
}
var bounds = Observable.CombineLatest(boundsSubscriptions).Select(ExtractBounds);
var bounds = boundsSubscriptions.CombineLatest().Select(ExtractBounds);
// TODO: Track transform and clip rectangle.
return Observable.Select(bounds, x => new TransformedBounds((Rect)x, (Rect)new Rect(), (Matrix)Matrix.Identity));
return bounds.Select(x => new TransformedBounds((Rect)x, (Rect)new Rect(), (Matrix)Matrix.Identity));
}
/// <summary>

6
src/Perspex.Styling/Styling/Classes.cs

@ -147,11 +147,7 @@ namespace Perspex.Styling
private void RaiseChanged(NotifyCollectionChangedEventArgs e)
{
if (CollectionChanged != null)
{
CollectionChanged(this, e);
}
CollectionChanged?.Invoke(this, e);
_changed.OnNext(e);
_afterChanged.OnNext(e);
}

5
src/Perspex.Styling/Styling/Selector.cs

@ -97,10 +97,7 @@ namespace Perspex.Styling
/// <summary>
/// Gets the target type of the selector, if available.
/// </summary>
public Type TargetType
{
get { return _targetType ?? MovePrevious()?.TargetType; }
}
public Type TargetType => _targetType ?? MovePrevious()?.TargetType;
/// <summary>
/// Returns the previous selector if traversal is not stopped.

4
src/Perspex.Styling/Styling/StyleBinding.cs

@ -97,8 +97,8 @@ namespace Perspex.Styling
}
else
{
return Observable
.CombineLatest(_activator, Source, (x, y) => new { Active = x, Value = y })
return _activator
.CombineLatest(Source, (x, y) => new { Active = x, Value = y })
.Subscribe(x => observer.OnNext(x.Active ? x.Value : PerspexProperty.UnsetValue));
}
}

21
src/Perspex.Styling/Styling/Styler.cs

@ -18,10 +18,7 @@ namespace Perspex.Styling
.FirstOrDefault();
IGlobalStyles global = PerspexLocator.Current.GetService<IGlobalStyles>();
if (global != null)
{
global.Styles.Attach(control, null);
}
global?.Styles.Attach(control, null);
if (styleContainer != null)
{
@ -36,17 +33,13 @@ namespace Perspex.Styling
IVisual visual = container as IVisual;
if (visual != null)
IStyleHost parentContainer = visual?.GetVisualAncestors()
.OfType<IStyleHost>()
.FirstOrDefault();
if (parentContainer != null)
{
IStyleHost parentContainer = visual
.GetVisualAncestors()
.OfType<IStyleHost>()
.FirstOrDefault();
if (parentContainer != null)
{
ApplyStyles(control, parentContainer);
}
ApplyStyles(control, parentContainer);
}
container.Styles.Attach(control, container);

2
src/Shared/PlatformSupport/AssetLoader.cs

@ -18,7 +18,7 @@ namespace Perspex.Shared.PlatformSupport
private static readonly Dictionary<string, Assembly> AssemblyNameCache
= new Dictionary<string, Assembly>();
private Assembly _defaultAssembly;
private readonly Assembly _defaultAssembly;
public AssetLoader(Assembly assembly = null)
{

4
src/Shared/RenderHelpers/TileBrushImplHelper.cs

@ -23,8 +23,8 @@ namespace Perspex.RenderHelpers
private readonly Size _imageSize;
private readonly VisualBrush _visualBrush;
private readonly ImageBrush _imageBrush;
private Matrix _transform;
private Rect _drawRect;
private readonly Matrix _transform;
private readonly Rect _drawRect;
public bool IsValid { get; }

2
src/Skia/Perspex.Skia/DrawingContextImpl.cs

@ -187,7 +187,7 @@ namespace Perspex.Skia
public void PopOpacity() => _settings->Opacity = _opacityStack.Pop();
private Matrix _currentTransform = Matrix.Identity;
private float[] _fmatrix = new float[6];
private readonly float[] _fmatrix = new float[6];
public Matrix Transform
{
get { return _currentTransform; }

6
src/Skia/Perspex.Skia/FormattedTextImpl.cs

@ -24,9 +24,9 @@ namespace Perspex.Skia
return new FormattedTextImpl(handle, pShared, text);
}
}
List<FormattedTextLine> _lines = new List<FormattedTextLine>();
List<Rect> _rects = new List<Rect>();
readonly List<FormattedTextLine> _lines = new List<FormattedTextLine>();
readonly List<Rect> _rects = new List<Rect>();
Size _size;
public IEnumerable<FormattedTextLine> GetLines()

4
src/Skia/Perspex.Skia/NativeBrush.cs

@ -69,7 +69,7 @@ namespace Perspex.Skia
private readonly NativeBrushPool _pool;
public NativeBrush* Brush;
List<IDisposable> _disposables = new List<IDisposable>();
readonly List<IDisposable> _disposables = new List<IDisposable>();
public NativeBrushContainer(NativeBrushPool pool)
{
@ -96,7 +96,7 @@ namespace Perspex.Skia
class NativeBrushPool
{
public static NativeBrushPool Instance { get; } = new NativeBrushPool();
Stack<NativeBrushContainer> _pool = new Stack<NativeBrushContainer>();
readonly Stack<NativeBrushContainer> _pool = new Stack<NativeBrushContainer>();
public void Return(NativeBrushContainer c)
{

2
src/Skia/Perspex.Skia/PerspexHandleHolder.cs

@ -4,7 +4,7 @@ namespace Perspex.Skia
{
abstract class PerspexHandleHolder : IDisposable
{
private IntPtr _handle;
private readonly IntPtr _handle;
public IntPtr Handle
{

2
src/Windows/Perspex.Designer/AppHost/PerspexAppHost.cs

@ -23,7 +23,7 @@ namespace Perspex.Designer.AppHost
private string _lastXaml;
private string _currentXaml;
private bool _initSuccess;
private HostedAppModel _appModel;
private readonly HostedAppModel _appModel;
private Control _window;
public PerspexAppHost(CommChannel channel)

4
src/Windows/Perspex.Designer/AppHost/WindowHost.cs

@ -35,8 +35,8 @@ namespace Perspex.Designer.AppHost
BackColor = color;
}
private Control _windowHost = new Control() {Text = "WindowWrapper"};
private Timer _timer = new Timer {Enabled = true, Interval = 50};
private readonly Control _windowHost = new Control() {Text = "WindowWrapper"};
private readonly Timer _timer = new Timer {Enabled = true, Interval = 50};
private IntPtr _hWnd;
private int _desiredWidth;
private int _desiredHeight;

6
src/Windows/Perspex.Designer/Comm/CommChannel.cs

@ -17,9 +17,9 @@ namespace Perspex.Designer.Comm
{
private readonly BinaryReader _input;
private readonly BinaryWriter _output;
private SynchronizationContext _dispatcher;
TaskCompletionSource<bool> _terminating = new TaskCompletionSource<bool>();
private BlockingCollection<byte[]> _outputQueue = new BlockingCollection<byte[]>();
private readonly SynchronizationContext _dispatcher;
readonly TaskCompletionSource<bool> _terminating = new TaskCompletionSource<bool>();
private readonly BlockingCollection<byte[]> _outputQueue = new BlockingCollection<byte[]>();
public event Action<object> OnMessage;
public event Action Disposed;
public event Action<Exception> Exception;

2
src/Windows/Perspex.Designer/PerspexDesigner.xaml

@ -11,7 +11,7 @@
<TextBox IsReadOnly="True" TextWrapping="WrapWithOverflow" x:Name="State"/>
</ScrollViewer>
<StackPanel x:Name="ErrorContainer">
<TextBlock ></TextBlock>
<TextBlock />
</StackPanel>
</Grid>
</UserControl>

2
src/Windows/Perspex.Direct2D1/Media/DrawingContext.cs

@ -247,7 +247,7 @@ namespace Perspex.Direct2D1.Media
_renderTarget.PopAxisAlignedClip();
}
Stack<Layer> _layers = new Stack<Layer>();
readonly Stack<Layer> _layers = new Stack<Layer>();
private readonly Stack<Layer> _layerPool = new Stack<Layer>();
/// <summary>
/// Pushes an opacity value.

4
src/Windows/Perspex.Win32/Input/WindowsMouseDevice.cs

@ -10,9 +10,7 @@ namespace Perspex.Win32.Input
{
public class WindowsMouseDevice : MouseDevice
{
private static readonly WindowsMouseDevice s_instance = new WindowsMouseDevice();
public static new WindowsMouseDevice Instance => s_instance;
public new static WindowsMouseDevice Instance { get; } = new WindowsMouseDevice();
public WindowImpl CurrentWindow
{

4
src/Windows/Perspex.Win32/Interop/UnmanagedMethods.cs

@ -806,8 +806,8 @@ namespace Perspex.Win32.Interop
public IntPtr lpstrInitialDir;
public IntPtr lpstrTitle;
public OpenFileNameFlags Flags;
private ushort Unused;
private ushort Unused2;
private readonly ushort Unused;
private readonly ushort Unused2;
public IntPtr lpstrDefExt;
public IntPtr lCustData;
public IntPtr lpfnHook;

17
src/Windows/Perspex.Win32/WindowImpl.cs

@ -204,10 +204,7 @@ namespace Perspex.Win32
window.IsEnabled = true;
}
if (activated != null)
{
activated.Activate();
}
activated?.Activate();
});
}
@ -256,20 +253,12 @@ namespace Perspex.Win32
case UnmanagedMethods.WindowActivate.WA_ACTIVE:
case UnmanagedMethods.WindowActivate.WA_CLICKACTIVE:
_isActive = true;
if (Activated != null)
{
Activated();
}
Activated?.Invoke();
break;
case UnmanagedMethods.WindowActivate.WA_INACTIVE:
_isActive = false;
if (Deactivated != null)
{
Deactivated();
}
Deactivated?.Invoke();
break;
}

2
tests/Perspex.Base.UnitTests/PerspexObjectTests_Direct.cs

@ -350,7 +350,7 @@ namespace Perspex.Base.UnitTests
PerspexProperty.RegisterDirect<Class1, int>("Bar", o => o.Baz, (o,v) => o.Baz = v);
private string _foo = "initial";
private string _bar = "bar";
private readonly string _bar = "bar";
private int _baz = 5;
public string Foo

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save