浏览代码

Merge pull request #1428 from boombuler/fix-osx-cursor

fixed not updating cursor on osx
Nikita Tsukanov 7 年之前
父节点
当前提交
6d77f8453f
共有 1 个文件被更改,包括 12 次插入0 次删除
  1. 12 0
      src/OSX/Avalonia.MonoMac/TopLevelImpl.cs

+ 12 - 0
src/OSX/Avalonia.MonoMac/TopLevelImpl.cs

@@ -39,6 +39,7 @@ namespace Avalonia.MonoMac
             private NSTrackingArea _area;
             private NSTrackingArea _area;
             private NSCursor _cursor;
             private NSCursor _cursor;
             private bool _nonUiRedrawQueued;
             private bool _nonUiRedrawQueued;
+            private bool _isMouseOver;
 
 
             public CGSize PixelSize { get; set; }
             public CGSize PixelSize { get; set; }
 
 
@@ -133,7 +134,11 @@ namespace Avalonia.MonoMac
             {
             {
                 ResetCursorRects();
                 ResetCursorRects();
                 if (_cursor != null)
                 if (_cursor != null)
+                {
                     AddCursorRect(Frame, _cursor);
                     AddCursorRect(Frame, _cursor);
+                    if (_isMouseOver)
+                        _cursor.Set();
+                }
             }
             }
 
 
             static readonly NSCursor ArrowCursor = NSCursor.ArrowCursor;
             static readonly NSCursor ArrowCursor = NSCursor.ArrowCursor;
@@ -299,10 +304,17 @@ namespace Avalonia.MonoMac
 
 
             public override void MouseExited(NSEvent theEvent)
             public override void MouseExited(NSEvent theEvent)
             {
             {
+                _isMouseOver = false;
                 MouseEvent(theEvent, RawMouseEventType.LeaveWindow);
                 MouseEvent(theEvent, RawMouseEventType.LeaveWindow);
                 base.MouseExited(theEvent);
                 base.MouseExited(theEvent);
             }
             }
 
 
+            public override void MouseEntered(NSEvent theEvent)
+            {
+                _isMouseOver = true;
+                base.MouseEntered(theEvent);
+            }
+
             void KeyboardEvent(RawKeyEventType type, NSEvent ev)
             void KeyboardEvent(RawKeyEventType type, NSEvent ev)
             {
             {
                 var code = KeyTransform.TransformKeyCode(ev.KeyCode);
                 var code = KeyTransform.TransformKeyCode(ev.KeyCode);