Browse Source

Merge branch 'master' into deferred-rendering

pull/1977/head
danwalmsley 8 years ago
committed by GitHub
parent
commit
3be0bd7a9f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 25
      src/Avalonia.Native.OSX/window.mm
  2. 5
      src/Avalonia.Native/Helpers.cs
  3. 21
      src/Avalonia.Native/WindowImplBase.cs
  4. 2
      src/headers/avalonia-native.h

25
src/Avalonia.Native.OSX/window.mm

@ -44,6 +44,13 @@ public:
return S_OK;
}
virtual HRESULT SetTopMost (bool value)
{
[Window setLevel: value ? NSFloatingWindowLevel : NSNormalWindowLevel];
return S_OK;
}
virtual HRESULT Close()
{
[Window close];
@ -60,6 +67,19 @@ public:
return S_OK;
}
virtual HRESULT GetMaxClientSize(AvnSize* ret)
{
if(ret == nullptr)
return E_POINTER;
auto size = [NSScreen.screens objectAtIndex:0].frame.size;
ret->Height = size.height;
ret->Width = size.width;
return S_OK;
}
virtual HRESULT GetScaling (double* ret)
{
if(ret == nullptr)
@ -468,6 +488,11 @@ NSArray* AllLoopModes = [NSArray arrayWithObjects: NSDefaultRunLoopMode, NSEvent
return (AvnInputModifiers)rv;
}
- (void)viewDidChangeBackingProperties
{
_parent->BaseEvents->ScalingChanged();
}
@end

5
src/Avalonia.Native/Helpers.cs

@ -14,5 +14,10 @@ namespace Avalonia.Native
{
return new AvnPoint { X = pt.X, Y = pt.Y };
}
public static Size ToAvaloniaSize (this AvnSize size)
{
return new Size(size.Width, size.Height);
}
}
}

21
src/Avalonia.Native/WindowImplBase.cs

@ -129,7 +129,7 @@ namespace Avalonia.Native
_parent.Resized?.Invoke(s);
}
public void RawMouseEvent(AvnRawMouseEventType type, uint timeStamp, AvnInputModifiers modifiers, AvnPoint point, AvnVector delta)
void IAvnWindowBaseEvents.RawMouseEvent(AvnRawMouseEventType type, uint timeStamp, AvnInputModifiers modifiers, AvnPoint point, AvnVector delta)
{
_parent.RawMouseEvent(type, timeStamp, modifiers, point, delta);
}
@ -235,27 +235,32 @@ namespace Avalonia.Native
_native.BeginMoveDrag();
}
#region Stubs
public Size MaxClientSize => _native.GetMaxClientSize().ToAvaloniaSize();
public void SetTopmost(bool value)
{
_native.SetTopMost(value);
}
public double Scaling => _native.GetScaling();
public Action<Point> PositionChanged { get; set; }
public Action Deactivated { get; set; }
public Action Activated { get; set; }
#region Stubs
public Action<Point> PositionChanged { get; set; }
public Action<RawInputEventArgs> Input { get; set; }
Action<double> ScalingChanged { get; set; }
public IPlatformHandle Handle => new PlatformHandle(IntPtr.Zero, "NOT SUPPORTED");
public Size MaxClientSize => new Size(1600, 900);
public IScreenImpl Screen => new ScreenImpl();
Action<double> ITopLevelImpl.ScalingChanged { get; set; }
public void SetTopmost(bool value)
{
}
public void SetMinMaxSize(Size minSize, Size maxSize)
{
}

2
src/headers/avalonia-native.h

@ -90,6 +90,7 @@ AVNCOM(IAvnWindowBase, 02) : virtual IUnknown
virtual HRESULT Hide () = 0;
virtual HRESULT Close() = 0;
virtual HRESULT GetClientSize(AvnSize*ret) = 0;
virtual HRESULT GetMaxClientSize(AvnSize* ret) = 0;
virtual HRESULT GetScaling(double*ret)=0;
virtual HRESULT Resize(double width, double height) = 0;
virtual void Invalidate (AvnRect rect) = 0;
@ -99,6 +100,7 @@ AVNCOM(IAvnWindowBase, 02) : virtual IUnknown
virtual HRESULT PointToClient (AvnPoint point, AvnPoint*ret) = 0;
virtual HRESULT PointToScreen (AvnPoint point, AvnPoint*ret) = 0;
virtual HRESULT ThreadSafeSetSwRenderedFrame(AvnFramebuffer* fb, IUnknown* dispose) = 0;
virtual HRESULT SetTopMost (bool value) = 0;
};
AVNCOM(IAvnPopup, 03) : virtual IAvnWindowBase

Loading…
Cancel
Save