From 99923b94d392c8c6fdfbc68c4754cd25e2c04977 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 1 Oct 2018 20:41:43 +0100 Subject: [PATCH] implement window position changed. --- src/Avalonia.Native.OSX/window.mm | 6 ++++++ src/Avalonia.Native/WindowImplBase.cs | 5 +++++ src/headers/avalonia-native.h | 1 + 3 files changed, 12 insertions(+) diff --git a/src/Avalonia.Native.OSX/window.mm b/src/Avalonia.Native.OSX/window.mm index 57dbec10e90..4fba1aee91e 100644 --- a/src/Avalonia.Native.OSX/window.mm +++ b/src/Avalonia.Native.OSX/window.mm @@ -535,6 +535,12 @@ -(void)resignKeyWindow [super resignKeyWindow]; } +- (void)windowDidMove:(NSNotification *)notification +{ + AvnPoint position; + _parent->GetPosition(&position); + _parent->BaseEvents->PositionChanged(position); +} @end class PopupImpl : public WindowBaseImpl, public IAvnPopup diff --git a/src/Avalonia.Native/WindowImplBase.cs b/src/Avalonia.Native/WindowImplBase.cs index 7a4f6d60d9c..3b5b46c6987 100644 --- a/src/Avalonia.Native/WindowImplBase.cs +++ b/src/Avalonia.Native/WindowImplBase.cs @@ -133,6 +133,11 @@ void IAvnWindowBaseEvents.Resized(AvnSize size) _parent.Resized?.Invoke(s); } + void IAvnWindowBaseEvents.PositionChanged(AvnPoint position) + { + _parent.PositionChanged?.Invoke(position.ToAvaloniaPoint()); + } + void IAvnWindowBaseEvents.RawMouseEvent(AvnRawMouseEventType type, uint timeStamp, AvnInputModifiers modifiers, AvnPoint point, AvnVector delta) { _parent.RawMouseEvent(type, timeStamp, modifiers, point, delta); diff --git a/src/headers/avalonia-native.h b/src/headers/avalonia-native.h index 6743b0dc3e7..3780d8c422d 100644 --- a/src/headers/avalonia-native.h +++ b/src/headers/avalonia-native.h @@ -132,6 +132,7 @@ AVNCOM(IAvnWindowBaseEvents, 05) : IUnknown virtual void Activated() = 0; virtual void Deactivated() = 0; virtual void Resized(const AvnSize& size) = 0; + virtual void PositionChanged (AvnPoint position) = 0; virtual void RawMouseEvent (AvnRawMouseEventType type, unsigned int timeStamp, AvnInputModifiers modifiers,