Browse Source

Removed IMouseDevice from service locator

pull/1012/head
Nikita Tsukanov 9 years ago
parent
commit
77b7026ac9
  1. 1
      src/Android/Avalonia.Android/AndroidPlatform.cs
  2. 2
      src/Android/Avalonia.Android/Platform/Input/AndroidMouseDevice.cs
  3. 3
      src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs
  4. 7
      src/Avalonia.Controls/Platform/ITopLevelImpl.cs
  5. 4
      src/Avalonia.Controls/Primitives/Popup.cs
  6. 3
      src/Avalonia.Controls/ToolTip.cs
  7. 3
      src/Avalonia.Controls/TopLevel.cs
  8. 3
      src/Avalonia.Diagnostics/DevTools.xaml.cs
  9. 5
      src/Avalonia.HtmlRenderer/Adapters/ControlAdapter.cs
  10. 3
      src/Avalonia.HtmlRenderer/HtmlControl.cs
  11. 8
      src/Avalonia.Input/IInputRoot.cs
  12. 7
      src/Avalonia.Input/MouseDevice.cs
  13. 1
      src/Gtk/Avalonia.Gtk/GtkPlatform.cs
  14. 2
      src/Gtk/Avalonia.Gtk/TopLevelImpl.cs
  15. 1
      src/Gtk/Avalonia.Gtk3/Gtk3Platform.cs
  16. 3
      src/Gtk/Avalonia.Gtk3/WindowBaseImpl.cs
  17. 3
      src/Linux/Avalonia.LinuxFramebuffer/FramebufferToplevelImpl.cs
  18. 1
      src/Linux/Avalonia.LinuxFramebuffer/LinuxFramebufferPlatform.cs
  19. 1
      src/Windows/Avalonia.Win32/Win32Platform.cs
  20. 2
      src/Windows/Avalonia.Win32/WindowImpl.cs
  21. 3
      src/iOS/Avalonia.iOS/TopLevelImpl.cs
  22. 1
      src/iOS/Avalonia.iOS/iOSPlatform.cs

1
src/Android/Avalonia.Android/AndroidPlatform.cs

@ -51,7 +51,6 @@ namespace Avalonia.Android
.Bind<IClipboard>().ToTransient<ClipboardImpl>()
.Bind<IStandardCursorFactory>().ToTransient<CursorFactory>()
.Bind<IKeyboardDevice>().ToSingleton<AndroidKeyboardDevice>()
.Bind<IMouseDevice>().ToSingleton<AndroidMouseDevice>()
.Bind<IPlatformSettings>().ToConstant(Instance)
.Bind<IRendererFactory>().ToConstant(ImmediateRenderer.Factory)
.Bind<IPlatformThreadingInterface>().ToConstant(new AndroidThreadingInterface())

2
src/Android/Avalonia.Android/Platform/Input/AndroidMouseDevice.cs

@ -4,6 +4,8 @@ namespace Avalonia.Android.Platform.Input
{
public class AndroidMouseDevice : MouseDevice
{
public static AndroidMouseDevice Instance { get; } = new AndroidMouseDevice();
public AndroidMouseDevice()
{

3
src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs

@ -10,6 +10,7 @@ using Avalonia.Platform;
using System;
using System.Collections.Generic;
using System.Reactive.Disposables;
using Avalonia.Android.Platform.Input;
using Avalonia.Controls;
using Avalonia.Controls.Platform.Surfaces;
@ -67,6 +68,8 @@ namespace Avalonia.Android.Platform.SkiaPlatform
public Action Closed { get; set; }
public IMouseDevice MouseDevice => AndroidMouseDevice.Instance;
public Action<RawInputEventArgs> Input { get; set; }
public Size MaxClientSize { get; protected set; }

7
src/Avalonia.Controls/Platform/ITopLevelImpl.cs

@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using Avalonia.Input;
using Avalonia.Input.Raw;
using JetBrains.Annotations;
namespace Avalonia.Platform
{
@ -93,5 +94,11 @@ namespace Avalonia.Platform
/// Gets or sets a method called when the underlying implementation is destroyed.
/// </summary>
Action Closed { get; set; }
/// <summary>
/// Gets a mouse device associated with toplevel
/// </summary>
[CanBeNull]
IMouseDevice MouseDevice { get; }
}
}

4
src/Avalonia.Controls/Primitives/Popup.cs

@ -340,11 +340,11 @@ namespace Avalonia.Controls.Primitives
switch (mode)
{
case PlacementMode.Pointer:
if (MouseDevice.Instance != null)
if(PopupRoot != null)
{
// Scales the Horizontal and Vertical offset to screen co-ordinates.
var screenOffset = new Point(HorizontalOffset * (PopupRoot as ILayoutRoot).LayoutScaling, VerticalOffset * (PopupRoot as ILayoutRoot).LayoutScaling);
return MouseDevice.Instance.Position + screenOffset;
return ((IInputRoot)PopupRoot).MouseDevice.Position + screenOffset;
}
return default(Point);

3
src/Avalonia.Controls/ToolTip.cs

@ -109,8 +109,7 @@ namespace Avalonia.Controls
{
throw new AvaloniaInternalException("Previous ToolTip not disposed.");
}
var cp = MouseDevice.Instance?.GetPosition(control);
var cp = (control.GetVisualRoot() as IInputRoot)?.MouseDevice?.GetPosition(control);
var position = control.PointToScreen(cp ?? new Point(0, 0)) + new Vector(0, 22);
s_popup = new PopupRoot();

3
src/Avalonia.Controls/TopLevel.cs

@ -163,6 +163,9 @@ namespace Avalonia.Controls
set { SetValue(PointerOverElementProperty, value); }
}
/// <inheritdoc/>
IMouseDevice IInputRoot.MouseDevice => PlatformImpl?.MouseDevice;
/// <summary>
/// Gets or sets a value indicating whether access keys are shown in the window.
/// </summary>

3
src/Avalonia.Diagnostics/DevTools.xaml.cs

@ -106,7 +106,8 @@ namespace Avalonia.Diagnostics
if ((e.Modifiers) == modifiers)
{
var point = MouseDevice.Instance.GetPosition(Root);
var point = (Root.VisualRoot as IInputRoot)?.MouseDevice?.GetPosition(Root) ?? default(Point);
var control = Root.GetVisualsAt(point, x => (!(x is AdornerLayer) && x.IsVisible))
.FirstOrDefault();

5
src/Avalonia.HtmlRenderer/Adapters/ControlAdapter.cs

@ -10,9 +10,11 @@
// - Sun Tsu,
// "The Art of War"
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Html;
using Avalonia.Input;
using Avalonia.VisualTree;
using TheArtOfDev.HtmlRenderer.Adapters;
using TheArtOfDev.HtmlRenderer.Adapters.Entities;
using TheArtOfDev.HtmlRenderer.Core.Utils;
@ -54,7 +56,8 @@ namespace TheArtOfDev.HtmlRenderer.Avalonia.Adapters
{
get
{
return Util.Convert(MouseDevice.Instance.GetPosition(_control));
var pos = (_control.GetVisualRoot() as IInputRoot)?.MouseDevice?.Position ?? default(Point);
return Util.Convert(pos);
}
}

3
src/Avalonia.HtmlRenderer/HtmlControl.cs

@ -17,6 +17,7 @@ using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Media;
using Avalonia.Threading;
using Avalonia.VisualTree;
using TheArtOfDev.HtmlRenderer.Core;
using TheArtOfDev.HtmlRenderer.Core.Entities;
using TheArtOfDev.HtmlRenderer.Avalonia;
@ -512,7 +513,7 @@ namespace Avalonia.Controls.Html
protected virtual void InvokeMouseMove()
{
_htmlContainer.HandleMouseMove(this, MouseDevice.Instance?.GetPosition(this) ?? default(Point));
_htmlContainer.HandleMouseMove(this, (this.GetVisualRoot() as IInputRoot)?.MouseDevice?.GetPosition(this) ?? default(Point));
}
/// <summary>

8
src/Avalonia.Input/IInputRoot.cs

@ -1,6 +1,8 @@
// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using JetBrains.Annotations;
namespace Avalonia.Input
{
/// <summary>
@ -27,5 +29,11 @@ namespace Avalonia.Input
/// Gets or sets a value indicating whether access keys are shown in the window.
/// </summary>
bool ShowAccessKeys { get; set; }
/// <summary>
/// Gets associated mouse device
/// </summary>
[CanBeNull]
IMouseDevice MouseDevice { get; }
}
}

7
src/Avalonia.Input/MouseDevice.cs

@ -31,12 +31,7 @@ namespace Avalonia.Input
.Where(e => e.Device == this && !e.Handled)
.Subscribe(ProcessRawEvent);
}
/// <summary>
/// Gets the current mouse device instance.
/// </summary>
public static IMouseDevice Instance => AvaloniaLocator.Current.GetService<IMouseDevice>();
/// <summary>
/// Gets the control that is currently capturing by the mouse, if any.
/// </summary>

1
src/Gtk/Avalonia.Gtk/GtkPlatform.cs

@ -51,7 +51,6 @@ namespace Avalonia.Gtk
.Bind<IClipboard>().ToSingleton<ClipboardImpl>()
.Bind<IStandardCursorFactory>().ToConstant(CursorFactory.Instance)
.Bind<IKeyboardDevice>().ToConstant(GtkKeyboardDevice.Instance)
.Bind<IMouseDevice>().ToConstant(GtkMouseDevice.Instance)
.Bind<IPlatformSettings>().ToConstant(s_instance)
.Bind<IPlatformThreadingInterface>().ToConstant(s_instance)
.Bind<IRendererFactory>().ToConstant(s_instance)

2
src/Gtk/Avalonia.Gtk/TopLevelImpl.cs

@ -114,6 +114,8 @@ namespace Avalonia.Gtk
public Action Closed { get; set; }
public IMouseDevice MouseDevice => GtkMouseDevice.Instance;
public Action Deactivated { get; set; }
public Action<RawInputEventArgs> Input { get; set; }

1
src/Gtk/Avalonia.Gtk3/Gtk3Platform.cs

@ -34,7 +34,6 @@ namespace Avalonia.Gtk3
.Bind<IClipboard>().ToSingleton<ClipboardImpl>()
.Bind<IStandardCursorFactory>().ToConstant(new CursorFactory())
.Bind<IKeyboardDevice>().ToConstant(Keyboard)
.Bind<IMouseDevice>().ToConstant(Mouse)
.Bind<IPlatformSettings>().ToConstant(Instance)
.Bind<IPlatformThreadingInterface>().ToConstant(Instance)
.Bind<ISystemDialogImpl>().ToSingleton<SystemDialog>()

3
src/Gtk/Avalonia.Gtk3/WindowBaseImpl.cs

@ -242,6 +242,9 @@ namespace Avalonia.Gtk3
public Action Activated { get; set; }
public Action Closed { get; set; }
public IMouseDevice MouseDevice => Gtk3Platform.Mouse;
public Action Deactivated { get; set; }
public Action<RawInputEventArgs> Input { get; set; }
public Action<Rect> Paint { get; set; }

3
src/Linux/Avalonia.LinuxFramebuffer/FramebufferToplevelImpl.cs

@ -63,6 +63,9 @@ namespace Avalonia.LinuxFramebuffer
public Action<Size> Resized { get; set; }
public Action<double> ScalingChanged { get; set; }
public Action Closed { get; set; }
public IMouseDevice MouseDevice => LinuxFramebufferPlatform.MouseDevice;
public event Action LostFocus;
}
}

1
src/Linux/Avalonia.LinuxFramebuffer/LinuxFramebufferPlatform.cs

@ -33,7 +33,6 @@ namespace Avalonia.LinuxFramebuffer
AvaloniaLocator.CurrentMutable
.Bind<IStandardCursorFactory>().ToTransient<CursorFactoryStub>()
.Bind<IKeyboardDevice>().ToConstant(KeyboardDevice)
.Bind<IMouseDevice>().ToConstant(MouseDevice)
.Bind<IPlatformSettings>().ToSingleton<PlatformSettings>()
.Bind<IRendererFactory>().ToConstant(ImmediateRenderer.Factory)
.Bind<IPlatformThreadingInterface>().ToConstant(PlatformThreadingInterface.Instance)

1
src/Windows/Avalonia.Win32/Win32Platform.cs

@ -66,7 +66,6 @@ namespace Avalonia.Win32
.Bind<IClipboard>().ToSingleton<ClipboardImpl>()
.Bind<IStandardCursorFactory>().ToConstant(CursorFactory.Instance)
.Bind<IKeyboardDevice>().ToConstant(WindowsKeyboardDevice.Instance)
.Bind<IMouseDevice>().ToConstant(WindowsMouseDevice.Instance)
.Bind<IPlatformSettings>().ToConstant(s_instance)
.Bind<IPlatformThreadingInterface>().ToConstant(s_instance)
.Bind<IRenderLoop>().ToConstant(new RenderLoop(60))

2
src/Windows/Avalonia.Win32/WindowImpl.cs

@ -49,6 +49,8 @@ namespace Avalonia.Win32
public Action Closed { get; set; }
public IMouseDevice MouseDevice => WindowsMouseDevice.Instance;
public Action Deactivated { get; set; }
public Action<RawInputEventArgs> Input { get; set; }

3
src/iOS/Avalonia.iOS/TopLevelImpl.cs

@ -47,6 +47,9 @@ namespace Avalonia.iOS
public override bool CanBecomeFirstResponder => _keyboardHelper.CanBecomeFirstResponder();
public Action Closed { get; set; }
public IMouseDevice MouseDevice => iOSPlatform.MouseDevice;
public Action<RawInputEventArgs> Input { get; set; }
public Action<Rect> Paint { get; set; }
public Action<Size> Resized { get; set; }

1
src/iOS/Avalonia.iOS/iOSPlatform.cs

@ -57,7 +57,6 @@ namespace Avalonia.iOS
//.Bind<ISystemDialogImpl>().ToTransient<SystemDialogImpl>()
.Bind<IStandardCursorFactory>().ToTransient<CursorFactory>()
.Bind<IKeyboardDevice>().ToConstant(KeyboardDevice)
.Bind<IMouseDevice>().ToConstant(MouseDevice)
.Bind<IRendererFactory>().ToConstant(ImmediateRenderer.Factory)
.Bind<IPlatformSettings>().ToSingleton<PlatformSettings>()
.Bind<IPlatformThreadingInterface>().ToConstant(PlatformThreadingInterface.Instance)

Loading…
Cancel
Save