Browse Source

ensure cast to protocol instead of concrete types.

pull/8091/head
Dan Walmsley 4 years ago
parent
commit
d6a4a6c901
  1. 5
      native/Avalonia.Native/src/OSX/AutoFitContentView.mm
  2. 7
      native/Avalonia.Native/src/OSX/AvnView.mm
  3. 6
      native/Avalonia.Native/src/OSX/AvnWindow.mm
  4. 4
      native/Avalonia.Native/src/OSX/WindowBaseImpl.h
  5. 8
      native/Avalonia.Native/src/OSX/WindowBaseImpl.mm

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

@ -5,7 +5,8 @@
#include "AvnView.h"
#include "AutoFitContentView.h"
#import "WindowInterfaces.h"
#include "WindowInterfaces.h"
#include "WindowProtocol.h"
@implementation AutoFitContentView
{
@ -84,7 +85,7 @@
_settingSize = true;
[super setFrameSize:newSize];
auto window = objc_cast<AvnWindow>([self window]);
auto window = static_cast<id <AvnWindowProtocol>>([self window]);
// TODO get actual titlebar size

7
native/Avalonia.Native/src/OSX/AvnView.mm

@ -195,7 +195,12 @@
- (bool) ignoreUserInput:(bool)trigerInputWhenDisabled
{
auto parentWindow = objc_cast<AvnWindow>([self window]);
if(_parent == nullptr)
{
return TRUE;
}
auto parentWindow = _parent->GetWindowProtocol();
if(parentWindow == nil || ![parentWindow shouldTryToHandleEvents])
{

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

@ -212,8 +212,7 @@
// If the window has a child window being shown as a dialog then don't allow it to become the key window.
for(NSWindow* uch in [self childWindows])
{
// TODO protocol
auto ch = objc_cast<CLASS_NAME>(uch);
auto ch = static_cast<id <AvnWindowProtocol>>(uch);
if(ch == nil)
continue;
if (ch.isDialog)
@ -256,8 +255,7 @@
-(void) restoreParentWindow;
{
// TODO protocol
auto parent = objc_cast<CLASS_NAME>([self parentWindow]);
auto parent = static_cast<id <AvnWindowProtocol>>([self parentWindow]);
if(parent != nil)
{
[parent removeChildWindow:self];

4
native/Avalonia.Native/src/OSX/WindowBaseImpl.h

@ -114,13 +114,13 @@ BEGIN_INTERFACE_MAP()
virtual bool IsDialog();
id<AvnWindowProtocol> GetWindowProtocol ();
protected:
virtual NSWindowStyleMask GetStyle();
void UpdateStyle();
id<AvnWindowProtocol> GetWindowProtocol ();
private:
void CreateNSWindow (bool isDialog);
void InitialiseNSWindow ();

8
native/Avalonia.Native/src/OSX/WindowBaseImpl.mm

@ -561,12 +561,12 @@ void WindowBaseImpl::InitialiseNSWindow() {
}
id <AvnWindowProtocol> WindowBaseImpl::GetWindowProtocol() {
id instance;
if ([Window conformsToProtocol:@protocol(AvnWindowProtocol)]) {
instance = Window;
if(Window == nullptr)
{
return nullptr;
}
return instance;
return static_cast<id <AvnWindowProtocol>>(Window);
}
extern IAvnWindow* CreateAvnWindow(IAvnWindowEvents*events, IAvnGlContext* gl)

Loading…
Cancel
Save