From b3d17b238117f940445ad2f59d5cfc65d8c150e6 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Tue, 28 Apr 2020 17:42:58 -0300 Subject: [PATCH] checkmark == none ignores ischecked. --- native/Avalonia.Native/src/OSX/menu.h | 1 + native/Avalonia.Native/src/OSX/menu.mm | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/native/Avalonia.Native/src/OSX/menu.h b/native/Avalonia.Native/src/OSX/menu.h index 2d211e8643..cd464d2169 100644 --- a/native/Avalonia.Native/src/OSX/menu.h +++ b/native/Avalonia.Native/src/OSX/menu.h @@ -32,6 +32,7 @@ private: IAvnActionCallback* _callback; IAvnPredicateCallback* _predicate; bool _isSeperator; + bool _isCheckable; public: FORWARD_IUNKNOWN() diff --git a/native/Avalonia.Native/src/OSX/menu.mm b/native/Avalonia.Native/src/OSX/menu.mm index cf4acb822f..11a8f04ae3 100644 --- a/native/Avalonia.Native/src/OSX/menu.mm +++ b/native/Avalonia.Native/src/OSX/menu.mm @@ -70,6 +70,7 @@ AvnAppMenuItem::AvnAppMenuItem(bool isSeperator) { + _isCheckable = false; _isSeperator = isSeperator; if(isSeperator) @@ -157,7 +158,7 @@ HRESULT AvnAppMenuItem::SetIsChecked (bool isChecked) { @autoreleasepool { - [_native setState:(isChecked ? NSOnState : NSOffState)]; + [_native setState:(isChecked && _isCheckable ? NSOnState : NSOffState)]; return S_OK; } } @@ -169,12 +170,21 @@ HRESULT AvnAppMenuItem::SetToggleType(AvnMenuItemToggleType toggleType) switch(toggleType) { case AvnMenuItemToggleType::None: + [_native setOnStateImage: [NSImage imageNamed:@"NSMenuCheckmark"]]; + + _isCheckable = false; + break; + case AvnMenuItemToggleType::CheckMark: [_native setOnStateImage: [NSImage imageNamed:@"NSMenuCheckmark"]]; + + _isCheckable = true; break; case AvnMenuItemToggleType::Radio: [_native setOnStateImage: [NSImage imageNamed:@"NSMenuItemBullet"]]; + + _isCheckable = true; break; }