Browse Source

rename interfaces and fix most native code warnings.

pull/3762/head
Dan Walmsley 7 years ago
parent
commit
4aa10242cc
  1. 37
      native/Avalonia.Native/inc/avalonia-native.h
  2. 3
      native/Avalonia.Native/src/OSX/app.mm
  3. 10
      native/Avalonia.Native/src/OSX/common.h
  4. 13
      native/Avalonia.Native/src/OSX/main.mm
  5. 10
      native/Avalonia.Native/src/OSX/menu.h
  6. 18
      native/Avalonia.Native/src/OSX/menu.mm
  7. 4
      native/Avalonia.Native/src/OSX/platformthreading.mm
  8. 2
      native/Avalonia.Native/src/OSX/window.h
  9. 6
      native/Avalonia.Native/src/OSX/window.mm
  10. 2
      src/Avalonia.Native/AvaloniaNativeMenuExporter.cs
  11. 16
      src/Avalonia.Native/IAvnMenu.cs
  12. 4
      src/Avalonia.Native/IAvnMenuItem.cs

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

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

3
native/Avalonia.Native/src/OSX/app.mm

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

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

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

13
native/Avalonia.Native/src/OSX/main.mm

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

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

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

18
native/Avalonia.Native/src/OSX/menu.mm

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

4
native/Avalonia.Native/src/OSX/platformthreading.mm

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

2
native/Avalonia.Native/src/OSX/window.h

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

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

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

2
src/Avalonia.Native/AvaloniaNativeMenuExporter.cs

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

16
src/Avalonia.Native/IAvnAppMenu.cs → src/Avalonia.Native/IAvnMenu.cs

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

4
src/Avalonia.Native/IAvnAppMenuItem.cs → src/Avalonia.Native/IAvnMenuItem.cs

@ -5,9 +5,9 @@ using Avalonia.Platform.Interop;
namespace Avalonia.Native.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 CompositeDisposable _propertyDisposables = new CompositeDisposable();
private IDisposable _currentActionDisposable; private IDisposable _currentActionDisposable;
Loading…
Cancel
Save