Browse Source

rename interfaces and fix most native code warnings.

Dan Walmsley 5 years ago
parent
commit
4aa10242cc

+ 23 - 14
native/Avalonia.Native/inc/avalonia-native.h

@@ -19,8 +19,9 @@ struct IAvnGlContext;
 struct IAvnGlDisplay;
 struct IAvnGlSurfaceRenderTarget;
 struct IAvnGlSurfaceRenderingSession;
-struct IAvnAppMenu;
-struct IAvnAppMenuItem;
+struct IAvnMenu;
+struct IAvnMenuItem;
+struct IAvnMenuEvents;
 
 enum SystemDecorations {
     SystemDecorationsNone = 0,
@@ -188,11 +189,11 @@ public:
     virtual HRESULT CreateClipboard(IAvnClipboard** ppv) = 0;
     virtual HRESULT CreateCursorFactory(IAvnCursorFactory** ppv) = 0;
     virtual HRESULT ObtainGlDisplay(IAvnGlDisplay** ppv) = 0;
-    virtual HRESULT ObtainAppMenu(IAvnAppMenu** retOut) = 0;
-    virtual HRESULT SetAppMenu(IAvnAppMenu* menu) = 0;
-    virtual HRESULT CreateMenu (IAvnAppMenu** ppv) = 0;
-    virtual HRESULT CreateMenuItem (IAvnAppMenuItem** ppv) = 0;
-    virtual HRESULT CreateMenuItemSeperator (IAvnAppMenuItem** ppv) = 0;
+    virtual HRESULT ObtainAppMenu(IAvnMenu** retOut) = 0;
+    virtual HRESULT SetAppMenu(IAvnMenu* menu) = 0;
+    virtual HRESULT CreateMenu (IAvnMenuEvents* cb, IAvnMenu** ppv) = 0;
+    virtual HRESULT CreateMenuItem (IAvnMenuItem** ppv) = 0;
+    virtual HRESULT CreateMenuItemSeperator (IAvnMenuItem** ppv) = 0;
 };
 
 AVNCOM(IAvnString, 17) : IUnknown
@@ -222,8 +223,8 @@ AVNCOM(IAvnWindowBase, 02) : IUnknown
     virtual HRESULT SetTopMost (bool value) = 0;
     virtual HRESULT SetCursor(IAvnCursor* cursor) = 0;
     virtual HRESULT CreateGlRenderTarget(IAvnGlSurfaceRenderTarget** ret) = 0;
-    virtual HRESULT SetMainMenu(IAvnAppMenu* menu) = 0;
-    virtual HRESULT ObtainMainMenu(IAvnAppMenu** retOut) = 0;
+    virtual HRESULT SetMainMenu(IAvnMenu* menu) = 0;
+    virtual HRESULT ObtainMainMenu(IAvnMenu** retOut) = 0;
     virtual HRESULT ObtainNSWindowHandle(void** retOut) = 0;
     virtual HRESULT ObtainNSWindowHandleRetained(void** retOut) = 0;
     virtual HRESULT ObtainNSViewHandle(void** retOut) = 0;
@@ -388,10 +389,10 @@ AVNCOM(IAvnGlSurfaceRenderingSession, 16) : IUnknown
     virtual HRESULT GetScaling(double* ret) = 0;
 };
 
-AVNCOM(IAvnAppMenu, 17) : IUnknown
+AVNCOM(IAvnMenu, 17) : IUnknown
 {
-    virtual HRESULT InsertItem (int index, IAvnAppMenuItem* item) = 0;
-    virtual HRESULT RemoveItem (IAvnAppMenuItem* item) = 0;
+    virtual HRESULT InsertItem (int index, IAvnMenuItem* item) = 0;
+    virtual HRESULT RemoveItem (IAvnMenuItem* item) = 0;
     virtual HRESULT SetTitle (void* utf8String) = 0;
     virtual HRESULT Clear () = 0;
 };
@@ -401,13 +402,21 @@ AVNCOM(IAvnPredicateCallback, 18) : IUnknown
     virtual bool Evaluate() = 0;
 };
 
-AVNCOM(IAvnAppMenuItem, 19) : IUnknown
+AVNCOM(IAvnMenuItem, 19) : IUnknown
 {
-    virtual HRESULT SetSubMenu (IAvnAppMenu* menu) = 0;
+    virtual HRESULT SetSubMenu (IAvnMenu* menu) = 0;
     virtual HRESULT SetTitle (void* utf8String) = 0;
     virtual HRESULT SetGesture (void* utf8String, AvnInputModifiers modifiers) = 0;
     virtual HRESULT SetAction (IAvnPredicateCallback* predicate, IAvnActionCallback* callback) = 0;
     virtual HRESULT SetIsChecked (bool isChecked) = 0;
 };
 
+AVNCOM(IAvnMenuEvents, 1A) : IUnknown
+{
+    /**
+     * NeedsUpdate
+     */
+    virtual bool NeedUpdate () = 0;
+};
+
 extern "C" IAvaloniaNativeFactory* CreateAvaloniaNative();

+ 2 - 1
native/Avalonia.Native/src/OSX/app.mm

@@ -2,7 +2,8 @@
 @interface AvnAppDelegate : NSObject<NSApplicationDelegate>
 @end
 
-extern NSApplicationActivationPolicy AvnDesiredActivationPolicy = NSApplicationActivationPolicyRegular;
+NSApplicationActivationPolicy AvnDesiredActivationPolicy = NSApplicationActivationPolicyRegular;
+
 @implementation AvnAppDelegate
 - (void)applicationWillFinishLaunching:(NSNotification *)notification
 {

+ 5 - 5
native/Avalonia.Native/src/OSX/common.h

@@ -15,11 +15,11 @@ extern IAvnScreens* CreateScreens();
 extern IAvnClipboard* CreateClipboard();
 extern IAvnCursorFactory* CreateCursorFactory();
 extern IAvnGlDisplay* GetGlDisplay();
-extern IAvnAppMenu* CreateAppMenu();
-extern IAvnAppMenuItem* CreateAppMenuItem();
-extern IAvnAppMenuItem* CreateAppMenuItemSeperator();
-extern void SetAppMenu (NSString* appName, IAvnAppMenu* appMenu);
-extern IAvnAppMenu* GetAppMenu ();
+extern IAvnMenu* CreateAppMenu();
+extern IAvnMenuItem* CreateAppMenuItem();
+extern IAvnMenuItem* CreateAppMenuItemSeperator();
+extern void SetAppMenu (NSString* appName, IAvnMenu* appMenu);
+extern IAvnMenu* GetAppMenu ();
 extern NSMenuItem* GetAppMenuItem ();
 
 extern void InitializeAvnApp();

+ 6 - 7
native/Avalonia.Native/src/OSX/main.mm

@@ -92,12 +92,11 @@ void SetProcessName(NSString* appTitle) {
     PrivateLSASN asn = ls_get_current_application_asn_func();
     // Constant used by WebKit; what exactly it means is unknown.
     const int magic_session_constant = -2;
-    OSErr err =
+    
     ls_set_application_information_item_func(magic_session_constant, asn,
                                              ls_display_name_key,
                                              process_name,
                                              NULL /* optional out param */);
-    //LOG_IF(ERROR, err) << "Call to set process name failed, err " << err;
 }
 
 class MacOptions : public ComSingleObject<IAvnMacOptions, &IID_IAvnMacOptions>
@@ -228,31 +227,31 @@ public:
         return S_OK;
     }
     
-    virtual HRESULT CreateMenu (IAvnAppMenu** ppv) override
+    virtual HRESULT CreateMenu (IAvnMenuEvents* cb, IAvnMenu** ppv) override
     {
         *ppv = ::CreateAppMenu();
         return S_OK;
     }
     
-    virtual HRESULT CreateMenuItem (IAvnAppMenuItem** ppv) override
+    virtual HRESULT CreateMenuItem (IAvnMenuItem** ppv) override
     {
         *ppv = ::CreateAppMenuItem();
         return S_OK;
     }
     
-    virtual HRESULT CreateMenuItemSeperator (IAvnAppMenuItem** ppv) override
+    virtual HRESULT CreateMenuItemSeperator (IAvnMenuItem** ppv) override
     {
         *ppv = ::CreateAppMenuItemSeperator();
         return S_OK;
     }
     
-    virtual HRESULT SetAppMenu (IAvnAppMenu* appMenu) override
+    virtual HRESULT SetAppMenu (IAvnMenu* appMenu) override
     {
         ::SetAppMenu(s_appTitle, appMenu);
         return S_OK;
     }
     
-    virtual HRESULT ObtainAppMenu(IAvnAppMenu** retOut) override
+    virtual HRESULT ObtainAppMenu(IAvnMenu** retOut) override
     {
         if(retOut == nullptr)
         {

+ 5 - 5
native/Avalonia.Native/src/OSX/menu.h

@@ -23,7 +23,7 @@ class AvnAppMenu;
 - (void)didSelectItem:(id)sender;
 @end
 
-class AvnAppMenuItem : public ComSingleObject<IAvnAppMenuItem, &IID_IAvnAppMenuItem>
+class AvnAppMenuItem : public ComSingleObject<IAvnMenuItem, &IID_IAvnMenuItem>
 {
 private:
     NSMenuItem* _native; // here we hold a pointer to an AvnMenuItem
@@ -38,7 +38,7 @@ public:
     
     NSMenuItem* GetNative();
     
-    virtual HRESULT SetSubMenu (IAvnAppMenu* menu) override;
+    virtual HRESULT SetSubMenu (IAvnMenu* menu) override;
     
     virtual HRESULT SetTitle (void* utf8String) override;
     
@@ -54,7 +54,7 @@ public:
 };
 
 
-class AvnAppMenu : public ComSingleObject<IAvnAppMenu, &IID_IAvnAppMenu>
+class AvnAppMenu : public ComSingleObject<IAvnMenu, &IID_IAvnMenu>
 {
 private:
     AvnMenu* _native;
@@ -66,9 +66,9 @@ public:
         
     AvnMenu* GetNative();
     
-    virtual HRESULT InsertItem (int index, IAvnAppMenuItem* item) override;
+    virtual HRESULT InsertItem (int index, IAvnMenuItem* item) override;
     
-    virtual HRESULT RemoveItem (IAvnAppMenuItem* item) override;
+    virtual HRESULT RemoveItem (IAvnMenuItem* item) override;
     
     virtual HRESULT SetTitle (void* utf8String) override;
     

+ 9 - 9
native/Avalonia.Native/src/OSX/menu.mm

@@ -76,7 +76,7 @@ NSMenuItem* AvnAppMenuItem::GetNative()
     return _native;
 }
 
-HRESULT AvnAppMenuItem::SetSubMenu (IAvnAppMenu* menu)
+HRESULT AvnAppMenuItem::SetSubMenu (IAvnMenu* menu)
 {
     if(menu != nullptr)
     {
@@ -166,7 +166,7 @@ AvnMenu* AvnAppMenu::GetNative()
     return _native;
 }
 
-HRESULT AvnAppMenu::InsertItem(int index, IAvnAppMenuItem *item)
+HRESULT AvnAppMenu::InsertItem(int index, IAvnMenuItem *item)
 {
     auto avnMenuItem = dynamic_cast<AvnAppMenuItem*>(item);
     
@@ -178,7 +178,7 @@ HRESULT AvnAppMenu::InsertItem(int index, IAvnAppMenuItem *item)
     return S_OK;
 }
 
-HRESULT AvnAppMenu::RemoveItem (IAvnAppMenuItem* item)
+HRESULT AvnAppMenu::RemoveItem (IAvnMenuItem* item)
 {
     auto avnMenuItem = dynamic_cast<AvnAppMenuItem*>(item);
     
@@ -236,7 +236,7 @@ HRESULT AvnAppMenu::Clear()
 
 @end
 
-extern IAvnAppMenu* CreateAppMenu()
+extern IAvnMenu* CreateAppMenu(IAvnMenuEvents* cb)
 {
     @autoreleasepool
     {
@@ -244,7 +244,7 @@ extern IAvnAppMenu* CreateAppMenu()
     }
 }
 
-extern IAvnAppMenuItem* CreateAppMenuItem()
+extern IAvnMenuItem* CreateAppMenuItem()
 {
     @autoreleasepool
     {
@@ -252,7 +252,7 @@ extern IAvnAppMenuItem* CreateAppMenuItem()
     }
 }
 
-extern IAvnAppMenuItem* CreateAppMenuItemSeperator()
+extern IAvnMenuItem* CreateAppMenuItemSeperator()
 {
     @autoreleasepool
     {
@@ -260,10 +260,10 @@ extern IAvnAppMenuItem* CreateAppMenuItemSeperator()
     }
 }
 
-static IAvnAppMenu* s_appMenu = nullptr;
+static IAvnMenu* s_appMenu = nullptr;
 static NSMenuItem* s_appMenuItem = nullptr;
 
-extern void SetAppMenu (NSString* appName, IAvnAppMenu* menu)
+extern void SetAppMenu (NSString* appName, IAvnMenu* menu)
 {
     s_appMenu = menu;
     
@@ -344,7 +344,7 @@ extern void SetAppMenu (NSString* appName, IAvnAppMenu* menu)
     }
 }
 
-extern IAvnAppMenu* GetAppMenu ()
+extern IAvnMenu* GetAppMenu ()
 {
     return s_appMenu;
 }

+ 3 - 1
native/Avalonia.Native/src/OSX/platformthreading.mm

@@ -54,9 +54,11 @@ private:
     {
     public:
         FORWARD_IUNKNOWN()
+        
         bool Running = false;
         bool Cancelled = false;
-        virtual void Cancel()
+        
+        virtual void Cancel() override
         {
             Cancelled = true;
             if(Running)

+ 1 - 1
native/Avalonia.Native/src/OSX/window.h

@@ -19,7 +19,7 @@ class WindowBaseImpl;
 -(void) pollModalSession: (NSModalSession _Nonnull) session;
 -(void) restoreParentWindow;
 -(bool) shouldTryToHandleEvents;
--(void) applyMenu:(NSMenu *)menu;
+-(void) applyMenu:(NSMenu *_Nullable)menu;
 -(double) getScaling;
 @end
 

+ 3 - 3
native/Avalonia.Native/src/OSX/window.mm

@@ -27,7 +27,7 @@ public:
     NSObject<IRenderTarget>* renderTarget;
     AvnPoint lastPositionSet;
     NSString* _lastTitle;
-    IAvnAppMenu* _mainMenu;
+    IAvnMenu* _mainMenu;
     bool _shown;
     
     WindowBaseImpl(IAvnWindowBaseEvents* events, IAvnGlContext* gl)
@@ -234,7 +234,7 @@ public:
         }
     }
     
-    virtual HRESULT SetMainMenu(IAvnAppMenu* menu) override
+    virtual HRESULT SetMainMenu(IAvnMenu* menu) override
     {
         _mainMenu = menu;
         
@@ -247,7 +247,7 @@ public:
         return S_OK;
     }
     
-    virtual HRESULT ObtainMainMenu(IAvnAppMenu** ret) override
+    virtual HRESULT ObtainMainMenu(IAvnMenu** ret) override
     {
         if(ret == nullptr)
         {

+ 1 - 1
src/Avalonia.Native/AvaloniaNativeMenuExporter.cs

@@ -15,7 +15,7 @@ namespace Avalonia.Native
         private bool _exported = false;
         private IAvnWindow _nativeWindow;
         private NativeMenu _menu;
-        private IAvnAppMenu _nativeMenu;        
+        private IAvnMenu _nativeMenu;        
 
         public AvaloniaNativeMenuExporter(IAvnWindow nativeWindow, IAvaloniaNativeFactory factory)
         {

+ 8 - 8
src/Avalonia.Native/IAvnAppMenu.cs → src/Avalonia.Native/IAvnMenu.cs

@@ -7,16 +7,16 @@ using Avalonia.Platform.Interop;
 
 namespace Avalonia.Native.Interop
 {
-    public partial class IAvnAppMenu
+    public partial class IAvnMenu
     {
         private AvaloniaNativeMenuExporter _exporter;
-        private List<IAvnAppMenuItem> _menuItems = new List<IAvnAppMenuItem>();
-        private Dictionary<NativeMenuItemBase, IAvnAppMenuItem> _menuItemLookup = new Dictionary<NativeMenuItemBase, IAvnAppMenuItem>();
+        private List<IAvnMenuItem> _menuItems = new List<IAvnMenuItem>();
+        private Dictionary<NativeMenuItemBase, IAvnMenuItem> _menuItemLookup = new Dictionary<NativeMenuItemBase, IAvnMenuItem>();
         private CompositeDisposable _propertyDisposables = new CompositeDisposable();
 
         internal NativeMenu ManagedMenu { get; private set; }
 
-        private void RemoveAndDispose(IAvnAppMenuItem item)
+        private void RemoveAndDispose(IAvnMenuItem item)
         {
             _menuItemLookup.Remove(item.ManagedMenuItem);
             _menuItems.Remove(item);
@@ -26,7 +26,7 @@ namespace Avalonia.Native.Interop
             item.Dispose();
         }
 
-        private void MoveExistingTo(int index, IAvnAppMenuItem item)
+        private void MoveExistingTo(int index, IAvnMenuItem item)
         {
             _menuItems.Remove(item);
             _menuItems.Insert(index, item);
@@ -35,7 +35,7 @@ namespace Avalonia.Native.Interop
             InsertItem(index, item);
         }
 
-        private IAvnAppMenuItem CreateNewAt(IAvaloniaNativeFactory factory, int index, NativeMenuItemBase item)
+        private IAvnMenuItem CreateNewAt(IAvaloniaNativeFactory factory, int index, NativeMenuItemBase item)
         {
             var result = CreateNew(factory, item);
 
@@ -49,7 +49,7 @@ namespace Avalonia.Native.Interop
             return result;
         }
 
-        private IAvnAppMenuItem CreateNew(IAvaloniaNativeFactory factory, NativeMenuItemBase item)
+        private IAvnMenuItem CreateNew(IAvaloniaNativeFactory factory, NativeMenuItemBase item)
         {
             var nativeItem = item is NativeMenuItemSeperator ? factory.CreateMenuItemSeperator() : factory.CreateMenuItem();
             nativeItem.ManagedMenuItem = item;
@@ -93,7 +93,7 @@ namespace Avalonia.Native.Interop
 
             for (int i = 0; i < menu.Items.Count; i++)
             {
-                IAvnAppMenuItem nativeItem;
+                IAvnMenuItem nativeItem;
 
                 if (i >= _menuItems.Count)
                 {

+ 2 - 2
src/Avalonia.Native/IAvnAppMenuItem.cs → src/Avalonia.Native/IAvnMenuItem.cs

@@ -5,9 +5,9 @@ using Avalonia.Platform.Interop;
 
 namespace Avalonia.Native.Interop
 {
-    public partial class IAvnAppMenuItem
+    public partial class IAvnMenuItem
     {
-        private IAvnAppMenu _subMenu;        
+        private IAvnMenu _subMenu;        
         private CompositeDisposable _propertyDisposables = new CompositeDisposable();
         private IDisposable _currentActionDisposable;