Browse Source

Merge pull request #3 from AvaloniaUI/features/begin-move-drag

implement begin move drag.
pull/1977/head
danwalmsley 8 years ago
committed by GitHub
parent
commit
e6f8076c73
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 23
      src/Avalonia.Native.OSX/window.mm
  2. 6
      src/Avalonia.Native/WindowImplBase.cs
  3. 1
      src/headers/avalonia-native.h

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

@ -4,6 +4,7 @@ class WindowBaseImpl;
@interface AvnView : NSView
-(AvnView*) initWithParent: (WindowBaseImpl*) parent;
-(NSEvent*) lastMouseDownEvent;
@end
@interface AvnWindow : NSWindow <NSWindowDelegate>
@ -11,9 +12,6 @@ class WindowBaseImpl;
-(void) setCanBecomeKeyAndMain;
@end
class WindowBaseImpl : public ComSingleObject<IAvnWindowBase, &IID_IAvnWindowBase>
{
public:
@ -64,6 +62,18 @@ public:
[View setNeedsDisplayInRect:[View frame]];
}
virtual void BeginMoveDrag ()
{
auto lastEvent = [View lastMouseDownEvent];
if(lastEvent == nullptr)
{
return;
}
[Window performWindowDragWithEvent:lastEvent];
}
protected:
virtual NSWindowStyleMask GetStyle()
{
@ -74,8 +84,6 @@ protected:
{
[Window setStyleMask:GetStyle()];
}
};
@implementation AvnView
@ -86,6 +94,11 @@ protected:
NSEvent* _lastMouseDownEvent;
}
- (NSEvent*) lastMouseDownEvent
{
return _lastMouseDownEvent;
}
-(AvnView*) initWithParent: (WindowBaseImpl*) parent
{
self = [super init];

6
src/Avalonia.Native/WindowImplBase.cs

@ -182,8 +182,6 @@ namespace Avalonia.Native
Action<double> ITopLevelImpl.ScalingChanged { get; set; }
public void SetTopmost(bool value)
{
}
@ -197,13 +195,13 @@ namespace Avalonia.Native
{
}
public void Hide()
{
}
public void BeginMoveDrag()
{
_native.BeginMoveDrag();
}
public void BeginResizeDrag(WindowEdge edge)

1
src/headers/avalonia-native.h

@ -69,6 +69,7 @@ AVNCOM(IAvnWindowBase, 02) : virtual IUnknown
virtual HRESULT GetClientSize(AvnSize*ret) = 0;
virtual HRESULT Resize(double width, double height) = 0;
virtual void Invalidate (AvnRect rect) = 0;
virtual void BeginMoveDrag () = 0;
};
AVNCOM(IAvnWindow, 03) : virtual IAvnWindowBase

Loading…
Cancel
Save