Browse Source

implement Cursor=None for OSX.

pull/2551/head
Dan Walmsley 7 years ago
parent
commit
d1b35c4e6f
  1. 1
      native/Avalonia.Native/inc/avalonia-native.h
  2. 10
      native/Avalonia.Native/src/OSX/cursor.h
  3. 5
      native/Avalonia.Native/src/OSX/cursor.mm
  4. 10
      native/Avalonia.Native/src/OSX/window.mm

1
native/Avalonia.Native/inc/avalonia-native.h

@ -144,6 +144,7 @@ enum AvnStandardCursorType
CursorDragMove, CursorDragMove,
CursorDragCopy, CursorDragCopy,
CursorDragLink, CursorDragLink,
CursorNone
}; };
enum AvnWindowEdge enum AvnWindowEdge

10
native/Avalonia.Native/src/OSX/cursor.h

@ -11,18 +11,24 @@ class Cursor : public ComSingleObject<IAvnCursor, &IID_IAvnCursor>
{ {
private: private:
NSCursor * _native; NSCursor * _native;
bool _isHidden;
public: public:
FORWARD_IUNKNOWN() FORWARD_IUNKNOWN()
Cursor(NSCursor * cursor) Cursor(NSCursor * cursor, bool isHidden = false)
{ {
_native = cursor; _native = cursor;
_isHidden = isHidden;
} }
NSCursor* GetNative() NSCursor* GetNative()
{ {
return _native; return _native;
} }
bool IsHiden ()
{
return _isHidden;
}
}; };
extern std::map<AvnStandardCursorType, Cursor*> s_cursorMap; extern std::map<AvnStandardCursorType, Cursor*> s_cursorMap;

5
native/Avalonia.Native/src/OSX/cursor.mm

@ -21,6 +21,7 @@ class CursorFactory : public ComSingleObject<IAvnCursorFactory, &IID_IAvnCursorF
Cursor* resizeRightCursor = new Cursor([NSCursor resizeRightCursor]); Cursor* resizeRightCursor = new Cursor([NSCursor resizeRightCursor]);
Cursor* resizeWestEastCursor = new Cursor([NSCursor resizeLeftRightCursor]); Cursor* resizeWestEastCursor = new Cursor([NSCursor resizeLeftRightCursor]);
Cursor* operationNotAllowedCursor = new Cursor([NSCursor operationNotAllowedCursor]); Cursor* operationNotAllowedCursor = new Cursor([NSCursor operationNotAllowedCursor]);
Cursor* noCursor = new Cursor([NSCursor arrowCursor], true);
std::map<AvnStandardCursorType, Cursor*> s_cursorMap = std::map<AvnStandardCursorType, Cursor*> s_cursorMap =
{ {
@ -46,11 +47,13 @@ class CursorFactory : public ComSingleObject<IAvnCursorFactory, &IID_IAvnCursorF
{ CursorIbeam, IBeamCursor }, { CursorIbeam, IBeamCursor },
{ CursorLeftSide, resizeLeftCursor }, { CursorLeftSide, resizeLeftCursor },
{ CursorRightSide, resizeRightCursor }, { CursorRightSide, resizeRightCursor },
{ CursorNo, operationNotAllowedCursor } { CursorNo, operationNotAllowedCursor },
{ CursorNone, noCursor }
}; };
public: public:
FORWARD_IUNKNOWN() FORWARD_IUNKNOWN()
virtual HRESULT GetCursor (AvnStandardCursorType cursorType, IAvnCursor** retOut) override virtual HRESULT GetCursor (AvnStandardCursorType cursorType, IAvnCursor** retOut) override
{ {
*retOut = s_cursorMap[cursorType]; *retOut = s_cursorMap[cursorType];

10
native/Avalonia.Native/src/OSX/window.mm

@ -353,6 +353,16 @@ public:
Cursor* avnCursor = dynamic_cast<Cursor*>(cursor); Cursor* avnCursor = dynamic_cast<Cursor*>(cursor);
this->cursor = avnCursor->GetNative(); this->cursor = avnCursor->GetNative();
UpdateCursor(); UpdateCursor();
if(avnCursor->IsHiden())
{
[NSCursor hide];
}
else
{
[NSCursor unhide];
}
return S_OK; return S_OK;
} }
} }

Loading…
Cancel
Save