Browse Source

[osx] make bringtofront work correctly for owned and modal windows.

pull/8232/head
Dan Walmsley 4 years ago
parent
commit
dc1b6a669b
  1. 5
      native/Avalonia.Native/src/OSX/AvnView.mm
  2. 9
      native/Avalonia.Native/src/OSX/AvnWindow.mm
  3. 9
      native/Avalonia.Native/src/OSX/WindowImpl.mm

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

@ -300,11 +300,6 @@
- (void)mouseDown:(NSEvent *)event - (void)mouseDown:(NSEvent *)event
{ {
if(_parent != nullptr)
{
_parent->BringToFront();
}
_isLeftPressed = true; _isLeftPressed = true;
_lastMouseDownEvent = event; _lastMouseDownEvent = event;
[self mouseEvent:event withType:LeftButtonDown]; [self mouseEvent:event withType:LeftButtonDown];

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

@ -183,11 +183,6 @@
return self; return self;
} }
- (void)mouseDown:(NSEvent *)event
{
_parent->BringToFront();
}
- (BOOL)windowShouldClose:(NSWindow *)sender - (BOOL)windowShouldClose:(NSWindow *)sender
{ {
auto window = dynamic_cast<WindowImpl*>(_parent.getRaw()); auto window = dynamic_cast<WindowImpl*>(_parent.getRaw());
@ -435,8 +430,10 @@
_parent->BaseEvents->RawMouseEvent(NonClientLeftButtonDown, static_cast<uint32>([event timestamp] * 1000), AvnInputModifiersNone, point, delta); _parent->BaseEvents->RawMouseEvent(NonClientLeftButtonDown, static_cast<uint32>([event timestamp] * 1000), AvnInputModifiersNone, point, delta);
} }
_parent->BringToFront();
} }
break; break;
case NSEventTypeMouseEntered: case NSEventTypeMouseEntered:
{ {

9
native/Avalonia.Native/src/OSX/WindowImpl.mm

@ -126,7 +126,14 @@ HRESULT WindowImpl::SetParent(IAvnWindow *parent) {
void WindowImpl::BringToFront() void WindowImpl::BringToFront()
{ {
Activate(); if(IsDialog())
{
Activate();
}
else
{
[Window orderFront:nullptr];
}
for(auto iterator = _children.begin(); iterator != _children.end(); iterator++) for(auto iterator = _children.begin(); iterator != _children.end(); iterator++)
{ {

Loading…
Cancel
Save