Dariusz Komosiński
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with
31 additions and
29 deletions
-
native/Avalonia.Native/src/OSX/common.h
-
native/Avalonia.Native/src/OSX/main.mm
-
native/Avalonia.Native/src/OSX/menu.h
-
native/Avalonia.Native/src/OSX/menu.mm
-
nukebuild/Build.cs
-
samples/ControlCatalog/MainWindow.xaml
-
src/Avalonia.Controls/NativeMenuItemSeparator.cs
-
src/Avalonia.Controls/NativeMenuItemSeperator.cs
-
src/Avalonia.FreeDesktop/DBusMenuExporter.cs
-
src/Avalonia.Native/IAvnMenu.cs
-
src/Avalonia.Native/avn.idl
|
|
|
@ -23,7 +23,7 @@ extern IAvnCursorFactory* CreateCursorFactory(); |
|
|
|
extern IAvnGlDisplay* GetGlDisplay(); |
|
|
|
extern IAvnMenu* CreateAppMenu(IAvnMenuEvents* events); |
|
|
|
extern IAvnMenuItem* CreateAppMenuItem(); |
|
|
|
extern IAvnMenuItem* CreateAppMenuItemSeperator(); |
|
|
|
extern IAvnMenuItem* CreateAppMenuItemSeparator(); |
|
|
|
extern IAvnNativeControlHost* CreateNativeControlHost(NSView* parent); |
|
|
|
extern void SetAppMenu (NSString* appName, IAvnMenu* appMenu); |
|
|
|
extern IAvnMenu* GetAppMenu (); |
|
|
|
|
|
|
|
@ -253,9 +253,9 @@ public: |
|
|
|
return S_OK; |
|
|
|
} |
|
|
|
|
|
|
|
virtual HRESULT CreateMenuItemSeperator (IAvnMenuItem** ppv) override |
|
|
|
virtual HRESULT CreateMenuItemSeparator (IAvnMenuItem** ppv) override |
|
|
|
{ |
|
|
|
*ppv = ::CreateAppMenuItemSeperator(); |
|
|
|
*ppv = ::CreateAppMenuItemSeparator(); |
|
|
|
return S_OK; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -31,13 +31,13 @@ private: |
|
|
|
NSMenuItem* _native; // here we hold a pointer to an AvnMenuItem
|
|
|
|
IAvnActionCallback* _callback; |
|
|
|
IAvnPredicateCallback* _predicate; |
|
|
|
bool _isSeperator; |
|
|
|
bool _isSeparator; |
|
|
|
bool _isCheckable; |
|
|
|
|
|
|
|
public: |
|
|
|
FORWARD_IUNKNOWN() |
|
|
|
|
|
|
|
AvnAppMenuItem(bool isSeperator); |
|
|
|
AvnAppMenuItem(bool isSeparator); |
|
|
|
|
|
|
|
NSMenuItem* GetNative(); |
|
|
|
|
|
|
|
|
|
|
|
@ -71,12 +71,12 @@ |
|
|
|
} |
|
|
|
@end |
|
|
|
|
|
|
|
AvnAppMenuItem::AvnAppMenuItem(bool isSeperator) |
|
|
|
AvnAppMenuItem::AvnAppMenuItem(bool isSeparator) |
|
|
|
{ |
|
|
|
_isCheckable = false; |
|
|
|
_isSeperator = isSeperator; |
|
|
|
_isSeparator = isSeparator; |
|
|
|
|
|
|
|
if(isSeperator) |
|
|
|
if(isSeparator) |
|
|
|
{ |
|
|
|
_native = [NSMenuItem separatorItem]; |
|
|
|
} |
|
|
|
@ -427,7 +427,7 @@ extern IAvnMenuItem* CreateAppMenuItem() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
extern IAvnMenuItem* CreateAppMenuItemSeperator() |
|
|
|
extern IAvnMenuItem* CreateAppMenuItemSeparator() |
|
|
|
{ |
|
|
|
@autoreleasepool |
|
|
|
{ |
|
|
|
|
|
|
|
@ -89,10 +89,6 @@ partial class Build : NukeBuild |
|
|
|
Process.Start(new ProcessStartInfo(command, args) {UseShellExecute = false}).WaitForExit(); |
|
|
|
} |
|
|
|
ExecWait("dotnet version:", "dotnet", "--version"); |
|
|
|
if (Parameters.IsRunningOnUnix) |
|
|
|
ExecWait("Mono version:", "mono", "--version"); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
IReadOnlyCollection<Output> MsBuildCommon( |
|
|
|
|
|
|
|
@ -18,11 +18,11 @@ |
|
|
|
<NativeMenuItem Header="File"> |
|
|
|
<NativeMenu> |
|
|
|
<NativeMenuItem Icon="/Assets/test_icon.ico" Header="Open" Clicked="OnOpenClicked" Gesture="Ctrl+O"/> |
|
|
|
<NativeMenuItemSeperator/> |
|
|
|
<NativeMenuItemSeperator/><!-- Uses incorrect spelling to demonstrate backwards compatibility --> |
|
|
|
<NativeMenuItem Icon="/Assets/github_icon.png" Header="Recent"> |
|
|
|
<NativeMenu/> |
|
|
|
</NativeMenuItem> |
|
|
|
<NativeMenuItemSeperator/> |
|
|
|
<NativeMenuItemSeparator/> |
|
|
|
<NativeMenuItem Header="{x:Static local:MainWindow.MenuQuitHeader}" |
|
|
|
Gesture="{x:Static local:MainWindow.MenuQuitGesture}" |
|
|
|
Clicked="OnCloseClicked" /> |
|
|
|
|
|
|
|
@ -0,0 +1,16 @@ |
|
|
|
using System; |
|
|
|
|
|
|
|
namespace Avalonia.Controls |
|
|
|
{ |
|
|
|
|
|
|
|
[Obsolete("This class exists to maintain backwards compatiblity with existing code. Use NativeMenuItemSeparator instead")] |
|
|
|
public class NativeMenuItemSeperator : NativeMenuItemSeparator |
|
|
|
{ |
|
|
|
} |
|
|
|
|
|
|
|
public class NativeMenuItemSeparator : NativeMenuItemBase |
|
|
|
{ |
|
|
|
[Obsolete("This is a temporary hack to make our MenuItem recognize this as a separator, don't use", true)] |
|
|
|
public string Header => "-"; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1,10 +0,0 @@ |
|
|
|
using System; |
|
|
|
|
|
|
|
namespace Avalonia.Controls |
|
|
|
{ |
|
|
|
public class NativeMenuItemSeperator : NativeMenuItemBase |
|
|
|
{ |
|
|
|
[Obsolete("This is a temporary hack to make our MenuItem recognize this as a separator, don't use", true)] |
|
|
|
public string Header => "-"; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -192,7 +192,7 @@ namespace Avalonia.FreeDesktop |
|
|
|
{ |
|
|
|
var (it, menu) = i; |
|
|
|
|
|
|
|
if (it is NativeMenuItemSeperator) |
|
|
|
if (it is NativeMenuItemSeparator) |
|
|
|
{ |
|
|
|
if (name == "type") |
|
|
|
return "separator"; |
|
|
|
|
|
|
|
@ -125,8 +125,8 @@ namespace Avalonia.Native.Interop.Impl |
|
|
|
|
|
|
|
private __MicroComIAvnMenuItemProxy CreateNew(IAvaloniaNativeFactory factory, NativeMenuItemBase item) |
|
|
|
{ |
|
|
|
var nativeItem = (__MicroComIAvnMenuItemProxy)(item is NativeMenuItemSeperator ? |
|
|
|
factory.CreateMenuItemSeperator() : |
|
|
|
var nativeItem = (__MicroComIAvnMenuItemProxy)(item is NativeMenuItemSeparator ? |
|
|
|
factory.CreateMenuItemSeparator() : |
|
|
|
factory.CreateMenuItem()); |
|
|
|
nativeItem.ManagedMenuItem = item; |
|
|
|
|
|
|
|
|
|
|
|
@ -417,7 +417,7 @@ interface IAvaloniaNativeFactory : IUnknown |
|
|
|
HRESULT SetAppMenu(IAvnMenu* menu); |
|
|
|
HRESULT CreateMenu(IAvnMenuEvents* cb, IAvnMenu** ppv); |
|
|
|
HRESULT CreateMenuItem(IAvnMenuItem** ppv); |
|
|
|
HRESULT CreateMenuItemSeperator(IAvnMenuItem** ppv); |
|
|
|
HRESULT CreateMenuItemSeparator(IAvnMenuItem** ppv); |
|
|
|
} |
|
|
|
|
|
|
|
[uuid(233e094f-9b9f-44a3-9a6e-6948bbdd9fb1)] |
|
|
|
|